文件libc.a是AIX系统中重要的核心库文件,如果被意外删除或改名,系统的各种命令都将无法正常运行。本文介绍了在/usr/lib中的链接或/usr/ccs/lib中文件被意外删除的情况下,如何来恢复libc.a文件;另外还介绍了当libc.a文件被改名后,将其更改回原名的方法。本文档适用AIX版本4和5。 恢复/usr/lib中被删除的符号链接 恢复被删除的系统库文件/usr/ccs/lib/libc.a 恢复被改名的/usr/ccs/lib/libc.a |
恢复/usr/lib中被删除的符号链接如果从/usr/lib/libc.a到/usr/ccs/lib/libc.a的符号链接已经被删除了,但是系统中还存在打开的shell,显示命令提示符,可执行操作,则下面的步骤可用来恢复该符号链接: 1.给系统环境变量 LIBPATH 赋值,将其指向/usr/ccs/lib目录,即执行: LIBPATH=/usr/ccs/lib:/usr/lib export LIBPATH 2.这时你将可以重新执行系统命令。运行下面的命令来重置/usr/lib/libc.a到/usr/ccs/lib/libc.a,/lib到/usr/lib的链接: ln -s /usr/ccs/lib/libc.a /usr/lib/libc.a ln -s /usr/lib /lib 3.重置系统环境变量 LIBPATH,现在,系统命令已经可以象以前一样运行了。 unset LIBPATH 另外,如果当前没有一个可用的shell环境来执行这些命令,请遵循下一节中给出的指令来修复。 -------------------------------------------------------------- 恢复被删除的系统库文件/usr/ccs/lib/libc.a 要想恢复一个已经被删除的/usr/ccs/lib/libc.a文件,我们必须从外部引导设备(如光盘、磁带)来启动系统,因为在机器当前的状况下,任何命令都无法运行。 我们需要用系统安装光盘或系统的mksysb备份磁带(该磁带不可以是自动安装模式的)来引导系统,还要注意的是,这里用到的光盘和磁带应该是和当前操作系统统一版本的。另外,如果在引导系统的过程中有任何问题,请参阅系统安装手册中“启动至维护模式”的相关内容来解决。从外设启动机器至维护模式后,访问rootvg但不加载文件系统。接着我们就可以从系统最近的备份磁带中重新得到libc.a文件,详细步骤如下: 1.依次执行下列命令: mount /dev/hd4 /mnt mount /dev/hd2 /mnt/usr cd /mnt 2.如果只是需要修复从/usr/lib/libc.a到/usr/ccs/lib/libc.a的符号链接,执行下面的命令然后跳至步骤5。 ln -s /usr/ccs/lib/libc.a /mnt/usr/lib/libc.a 3.把mksysb磁带放入磁带机并执行下面的操作。下列命令中的‘X’代表该磁带机在系统中的设备顺序号。 首先你需要设置磁带机的block size。在默认情况下,系统维护模式会将block size设为512。 a. tctl -f /dev/rmtX rewind b. tctl -f /dev/rmtX.1 fsf 1 c. restbyname -xvqf /dev/rmtX.Y ./tapeblksz d. cat tapeblksz e.如果上一条命令输出的值不等于512,请执行: /etc/methods /chggen -l rmtX -a block_size=[步骤d中输出的数值] f. tctl -f /dev/rmtX rewind g. tctl -f /dev/rmtX.1 fsf 3 4.现在我们可以使用‘restbyname’命令来恢复丢失的文件了。同样的,下面命令中的‘X’代表该磁带机在系统中的设备顺序号。 a. tctl -f /dev/rmtX rewind b. tctl -f /dev/rmtX.1 fsf 3 c.恢复文件/usr/ccs/lib/libc.a,执行 restbyname -xvqf/dev/rmtX.1 ./usr/ccs/lib/libc.a d.恢复目录/usr/ccs/lib,执行 restbyname -xvqf/dev/rmtX.1 ./usr/ccs/lib e.恢复目录/usr/ccs/bin,执行 restbyname -xvqf/dev/rmtX.1 ./usr/ccs/bin 5.将改动同步至磁盘: cd /mnt/usr/sbin ./sync;./sync;./sync 6.卸载/usr文件系统: cd / umount /dev/hd2 如果命令失败,重起系统到正常模式。 7.卸载根(/)文件系统: umount /dev/hd4 如果命令失败,重起系统到正常模式 8.重起系统到正常模式。对于微通道的机型,要先将钥匙扳到‘Normal’位置,再重新给机器加电。 ----------------------------------------------------------- /usr/ccs/lib/libc.a文件被改名后,如何将其更改回原名 在下面的例子中,我们假设libc.a 被改名为libc.a.orig。 要想将libc.a.orig更改回原名libc.a,我们仍必须从外部引导设备(如光盘、磁带)来启动系统,因为在机器当前的状况下,任何命令都还是无法运行。 我们还是用和操作系统版本一致安装光盘或系统的mksysb备份磁带(该磁带不可以是自动安装模式的)来引导系统,启动机器至维护模式,然后在不加载文件系统的情况下访问rootvg。接着,依次执行下列命令: mount /dev/hd4 /mnt mount /dev/hd2 /mnt/usr cd /mnt/usr/ccs/lib mv libc.a.orig libc.a cd /mnt/usr/sbin ./sync;./sync;./sync cd / unmount /dev/hd2 unmount /dev/hd4 exit ‘exit’命令会退出当前shell环境并自动加载rootvg中的文件系统。 最后,重起系统: shutdown -Fr |