Chinaunix首页 | 论坛 | 博客
  • 博客访问: 171519
  • 博文数量: 33
  • 博客积分: 2037
  • 博客等级: 大尉
  • 技术积分: 365
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-24 20:29
文章分类
文章存档

2011年(1)

2010年(2)

2009年(21)

2008年(9)

我的朋友

分类:

2009-08-07 17:32:23

    一台机器有两个IDE,原来硬盘接在第一个IDE上,由于IDE接口问题,需要将硬盘移到第二个IDE的位置,但是移动后无法正常进入run level 3。因为更换了硬盘IDE,原来的分区位置发生变化,例如原来root分区是c0t2d0s0,现在变成了c0t0d0s0。但是仅仅更改/etc/vfstab文件还是不能够正常启动的,还需要重建设备树。

    还有一种情况是用dd将旧硬盘对拷到新硬盘上,然后用新硬盘替换原来的旧硬盘,即使IDE口不变,但是因为硬盘的WWNWorld Wide Number)不一样了,也会导致这样的情况,解决方法一样。详细步骤如下:

 

注意:硬盘安装前需要注意其跳线是否设置正确,还有光驱的跳线,否则可能会导致识别不到硬盘或者光驱。

 

1硬盘安装完成后从光盘或者网络(JumpStart)引导,进入单用户模式

ok boot cdrom -s

    或者

ok boot net -s

 

2root文件系统挂载到/mnt目录下

# mount /dev/dsk/c0t0d0s0 /mnt

 

3修改vfstab文件,将其中的c0t2d0s?更新为c0t0d0s?,注意dskrdsk都要对应改

# cd /mnt/etc

# vi vfstab

#device  device      mount   FS  fsck    mount       mount

#to mount    to fsck point   type    pass    at boot options

#

fd       -   /dev/fd fd  -   no      -

/proc        -   /proc       proc    -   no      -

/dev/dsk/c0t0d0s1    -   -   swap    -   no      -

/dev/dsk/c0t0d0s0    /dev/rdsk/c0t0d0s0  /   ufs 1   no  -

/dev/dsk/c0t0d0s3    /dev/rdsk/c0t0d0s3  /var    ufs 1   no  -

swap     -   /tmp        tmpfs   -   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

lrwxrwxrwx   1   root    root        38 Aug 5 00:02  c0t0d0s0 -> ../../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 PROMboot-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

 

阅读(9199) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

珍珍zz2015-05-07 14:53:26

建议使用傲梅轻松备份专业版,里面有个克隆功能,可以试试。。。

chinaunix网友2010-09-27 11:08:36

总结的真好,真详细:)

skybin0908042009-08-11 11:26:28

能不能只是把启动盘设置为你的新槽哪里就行了;setenv boot-device 或 eeprom bootdevice