一台机器有两个IDE,原来硬盘接在第一个IDE上,由于IDE接口问题,需要将硬盘移到第二个IDE的位置,但是移动后无法正常进入run level 3。因为更换了硬盘IDE,原来的分区位置发生变化,例如原来root分区是c0t2d0s0,现在变成了c0t0d0s0。但是仅仅更改/etc/vfstab文件还是不能够正常启动的,还需要重建设备树。
还有一种情况是用dd将旧硬盘对拷到新硬盘上,然后用新硬盘替换原来的旧硬盘,即使IDE口不变,但是因为硬盘的WWN(World Wide Number)不一样了,也会导致这样的情况,解决方法一样。详细步骤如下:
注意:硬盘安装前需要注意其跳线是否设置正确,还有光驱的跳线,否则可能会导致识别不到硬盘或者光驱。
1、硬盘安装完成后从光盘或者网络(
ok boot cdrom -s
或者
ok boot net -s
2、将root文件系统挂载到/mnt目录下
# mount /dev/dsk/c0t0d0s0 /mnt
3、修改vfstab文件,将其中的c0t2d0s?更新为c0t0d0s?,注意dsk和rdsk都要对应改
# cd /mnt/etc
# vi vfstab
#devicedevicemountFSfsckmountmount
#to mountto fsckpointtypepassat bootoptions
#
fd-/dev/fdfd-no-
/proc-/procproc-no-
/dev/dsk/c0t0d0s1--swap-no-
/dev/dsk/c0t0d0s0/dev/rdsk/c0t0d0s0/ufs1no-
/dev/dsk/c0t0d0s3/dev/rdsk/c0t0d0s3/varufs1no-
swap-/tmptmpfs-yes-
4、重新生成原/dev和/devices目录下的设备树
1)更新path_to_inst文件,与当前设备保持一致(在Solaris 8之前的系统中没有devfsadm这个命令,使用drvconfig来执行):
# devfsadm -r /mnt -p /mnt/etc/path_to_inst
2)将当前/devices目录下的设备同步到/mnt/devices目录下(如果/mnt/devices目录下已经存在正确的设备树,这一步可以不用执行。):
# cd /devices
# find . -print | cpio -pduVm /mnt/devices
..................................................
..................................................
..................................................
..................................................
...........
0 blocks
3)建立从正确的逻辑设备到物理设备的链接。这些做完之后查看/dev/dsk目录下的设备,会看到指向的物理地址已经发生了变更:
# disks -r /mnt
# ls -l /mnt/dev/dsk/c0t0d0s0
lrwxrwxrwx1rootroot38 Aug 5 00:02c0t0d0s0 -> ../../devices/pci@1f,0/ide@d/dad@0,0:a
看到一篇文档说如果使用Solaris 8的光盘引导或者从8的镜像进行网络引导的话,可以用下面这种方法来重建设备树(为什么特指8,不明白,暂时也未有条件来测试):
# mv /mnt/etc/path_to_inst /mnt/etc/orig.path_to_inst
# rm /mnt/dev/rdsk/c* ; rm /mnt/dev/dsk/c* ; rm /mnt/dev/rmt/*
# devfsadm -r /mnt -p /mnt/etc/path_to_inst
5、设置从新的硬盘设备引导
有两种方法,一个是在Solaris中执行如下命令,通过指定root分区的逻辑名称来设置OpenBoot PROM的boot-device,使用新的物理设备地址:
# luxadm set_boot_dev /dev/dsk/c0t0d0s0
Do you want to change boot-device to the new setting? (y/n)y
# eeprom | grep boot-device
boot-device=/pci@1f,0/ide@d/disk@0,0:a
还有就是到ok模式下进行boot-device的设置:
ok devalias
disk/pci@1f,0/ide@d/disk@2,0
...
cdrom/pci@1f,0/ide@d/cdrom@3,0:f
disk3/pci@1f,0/ide@d/disk@3,0
disk2/pci@1f,0/ide@d/disk@2,0
disk1/pci@1f,0/ide@d/disk@1,0
disk0/pci@1f,0/ide@d/disk@0,0
...
ok printenv boot-device
boot-device =disk net
ok setenv boot-device disk0 net
boot-device =disk0 net
设置完后便可在ok键入boot来从新的设备位置引导:
ok boot
首次启动时,可能会报这样的错误:
savecore: open("/dev/dsk/c0t2d0s1"): No such file or directory
dumpadm: cannot use /dev/dsk/c0t2d0s1 as dump device: No such file or directory
是因为dumpadm用的还是旧的分区位置作为Dump device的,不过这里不需要手动去修改,dumpadm会自动更新为新的位置,执行dumpadm命令或者查看/etc/dumpadm.conf,可以看到Dump device已更新:
# dumpadm
Dump content: kernel pages
Dump device: /dev/dsk/c0t0d0s1 (swap)
Savecore directory: /var/crash/cool06n
Savecore enabled: yes
168飞艇6种不亏钱的方法oot_dev /dev/dsk/c0t0d0s0Do you want to change boot-device to the new setting? (y/n)y
# eeprom | grep boot-device
boot-device=/pci@1f,0/ide@d/disk@0,0:a
还有就是到ok模式下进行boot-device的设置:
ok devalias
disk/pci@1f,0/ide@d/disk@2,0
...
cdrom/pci@1f,0/ide@d/cdrom@3,0:f
disk3/pci@1f,0/ide@d/disk@3,0
disk2/pci@1f,0/ide@d/disk@2,0
disk1/pci@1f,0/ide@d/disk@1,0
disk0/pci@1f,0/ide@d/disk@0,0
...
ok printenv boot-device
boot-device =disk net
ok setenv boot-device disk0 net
boot-device =disk0 net
设置完后便可在ok键入boot来从新的设备位置引导:
ok boot
首次启动时,可能会报这样的错误:
savecore: open("/dev/dsk/c0t2d0s1"): No such file or directory
dumpadm: cannot use /dev/dsk/c0t2d0s1 as dump device: No such file or directory
是因为dumpadm用的还是旧的分区位置作为Dump device的,不过这里不需要手动去修改,dumpadm会自动更新为新的位置,执行dumpadm命令或者查看/etc/dumpadm.conf,可以看到Dump device已更新:
# dumpadm
Dump content: kernel pages
Dump device: /dev/dsk/c0t0d0s1 (swap)
Savecore directory: /var/crash/cool06n
Savecore enabled: yes