我们在 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
某种方式损坏。但我对此并不完全确定。
我建议你重新安装bash
,SysVinit
然后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
可执行文件)将解决启动问题。