eygle.com   eygle.com
eygle.com eygle
eygle.com  
 

« 10g 10.2.0.4 PatchSet Windows版发布 | Blog首页 | 注意安全-北京地铁目击当众抢劫 »

ld.so.1库文件被破坏和删除导致异常的解决方法
modb.pro

今天一个同事在一台Solaris测试机上测试时,误将/usr/lib/ld.so.1文件给覆盖了。进而导致系统中命令无法使用:

bash-2.03# ls

Bus Error

ls: Cannot read /usr/lib/ld.so.1

Killed

# dmesg

dmesg: Cannot read /usr/lib/ld.so.1

Killed

 

不过还好,这时没有将当前的session断开,否则就只有通过光盘恢复了。下面是恢复命令:

/usr/sbin/static/cp /etc/lib/ld.so.1 /usr/lib/

 

使用/usr/sbin/static/cp静态命令将/etc/lib目录下的ld.so.1备份文件拷贝到ld.so.1目录下即可。

 

上面的情况是用户现有session没有断开的情况下的恢复情况,如果系统当前session断开后,用户是无法再登录系统的,这时只能重启系统(而且运行reboot命令也会提示错误,只能通过按钮重启),通过光盘启动的方法恢复了:

 

恢复的方法,用光盘或者其他方式启动安装界面,在界面上直接启动一个终端程序。

1 当前的usr/lib目录下是光盘中mount的目录。可以做为恢复系统中损坏的ld.so.1文件用。

2 接下来要做的是找到原来系统中usr/lib目录,一般这个设备是在/dev/dskc1t*的设备文件,一般不会是c1t0d0s0的。如果以前有各个目录的设备名记录可以直接mount,不然只有一个一个来了。有可能在mount的时候会提示需要fsckfsck命令是:fsck -F ufs /dev/rdsk/c1t0d0s0(设备名称,根据实际情况来改)

mount命令:mount /dev/rdsk/c1t0d0s0 /mnt   (设备名称也是要一个一个改的哦)

mount成功后需要到mnt目录下查看,是不是有lib目录,因为我们找的就是这个。

3 找到这个设备后,就先ls -l 看一下,是不是没有运行权,没有当然加一下喽。方法:chmod +x  ld.so.1  

4 这里要做的是先umount后再重新启动机器。

Umount命令: umount /mnt 

 

Fsck也可以用在发生系统不能启动的情况下,可以一个一个修复设备,一般的小问题都可以解决。

 

 

下面介绍一下Solaris动态链接库:

 

         大家都知道,在WINDOWS系统中有很多的动态链接库(.DLL为后缀的文件,DLLDynamic Link Library)。这种动态链接库,和静态函数库不同,它里面的函数并不是执行程序本身的一部分,而是根据执行程序需要按需装入,同时其执行代码可在多个执行程序间共享,节省了空间,提高了效率,具备很高的灵活性,得到越来越多程序员和用户的青睐。

 

         Solaris系 统里面有些库文件,当编译的时候,如果把库文件也编译到文件中,那文件本身就可以执行,但这样的缺点是生成的文件十分大。所以很多情况下使用动态连接库, 就是编译出的文件不包含库,而只包含到库的指针,这样在运行的时候会到指定的地方调用这个库,这样就减少了文件的大小。Solaris包含的实时连接器ld.so.1,就是动态对象的运行阶段链接程序。许多系统命令都要通过该文件实时将相关东西动态装载进内核,如果用truss来跟踪某个命令来执行的话,都会发现绝大多数命令都要调用到ld.so.1库文件。

 

         如果ld.so.1文件丢失将造成系统大多数命令都不能执行,为了防止这种情况,Solaris将一些重要的库文件备份在"/etc/lib"目录下,并在 /usr/sbin/static下保存了五个常用和关键系统的命令,这些命令不受该库文件的影响(也就是说即使该库文件被损坏,这些命令依然可以运行),此时如果系统还没有宕机或者没有reboot,可以通过以下的方法来恢复:

 

# /usr/sbin/static/cp /etc/lib/ld.so.1 /usr/lib/

 

/usr/sbin/static目录下的这个五个命令为:

cp ln mv rcp tar

 

这几个命令都是静态链连接的命令文件,不受库文件的影响:

# file *

  cp: ELF 32-bit MSB executable SPARC Version 1, statically linked, stripped

  ln: ELF 32-bit MSB executable SPARC Version 1, statically linked, stripped

  mv: ELF 32-bit MSB executable SPARC Version 1, statically linked, stripped

  rcp: ELF 32-bit MSB executable SPARC Version 1, statically linked, stripped

  tar: ELF 32-bit MSB executable SPARC Version 1, statically linked, stripped

 

--The End--

 


历史上的今天...
    >> 2012-03-20文章:
    >> 2009-03-20文章:
    >> 2007-03-20文章:
    >> 2006-03-20文章:
           Google也搞笑
    >> 2005-03-20文章:
           Itpub Oracle10g培训

By eygle on 2008-03-20 22:51 | Comments (0) | FAQ | 2699 |


CopyRight © 2004~2020 云和恩墨,成就未来!, All rights reserved.
数据恢复·紧急救援·性能优化 云和恩墨 24x7 热线电话:400-600-8755 业务咨询:010-59007017-7040 or 7037 业务合作: marketing@enmotech.com