问题描述
一个同事在一台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/dsk下c1t*的设备文件,一般不会是c1t0d0s0的。如果以前有各个目录的设备名记录可以直接mount,不然只有一个一个来了。有可能在mount的时候会提示需要fsck,fsck命令是: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也可以用在发生系统不能启动的情况下,可以一个一个修复设备,一般的小问题都可以解决。