ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ld.so.1库文件被破坏和删除导致系统不能正常使用的解决

ld.so.1库文件被破坏和删除导致系统不能正常使用的解决

原创 Linux操作系统 作者:Dodd 时间:2008-03-21 11:23:07 0 删除 编辑

今天一个同事在一台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--

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7220098/viewspace-214885/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-22

  • 博文量
    46
  • 访问量
    159326