服务器无法启动 /bin/sh 没有此文件或目录

服务器无法启动 /bin/sh 没有此文件或目录

我们在 centos 5.8 中配置了 ldap 服务器。昨天服务器运行正常,但今天我们重新启动服务器时,它无法启动。出现以下错误:

/bin/bash:ro:没有此文件或目录内核恐慌-不同步:尝试杀死init

我们尝试使用救援模式进行恢复,但仍然没有成功。

chroot /mnt/sysimage

/bin/sh文件在目录中可用但仍然出现相同的错误。


这是显示该问题的控制台的屏幕截图。

在此处输入图片描述

/boot/grub/menu.lst这是文件的内容:

default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-308.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-308.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        initrd /initrd-2.6.18-308.el5.img

答案1

我认为根文件系统因非正常关机而损坏,并且重要文件如/sbin/init/bin/sh/etc/rc.d/rc.sysinit某种方式损坏。但我对此并不完全确定。

我建议你重新安装bashSysVinit然后initscripts使用镜像 CD/dev/hdb软件包。假设 CDROM 内容在救援模式下可通过设备节点获得,则可以使用以下步骤执行重新安装过程:

# mkdir -p /mnt/cdrom
# mount /dev/hdb /mnt/cdrom
# rpm --root /mnt/sysimage -ivh --replacepkgs \
    /mnt/CentOS/{bash,SysVinit,initscripts}-*.rpm

或者,通过检查文件/sbin/init/etc/inittab目录下的文件/etc/rc.d,您可以弄清楚为什么/sbin/init正在调用/bin/sh,然后调用名为 的二进制文件ro。这看起来不正常。

附言:/bin/sh应该是指向的符号链接/bin/bash而不是常规文件。


编辑:一旦确认/sbin/init文件系统中不存在可执行文件,我确信这种缺失是问题的原因。 CentOS 启动过程可能/bin/sh作为后备执行并ro root=/dev/VolGroup00/LogVol00 rhgb quiet作为命令行参数传递,从而导致/bin/sh查找名为ro。 由于它不存在,因此/bin/sh抛出错误消息ro: no such file or directory并中止。

我相信重新安装SysVinit软件包(提供/sbin/init可执行文件)将解决启动问题。

相关内容