• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

SCO系统动态库损失或缺失的应急办法

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 19次 | 进入软件测试论坛讨论

领测软件测试网
这几天看了两个帖子都是动态库损坏或缺失导致系统崩溃的帖子,
总结一下,如果以后碰到这种情况可做参考。

如果损坏的是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
关闭机器取出恢复过的硬盘进行测试

 xy-coordinate 回复于:2005-08-17 15:38:25
精彩!
顶~~~~

 UnKnow365 回复于:2005-08-18 10:33:36
收藏!谢谢!

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网