I think that the root filesystem was corrupted by an unclean shutdown and important files such as /sbin/init
, /bin/sh
and /etc/rc.d/rc.sysinit
were damaged somehow. I am not completely sure about it, though.
I suggest you to reinstall bash
, SysVinit
and initscripts
packages using the image CD. Assuming that CDROM contents will be available through /dev/hdb
device node in rescue mode, the reinstallation process can be performed by using the following steps:
# mkdir -p /mnt/cdrom
# mount /dev/hdb /mnt/cdrom
# rpm --root /mnt/sysimage -ivh --replacepkgs \
/mnt/CentOS/{bash,SysVinit,initscripts}-*.rpm
Alternatively, by inspecting the file /sbin/init
, /etc/inittab
and files under the directory /etc/rc.d
, you could figure out why /sbin/init
is calling /bin/sh
and, afterwards, calling a binary named ro
. This does not look normal.
PS: /bin/sh
should be a symbolic link pointing to /bin/bash
and not a regular file.
EDIT: once there is a confirmation that /sbin/init
executable does not exist in filesystem, I am sure that such absence is the cause of the problem. CentOS booting process is probably executing /bin/sh
as fallback and passing ro root=/dev/VolGroup00/LogVol00 rhgb quiet
as command line arguments, thus leading /bin/sh
to look for a script file named ro
. Because it does not exist, /bin/sh
throws the error message ro: no such file or directory
and aborts.
I believe that reinstallation of the SysVinit
package (which provides the /sbin/init
executable) will fix the booting issue.