在 Slackware 10.1 中,启动期间 rc.S 和 rc.M 之间发生了什么?尝试在此框上启动内核 3.x(尝试过 3.4 和 3.10),它在 rc.S 完成执行后立即挂起。2.6 内核启动正常。
rc.M 无法运行,因为控制台上从未显示“进入多用户模式”。
#!/bin/sh
#
# rc.M This file is executed by init(8) when the system is being
# initialized for one of the "multi user" run levels (i.e.
# levels 1 through 6). It usually does mounting of file
# systems et al.
#
# Version: @(#)/etc/rc.d/rc.M 2.23 Wed Feb 26 19:20:58 PST 2003
#
# Author: Fred N. van Kempen, <[email protected]>
# Heavily modified by Patrick Volkerding <[email protected]>
#
# Tell the viewers what's going to happen.
echo "Going multiuser..."
使用 Slackware 默认的 inittab(删除了注释):
id:3:initdefault:
si:S:sysinit:/etc/rc.d/rc.S
su:1S:wait:/etc/rc.d/rc.K
rc:2345:wait:/etc/rc.d/rc.M
ca::ctrlaltdel:/sbin/shutdown -t5 -r now
l0:0:wait:/etc/rc.d/rc.0
l6:6:wait:/etc/rc.d/rc.6
pf::powerfail:/sbin/genpowerfail start
pg::powerokwait:/sbin/genpowerfail stop
c1:1235:respawn:/sbin/agetty 38400 tty1 linux
c2:1235:respawn:/sbin/agetty 38400 tty2 linux
c3:1235:respawn:/sbin/agetty 38400 tty3 linux
c4:1235:respawn:/sbin/agetty 38400 tty4 linux
c5:1235:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux
x1:4:wait:/etc/rc.d/rc.4
此后它立即挂起:
Using /etc/random-seed to initialize /dev/urandom.
我已经注释掉了 rc.S 中的那段代码,但它仍然挂起,所以我猜测问题出在其他地方,但我不知道 rc.S 之后发生了什么。
答案1
在 rc.S 之后,如果运行级别为 2、3、4 或 5,init 将运行 rc.M;如果运行级别为 1,init 将运行 rc.K……您可以尝试在单一级别(即运行级别 1)下运行,看看它是否能启动
slackware 10.1 比较旧,可能还不能运行 3.0 内核...但你可以尝试更好地调试它,它可能缺少内核中的一些功能或需要更新的某些实用程序
编辑 /etc/rc.d/rc.S 并在第二行添加
set -x
这将使脚本变得详细并告诉您它正在运行什么。如果它一直运行到最后,请尝试将其添加到其他脚本中。之后,您将需要阅读输出,并可能在失败的部分之前添加一些测试代码和/或将其注释掉(取决于失败的内容)