当我们启动电脑的时候首先要按下电源,然后电脑进入BIOS自检,自检完后按照BIOS中设置的启动顺序来启动引导,如是硬盘的话,会读取硬盘上的引导扇区中的MBR(引导记录)引导扇区是每个分区(Partition)的第一扇区,而主引导扇区是硬盘的第一扇区。它由三个部分组成,主引导记录MBR、硬盘分区表DPT和硬盘有效标志。在总共512字节的主引导扇区里MBR占446个字节,第二部分是Partition table区(分区表),即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magic

number,占2个字节,固定为55AA。一般的引导系统有OS Loader、GRUB、LILO,在windows中用的是OS Loader,GRUB和LILO即可以引导linux也可以引导windows和unix。不过现在LILO已经很少用了,一般都是用的GRUB。此时读取GRUB后会根据GRUB的配置文件来加载系统的内核,内核主要完成系统环境的初始化、驱动程序、root文件系统。完成以上的工作后内核开始加载init程序,init程序是所有系统进程的起点,通过加载init的配置文件/etc/inittab来决定进行的操作。init中定义了运行的级别,然后执行/etc/rc.d/rc.sysinit来进行系统初始化,然后再执行/etc/rc.d文件夹下的所有服务,其中还有一个xinetd的超级进程,是调用/etc/xinetd.conf配置文件,从配置文件中知道读/etc/xinetd.d文件,最后打开mingetty定义的终端进行登陆,然后进入终端或桌面。


GRUB:Grand Unified Bootloader
被广泛地用于替代lilo
支持在启动时使用命令行模式
支持md5加密保护
可以从ext2/ext3、ReiseFS、JFS、FAT、minix及FFS文件系统上启动
其配置文件为/boot/grub/grub.conf,更改grub.conf即可立时生效
如果硬盘上的MBR被更动过,可以用/sbin/grub-install /dev/hda来重安装grub

现在查看一下GRUB中的内容,我用的是RHEL5.4的版本

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda5
#          initrd /initrd-version.img
#boot=/dev/sda
default=0   
#default=0表示默认启动第一个系统,如果系统有两个系统title就是系统的分隔符,第一个title后面就是第一个系统,用0表示。
timeout=5
#timout=5,就是默认在启动选择界面停留的时间,单位是秒。等待5秒自动进入默认操作系统
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
#splashp_w_picpath是grub启动背景画面,如果是自己写grub.conf文件,这个可以不用写。
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-164.el5)
#title后面就是系统在启动时候显示的名字
        root (hd0,0)
#root 启动文件所在位置
        kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet
#kernel 内核所在位置和名字
        initrd /initrd-2.6.18-164.el5.img
#initrd内核镜象的名字



如果我们把grub.conf中的后三行删除或把grub.conf删除后,系统再次重启会停留到grub的命令行,这时我们可以利用root命令来查看boot分区的所在位置然后输入(以rhel5.4为例)
root(hd0,0)boot分区所在位置
kernel /vmlinuz-2.6.18-168.el5 ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.18-164.el5.img
boot
然后系统就会启动,进去后还可以再调grub.conf文件

那我们把boot分区下的文件全部删除
启动机器,调成启动顺序,放入RHEL5.4的启动盘或插上制作的U盘启动,然后按F5或 linux rescue 进入救援模式。进入后首先选择语言、键盘模式,然后会出现是否配置网络,这里可以自己选择,选择完后会提示是否自动挂载硬盘中的系统,这里选择自动挂载,然后就进入了救援模式了。
在救援模式中输入
chroot /mnt/sysp_w_picpath/  切换到硬盘中的系统,然后去查看boot分区中丢失了哪些文件
然后挂载好光盘,安半kernel内核
mount /dev/cdrom /media/cdrom
cd /media/cdrom/Server
rpm -ivh kernel-2.6.18-164.el5.i686.rpm
安装好内核后kernel和initrd都有了,这时我们进入grub目录,touch grub.conf新建一个grub配置文件,在里面写入
default=0   
timeout=5
splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.18-164.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet
        initrd /initrd-2.6.18-164.el5.img

然后保存退出
输入两次exit退出

如果boot分区被删除,我们也是首先进入救援模式,进入后先用fdisk命令分区,然后重新启动再格式化新的分区,然后按照上面的方法再安装内核、写grub引导配置文件保存退出就可以了。