LinuxEye - Linux系统教程

LinuxEye - Linux系统教程

当前位置: 主页 > Linux教程 >

Linux启动极端排错实例

时间:2012-06-30 22:16来源:未知 编辑:admin 点击:
系统因为各种原因启动不了了,此时很多朋友想到的第一个办法就是重装系统,但是这如果是在大型企业中是绝对不允许的。所以我们为了适应时代潮流,还是选择排错这条路吧。重启
      系统因为各种原因启动不了了,此时很多朋友想到的第一个办法就是重装系统,但是这如果是在大型企业中是绝对不允许的。所以我们为了适应时代潮流,还是选择排错这条路吧。重启电脑后,在bios中选择以cd-rom模式进入,如图(1),(当然你如果建立了网络系统,也可以从网络启动,并且笔者觉得网络启动比cd-rom的效率还要高些)
(1

放入光碟后,会出现如图(2)的界面,此时不要习惯性的输入回车了(毕竟这样就没有技术含量了),输入linux resuce(修复模式),然后再按回车。

(2
 
系统会自动加载光驱(或网络)的内容,然后出现以下图(3)的画面,这里是要你选择使用哪种语言,笔者习惯使用英文版本的linux,如果你不大习惯可以用键盘上的上下箭头来选择合适自己的语言种类。然后用tab键将光标移动到ok按钮上,敲回车。

(3
 
来到图 (4)的画面,这里是要你选择键盘的种类,一般情况下,我们使用的是美式键盘,如果你的键盘是其他类型的,请根据自己的需要选择。用tab键盘选择ok可以进入下一步操作,如果前面语言的设置有误,可以选择back回到上一步。这里我们选择ok。

图 (4)
出现了如图 (5)的画面,这里是问我们需不需要网络环境,由于我们使用的是光盘修复所以可以选择no,当然如果你使用的是网络修复,当然要将ip地址和nfs服务器的地址填写好了。我们这里选择no进入下一步。

(5
好了复杂的东西来了,图 (6)显示了一大串的英文,意思是说:修复环境会尝试将你的linux系统挂载到/mnt/sysimage目录下,然后你就可以对你的系统进行问题的修复,如果你想这样,选择continue,如果你想在只读模式下这样选择read-only,如果你因为某些原因不想这样,选择skip直接进入命令行。在此我们当然选择continue继续。


(6

来到图 (7),如果是一般的小问题,你看到的应该是图 (8)的提示,但是在此由于我们模拟的是极端的错误,所以出现图(7)的提示,意思是说无法将你的系统挂载到/mnt/sysimage这个目录下。而图 (8)的意思是说已经将系统挂载到/mnt/sysimage上。这里我们不管它会出现那种提示,先ok了再说。

(7


(8
来到图 (9)的界面,

(9
使用chroot /mnt/sysimage命令设法将系统挂载到/mnt/sysimage下,如图(10),发现有错误信息,这与刚才图(7)的提示相吻合,这是因为根本就找不到系统的根分区。如果能够找到,即出现图(8)的提示,是可以使用chroot命令的。

图(10

此时我们先如图(11),使用mkdir test建立一个test目录,然后使用e2label /dev/sda1, e2label /dev/sda2······一个个试着找出根(/)所对应的分区,在图中可以看到/dev/sda3所对应的分区为根分区(/)
(11

接下来,我们将/dev/sda3所对应的根(/)分区使用mount命令挂载到刚刚建立的test目录下。如图(12)所示,命令为mount /dev/sda3 test。此时我们实际上是将根分区挂到了test目录下。cd test进入 test目录下,然后再cd etc进入etc目录下,用ls命令会发现所有以前的配置文件都在这里了。
(12

首先我们用vi编辑器来看看fstab这个文件吧输入vi fstab,如图(13),一般情况下分区找不到都是这里出了问题,打开一看吓了一跳,完全没有根分区的内容,并且前面用e2label查看的/dev/sda1是对应的/boot,而这里的LABEL=/boot (即/dev/sda1)对应的却是/boot1。错得太多了啊,
(13

将fstab里的内容修改为正确的形式如图(14)。加入了根分区的信息/dev/sda3  /  ext3  defaults  1  2,并且将boot分区的信息也改成正确的。查看无误后保存编辑结果。此时先别慌重新启动电脑,再去查看一下inittab文件看看
(14

同样用vi打开inittab,如图(15),发现在system initialization中运行级别4和5调用了相同的文件目录rc 5,这样显然是不行的,所以将其改为正确的,如图(16)
(15
 

(16

基本上做到这一步前期工作就做完了,如果你的电脑不是像我这样比较变态的错误,应该可以正常启动了,但是由于我们这里是教学,所以肯定不会那么简单。重新启动之后,还是进入不了系统,无奈之下只好再次进入修复模式,这次发现到最后出现了图(8)的信息,并且进入以后使用chroot /mnt/sysimage并没有显示任何报错信息,也就是说已经可以将系统挂到/mnt/sysimage下了。如图(17)
(17

那么出现问题的地方很大程度上就是在引导这一块了,使用cd /boot查看boot目录下的内容,好象并没有缺少什么,再看一下/boot/grub/目录下,发现少了grub.conf这个文件,如图(18)。在这里其实我们可以直接用vi编辑器写入grub.conf的内容就可以正常启动了。但是并不是每个人都能看出少了什么东西,为了安全起见,我们干脆把boot目录下的全部文件都删除掉,然后重新生成。(如果这里你能够准确的判断只有grub.conf的问题,那么你就可以直接看文章最后的编辑grub.conf文件了)
(18

如图19,进入boot目录下,使用rm –rf * 命令,将boot目录中所有文件删除,查看目录中没有任何文件时,使用exit退出/mnt/sysimage模式。(注意,我们刚才使用了chroot /mnt/sysimage进入了挂载模式,此时只需要输入一次exit就可以退出chroot挂载模式,如果连续输入两个exit,则系统会自动重新启动。)
(19
 
由于我们的内核是在cdrom中的,所以在退出了chroot模式之后,使用mkdir cdrom建立一个cdrom的挂载点,并使用mount /dev/hdc cdrom将cdrom所对应的设备挂载到这个挂载点上(笔者这里cdrom所对应的设备为/dev/hdc,根据你cdrom在电脑中的接线,后面的hdc可能会有所不同),如图(20)
(20

挂载完后,就可以使用cd cdrom命令进入cdrom了,用ls命令查看,发现光碟的内容全部都显示在了屏幕上,如图(21),然后再次使用cd Server命令进入/cdrom/Server文件夹下,如图(22),实际上在这个文件夹下,就存放着我们内核的安装文件。
图(21
 

图(22

使用rpm –ivh kernel-2.6.18-8.el5.i686.rpm –root=/mnt/sysimage/ --force命令将内核重新装到系统中(在这里有系统自动补全的功能,所以不要怕忘记了内核的版本)。安装完成后,使用chroot /mnt/sysimage/命令再次将系统挂载到/mnt/sysimage目录下,然后使用grub-install /dev/sda将grub安装到MBR上,如图(23)

图(23
 
实际上到了这里,要做的就是前面说的重写grub.conf的内容了,我们来到boot目录下,使用ls > /boot/grub/grub.conf命令将在boot下的文件名称定向到grub.conf文件当中,这样做是为了让编写grub.conf文件显得更轻松,如图(24)当然如果你能把内核的版本名称都背下来,那是你牛叉,当然就不用这种方法了,我真见过有不少人把grub.conf里的内容一字不差的背下来的,但是我记忆不好,没有办法。

图(24
完成后我们用vi编辑器打开/boot/grub/grub.conf文件,如图(25),将其他的文字都删掉,只留下initrd和vmlinuz开头的两个文件名,并将vmlinuz开头的文件名字放在上面。

图(25
 
最后编辑完成的文件如图(26),其中default=0 为默认启动选项必须写,timeout =10为记时,可以不要,title xtjlql为开机画面中给你选择系统的菜单,必须要,如果这里没有写将无法引导系统。后面的均为系统启动必须选项,详情可以查看网络上关于grub.conf的文章,或鸟哥的私房菜,在这里就不赘述了。编辑完成后就可以重新启动计算机了。

图(26
 
最后来一张全OK图,是不是很精彩,为自己鼓掌吧。

 
 
总结:关于系统启动实际上最常见的问题就是出在/etc/fstab,/etc/inittab和/boot下的,只要对这些文件目录比较了解了,一般的启动问题解决起来是非常方便的。至于为什么是这些文件或文件夹,以及启动还包含有哪些内容

转载请保留固定链接: https://linuxeye.com/Linux/646.html

------分隔线----------------------------
标签:linux启动排错实例
栏目列表
推荐内容