几种PC常见的bootloader,在损坏几次后的总结

来源:互联网 发布:校园网络系统建设方案 编辑:程序博客网 时间:2024/06/01 08:27
lilo grub grub2 grub4dos

grub

在早期的Linux系统中大多使用grub进行引导,随着grub2的推出,grub已停止开发,
现在称grubgrub lercay.其衍生版本为grub4dos,现在还在开发,其配置单通常
位于/boot/grub/menu.lstgrub又分为了stage1,stage1_5,stage2.
grub2

GRand Unified Bootloader,version 2,
其结构已经完全重写和完整。
grub2
结构:/boot/grub/grub.cfg,/etc/grub.d/,/etc/default/grub.
/boot/grub/grub.cfg
是启动菜单配置,和grubmenu.lst差不多,不同的是,grub.cfg是由update-grub命令生成,每次系统内核更新时都需要执行该操作,若是手动修改了该文件,下次更新时又会重刷。在这个目录下还有各种驱动,以支持各种文件系统及外设。/etc/grub.d/目录下由多种启动脚本,一个脚本对应一个启动项,
比如我的目录下是这样
00_header        10_linux      20_memtest86+  40_custom README
05_debian_theme  20_linux_xen  30_os-prober  41_custom
00_header
为系统保留的启动项,主要进行一些初始设置,比如加载ext2文件系统支持,设置硬盘分区格式为MS-DOS等,10_开头的是当前系统的启动项,30_是个探测脚本,它会探测出所有分区上是否有启动记录并加入grub的启动菜单。而系统的启动顺序正式根据这些脚本来判断的,比如将30_os-prober改为06_os-prober那么,其他分区的系统就会出现在该系统之前。/etc/default/grub是一个官方给出的参数定义,包括分辨率,默认启动项,背景等。每次执行update-grub正是根据后两个目录生成grub.cfg,想手动修改增加减少启动项,修改/etc/grub.d/下文件才是一劳永逸的方法,免得系统一更新,又要重写grub.cfg.

ubuntu发行版来说,在ubuntu9.10后便不再使用grub作为引导程序,而使用grub2作为引导程序,最新的ubuntu12.04搭载的grub2版本为1.99.系统中命令update-grubupdate-grub2都是一个命令,只是做了个链接。

grub
启动流程可分为MBR -> stage1 -> stage2 ->os
grub2
启动变为:MBR -> Boot.img -> core.img  -> os 
grub一样,这些镜像也都放在/boot/grub/.现在linux内核把IDESATA的设备结点都改为sda sda1 sda5 sda6...一致,而grub/grub2仍采用(hd0),(hd0,0)...这样的格式,所以对应linux分区sda1(主分区)grub(hd0,0)sda5(第一逻辑分区)(hd0,4),手动修改grub.cfg时需要区分。

grub/grub2
的修复:
两种grub的结构不同,所以修复方法也不同。
需要修复grub或者说是MBR,通常是由于中病毒或者装双系统时才会出现,对于MBR中病毒,linux还未听说。在装有linux系统的情况下,再装windows系列时,都会重写MBR
ubuntu
下:
grub
修复:
使用live-cd进入系统,打开终端:
输入:
:find /boot/grub/stage1
:suso grub   //
root进入grub 终端
:root (hd0,x) //
设置启动分区位置
:setup (hd0)  //
MBRsda
:quit
:reboot
   
grub2
修复:
使用live-cd进入OS,打开终端
:sudo -i
:mount 
根分区目录 /mnt  //  
:grub-install --root-directory=/mnt /dev/sda  // 
参数指定该命令是运行在/mnt下面的分区中的,chroot命令一样。

另外如果只是分区里面的grub.cfg损坏,也只需要进入该分区重新生成grub.cfg即可
即:chroot /mnt update-grub  //系统根分区已经挂载到/mnt

grub4dos这种也可以用来修复grub,前提有个grub4dos启动盘,(为什么不是有windows,因为如果是grub引导,不能引导linux,那肯定windows也不能启动),然后进入grub终端输入:
:find --set-root /boot/grub/core.img
:kernel /boot/grub/core.img
:boot
如果能找到,则可以正常进入系统了:然后重写MBR
#:grub-install /dev/sda  

总结来说,想要修复grubMBR部分),即变相的进入系统,然后重写,当然如果是不要linux了,只保留windows,那重写MBR方法就多了,最简单找个安装盘,进DOS执行:
fdisk mbr
即可。如果不小心把linux分区直接给格式化了,那就还是直接重装系统...