Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92658117
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-03-28 13:09:21

作者:CNL   
如果损坏的是ld.so.1, libc.so.1等系统内核的动态库, 
那么你会发现常用的如ls,cd,mv,cp之类的命令马上都不能用了, 
如果你有动态库的备份,此时注意千万不要重起机器,否则系统恢复起来就困难多了! 
无论是OpenServer还是Unixware系统都提供有一套静态命令, 
一般在/sbin目录或/usr/sbin目录下,这些命令平常没有用, 
但如果你的系统出了问题,常用的命令无法使用,它们的用途就来了, 
比如cp不能用,但你此时还可用/sbin下的cp 
# /sbin/cp  你备份的ld.so.1 /usr/lib/ 
然后再做ls操作确认是否恢复正常 

如果你的机器重新启动了或着没有备份,那么你首先要尝试从系统安装光盘上恢复 
1 对于unixware: 
需要在开机logo画面敲空格进入boot>后插入安装光盘并输入 
boot cdrom -s进入维护模式,如果进入不了那么你只能使用后面的其他办法了 
挂上硬盘根文件系统 
# mount /dev/dsk/c0t0d0s0 /mnt 
如果你的根不是c0t0d0s0而且自己又忘了设备名,你只能自己一个个名子换着测了 
如果能挂上,那么即可用cp命令恢复,如 
# cp 你备份的libc.so.1 /mnt/usr/lib/ 
恢复完毕后还要确认一下恢复的动态库文件的属性是否正确, 
和正常机器不一致的地方自己用chmod/chown修改一下 
然后卸载光盘并取出光盘重起机器: 
# umount /mnt 
# init 6 
重启动机器 

2 对于openerver: 
需要先插入安装光盘再引导,在boot:提示后敲tools进入维护模式 
然后挂上硬盘root文件系统 
# mount /dev/hd0root /mnt 
如果能挂上,那么即可用cp命令恢复,如 
# cp 你备份的libc.so.1 /mnt/usr/lib/ 
恢复完毕后还要确认一下恢复的动态库文件的属性是否正确, 
和正常机器不一致的地方自己用chmod/chown修改一下 
然后卸载光盘并取出光盘重起机器: 
# umount /mnt 
# init 6 
重启动机器 

有的时候mount可能提示你做fsck,那么使用 
# fsck -ofull 你的设备名 
后再做mount操作 

其他办法: 
如果你系统打过补丁(系统动态库已经被补丁更新过,和安装光盘已不同) 
你只能从一台完全一样的机器上做一套紧急引导软盘引导系统了, 
如果使用紧急引导盘可参考本坛内的有关精华贴,这里就略过了。 
以下以unixware为例详细说明: (因为它最复杂) 

1. 应急恢复盘法 (必须在同配置机器上做一套应急软盘,尤其是SCSI硬盘的系统) 
应急恢复盘由两张软盘组成。先后插入两张应急恢复盘, 
在出现提示“The hard disk is sane, Press ENTER to continue”时, 
按回车键,系统显示如下菜单: 
Emergency Recovery Menu 
Mount File System 
Umount File System 
Access UnixWare Shell 
Restore Disk(s) 
Reboot 
选择Mount File System后,系统将硬盘的根文件系统装载到/mnt目录下。 
再选择Access UnixWare Shell,系统出现#提示符,进入系统成功, 
这样再用cp命令恢复损失的动态库,如 
# cp 你备份的libc.so.1 /mnt/usr/lib/ 
恢复完毕后还要确认一下恢复的动态库文件的属性是否正确, 
和正常机器不一致的地方自己用chmod/chown修改一下 
然后卸载光盘并取出光盘重起机器: 
# umount /mnt 
# init 6 
重启动机器 

2. 使用boot盘法 
首先用第一张引导软盘引导系统 
(对支持光驱引导的机器也可以从安装光盘引导系统), 
并根据提示插入第二张软盘。然后按以下步骤执行: 
● 按F8推迟许可软件,即不输入license号。 
● 加载UnixWare HBA 盘。 
● 如果有必要进入DCU进行设置(或按F10继续)。 
● 当出现“System node name”提示时, 
插入安装光盘(若从光盘引导则不必插入光盘)。 
● 按Ctrl+Alt+Esc组合键切换到虚屏VT0(按Ctrl+Alt+F1组合键可切换回系统安装界面) 
● 在VT0中,执行下面的命令安装CD-ROM: 
# mount -F cdfs -r /dev/cdrom1 /cd-rom 
● 注册vxfs文件系统的模数(UnixWare 7 根文件系统的类型通常为vxfs): 
# modreg 4 vxfs 
● 加载vxfs文件系统的模数: 
# modadmin -l /cd-rom/.extra.d/etc/conf/mod.d/vxfs 
如果系统返回以下信息,表示加载成功: 
UX:modadmin:INFO:module /cd-rom/ 
.extra.d/etc/conf/mod.d/vxfs loaded,ID=1 
● 检查硬盘的根文件系统。 
假设系统硬盘使用的控制器为0,bus为 0,ID为 0,LUN为0,root的分片为1: 
# /cd-rom/.extra.d/etc/fs/vxfs/fsck -F vxfs /dev/dsk/c0b0t0d0s1 
● 将硬盘的根文件系统安装到/mnt目录下: 
# mount -F vxfs /dev/dsk/c0b0t0d0s1 /mnt 
● 为使命令正确运行,重新设定搜索路径: 
# PATH=:/usr/bin:/sbin:/usr/sbin; export PATH 
这样再用cp命令恢复损失的动态库,如 
# cp 你备份的libc.so.1 /mnt/usr/lib/ 
恢复完毕后还要确认一下恢复的动态库文件的属性是否正确, 
和正常机器不一致的地方自己用chmod/chown修改一下 
然后卸载光盘并取出光盘重起机器: 
# umount /mnt 
# umount /cd-rom 
# init 6 
重启动机器 

3. 第二硬盘法 
● 将发生故障的系统硬盘取下,硬盘跳线调整为Slave,挂到另一个UnixWare 7系统中。 
● 检查第二硬盘的根文件系统。 
假设系统硬盘使用的控制器为0,bus为 0,ID为 1,LUN为0,root的分片为1: 
# fsck -F vxfs /dev/dsk/c0b0t1d0s1 
● 将第二硬盘的根文件系统安装到/mnt下: 
# mount -F vxfs /dev/dsk/c0b0t1d0s1 /mnt 
这样再用cp命令恢复损失的动态库,如 
# cp 你备份的libc.so.1 /mnt/usr/lib/ 
恢复完毕后还要确认一下恢复的动态库文件的属性是否正确, 
和正常机器不一致的地方自己用chmod/chown修改一下 
然后卸载光盘并取出光盘重起机器: 
# umount /mnt 
# init 0 
关闭机器取出恢复过的硬盘进行测试
阅读(373) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~