关于“安装gentoo,重启后,启动自检失败”的故障的原因分析及解决方案

故障背景:

博主闲来无事,就把实验室的一台HP pro 2080台式机给装了gentoo,一来是作为项目的服务器使用,二来是熟悉下,好给自己的本本也来一个。

下面说下我的大致情况吧:

HP pro2080商用机标配,2G内存,除了自己加了一个IDE的cd rom外,没有任何扩展。

系统装的是gentoo 13.0

kernel:3.10.7

使用手动配置编译内核


硬盘分区情况

       /dev/sda1 /boot ext2 200M

       /dev/sda2 /     xfs  50G

       /dev/sda5 /etc  reiserfs 20G

       /dev/sda6 /usr  xfs  50G

       /dev/sda7 /var  xfs  100G

       /dev/sda8 /home xfs  100G

故障描述:

安装过程一路无事,等到系统重新引导启动的时候,出现

INIT:version 2.88 booting
INIT:no inittab file found
Enter runlevel:

如图(图不是我的,但当时没有留图,只好借下):

这时,无论输入1-6哪个运行级别,系统都会出现:

INIT:no more processes left in this runlevel

然后就卡住了。

解决过程:

   根据提示,我使用gentoo的liveCD chroot进系统,查看了/etc/inittab文件,并确认文件存在且无误,然后重新引导后,还是原来的情况。

   没办法,系统也没什么其他的提示,系统没init,所以也没有日志;只好向度娘和谷哥求助咯。

在搜索框中打入系统的提示信息,果然,出来了许多网页。看故障描述,和我的很像,可惜刚开始的几个都没有说明解决方案。。。。。博主继续。。。。

   又找到一篇csdn上的博文,说是看下inittab文件中是否缺失了某2行内容,博主如获至宝,赶紧用livecd启动,结果发现自己的inittab文件中是不存在那种情况的,也就是说,博主的inittab文件是对的。。。。失望了。。。。只好继续咯

   接着,仍然是csdn(csdn还是很不错的^_^),有篇博文说是重新安装sysvinit、openrc、baselayer后就解决了,并给了一个gentoo bug的网页链接。博主保持谨慎的态度,并没有马上去实验了,因为开机关机也很麻烦、很慢,先看了下gentoo bug的网页,表示有点似懂非懂(原谅我的英文水平吧。。。毕竟才四级)。然后又在网上看,发现另一个gentoo bug页面,是相似的问题,下面有很多网友的回复和建议,这样,博主就抱着这么多办法去慢慢试。

   首先是重新安装了sysvinit,inittab文件被新文件覆盖后,重启,问题依旧,然后在grub界面更改grub参数,在启动项后面添加 3,结果一样,加S,结果提示 打不开passwd database文件,博主好桑心啊。。。。。。继续。。。。

   在启动项中添加 init=/bin/bash后启动出现一个console,然后。。。就没有然后了。。。。

   经过网上这么多搜索未果后,博主思考了下,是不是内核配置的原因(因为在内核配置的时候,ssh断了一次,所以重新配的出了点问题,导致我对具体配了点什么没有印象)???然后,livecd启动->chroot->重新配置内核->编译安装,这次没出任何问题,然后重新引导,结果问题依然没有解决。。。。

   此时,无奈啊,时间已经是半夜0点15分了,只好暂时作罢,回去休息鸟。。。。


  第二天,因为要做网络检测,所以,中午才过来实验室这边,趁着这时间,博主又在思考那个问题了,不过还是没想出原因来。。。。所以,做了一个愚蠢至极的做法:备份了内核、etc中的一些配置文件后,格式化了磁盘,重新安装。。。。结果,辛辛苦苦结束后,结果还是没变。。。这时候博主想哭的心都木有了,昨晚加上今天中午都4个小时了,这个问题都解决不了。。。。太诡异了。


   然后发了会呆,和小伙伴打了会屁。忽然,博主脑子灵光一闪~~~系统说inittab文件缺失,但我的inittab文件不仅还在而且完好,那是不是因为系统访问不到它呢?   那么是因为etc的文件系统是reiserfs么?可是文件系统应该不会吧。。。。是因为。。。没挂载??!!

   想到这,博主赶紧livecd启动,把 etc分区中的etc文件拷到了 / 分区的etc目录下,取消etc分区的挂载,然后重启。。。。

   5秒后,系统顺利进入login 555~~~~~~~

解决方法:

   没错,就是因为/etc单独划分了分区,办法是不为etc单独设置挂载点。


思考:

   linux的启动顺序是什么呢?启动时,先挂载/,然后引导内核,然后init。。。这个过程没有挂载fstab中的磁盘么。。。所以Etc分区还未挂载? 看来要补下linux启动的知识了。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章