Recently in 系统 Category

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

 

About this Archive

This page is a archive of recent entries in the 系统 category.

Oracle DBA is the next category.

Find recent content on the main index or look in the archives to find all content.

系统: Monthly Archives

Powered by Movable Type 4.0