以CentOS 6为例,系统的启动流程为:
1.开机post加电自检
2.MBR引导
3.通过grub加载内核
4.加载根
5.加载系统中的第一个进程
6.进行初始化
7.出现登录界面
其中主要的启动环节是grub引导计算机,分为三个阶段:一阶段发生在mbr的446字节中;一点五阶段在mbr后续的扇区中;二阶段在/boot/grub/目录下。
当三个阶段中任意一个阶段被破坏后,计算机就会无法启动,所以要针对不同的破坏实施不同的修复措施。
一、一阶段的破坏及修复方法:
1.破坏一阶段:dd if=/dev/zero of=/dev/sda bs=1 count=446 (清空mbr中446字节的内容)
2.修复:
a.利用光盘启动进入救援模式
b.chroot /mnt/sysimage (切根)
c.grub-install /dev/sda (此命令的作用是重新安装grub,不仅可以修复一阶段,还可以修复一点五与二阶段的破坏)
d.sync (同步操作)
e. hexdump -C -n 512 /dev/sda (查看是否修复数据)
f.重新启动
进行以上步骤,就可以正常启动计算机了。如图所示:
二、一点五阶段的破坏与修复:
1.破坏一点五阶段: dd if=/dev/zero of=/dev/sda bs=1 count=10240 skip=512 seek=512
2.修复:
a. 进入救援模式
b. 切根:chroot /mnt/sysimage
c. 可用grub-install 修复,也可以输入grub,出现提示符——输入root(hd0,0),表示root是第一个硬盘的第一个分区——输入setup (hd0)
d.退出重启
三、二阶段的破坏与修复:
1.破环:删除/boot/grub下的文件,只留下grub.conf文件
修复:使用grub-install /dev/sda 命令,重新安装grub
2.破坏:删除grub.conf文件
修复:grub.conf文件负责提供启动时的菜单选项,删除这个文件,需要手动输入文件的主要内容:
a.启动时停滞在grub界面,手动输入root (hd0,0),回车
b.输入kernel /VMlinuz版本(支持Tab键补全) root=/dev/sda2,回车
c.输入 initrd /initramfs版本
b.启动后可恢复grub.conf文件
3.破坏:删除 /boot/grub/目录
修复:进入救援模式,切根
a. grub-install /dev/sda (重装grub)
b.sync (同步)
c.手动创建grub.conf文件:vim /boot/grub/grub.conf
default=0
timeout=3
title linux
kernel /vmlinuz版本 root=/dev/sda (boot所在分区)
initrd /initranfs版本
d.重启
总结:通过修复启动各种阶段的故障,可以进一步的了解系统启动的过程,对linux系统也加深了认识。
原创文章,作者:xiamu,如若转载,请注明出处:http://www.178linux.com/86002