原来的系统启动过程在initrd最后是进行根切换的。现在我不进行根切换,直接在虚拟的根文件系统中启动,运行在内存中。
所以我将.img文件解压,将里面的init代码第一行就执行exec /sbin/init。
然后按照开机流程一步一步的配。最后再打包成.img文件启动。
但是现在遇到了这样一个问题:
/dev/fd/5: 1 Syntax error: Bad fd number
init: rcS post-stop process (284) terminated with status 2
然后就死在这里了。
看提示应该是rcS.conf 的post-stop script发生了错误。
然后我看了一下rcS.conf的代码,内容形式大概是这样的:
start on upstart
stop on runlevel
task
console output
pre-start script
......
end script
exec /etc/rc.d/rc.sysinit
post-stop script
......
end script
然后我在pre-start script的最后面加上了一段代码:echo $"xxxxxxxxx",开机的时候显示正常。
我又在rc.sysinit的最后加了一段代码:echo $"xxxxxx",开机的时候也显示出来了,说明rc.sysinit已经执行完了。
然后我在post-stop script的最前面加了一句:echo $"xxxxxxxx",结果这个没有显示出来,显示的是刚刚上面提到的那个错误信息。说明没有执行到post-stop script就已经挂了。
本人比较菜,这个问题已经搞了好几天了还没有搞出来,求大神指点,感激不尽~