首先,我们来谈一下Linux系统的启动过程。
第一步:加电自检,检测硬件是否完好
第二步:根据BIOS中设置的启动次序依次来启动系统
第三步:找到bootloader,然后启动系统。先找对应启动设备的MBR分区,一般会是设备的第0柱面第0扇区,这个扇区的前446个字节就是bootloader的空间。
第三步:启动kernel
第四步:启动init进程(根据/etc/inittab来启动程序)
我们注意到第三步中,会找bootloader引导项,而它是什么呢?
bootloader是系统的引导程序,通过它引导系统的启动,如果没有了它,则我们的系统就不知道从哪找到kernel来启动系统。可见,在系统的启动过程中,bootloader是相当重要的。
Linux中的bootloader有两种类型:
1,LILO:linux loader 这个很有局限性,对大硬盘的支持不好,过去会使用
2,GRUB:grand unified bootloader 功能强大的引导加载器,支持多种操作系统,在linux中,GRUB是主流,被广泛应用
GRUB采用两个阶段的引导:
stage1:通过MBR加载stage2
stage2:读取/boot/grub中的文件,这个目录中会放有kernel,grub.conf等重要系统启动所必须的文件
所以,我们知道kernel怎么被grub引导起来了吧!
我们知道我们的操作系统一般从我们的硬盘启动的,但grub怎么安装到我们的硬盘中呢?
我们在系统上挂载一块新硬盘,为/dev/sdb。
然后对硬盘进行分区:
fdisk /dev/sdb
第一个分区为sdb1,然后在第一个分区创建ext3文件系统:mkfs -t ext3 /dev/sdb1
然后,我们把grub安装在第一个分区中
第一种grub的安装方法:
1,mkdir /mnt/boot 必须创建一个boot目录
2,mount /dev/sdb1 /mnt/boot 上一步为什么必须创建boot目录呢?因为grub安装的时候默认放在boot这个目录中的,grub是以boot来识别自己的根。
3,grub-install --root-directory=/mnt /dev/sdb --root-directory是指定grub识别的根,注意这个不是文件系统的根,上面我们已经说过,grub是以boot识别根的,故指定/mnt即可
第二种grub的安装方法:
1,mkdir -pv /mnt/boot/grub
2,mount /dev/sdb1 /mnt/boot 这两个步骤的意思上面已经说过
3,cp /usr/share/grub/i386-redhat/* /mnt/boot/grub
4,grub 在命令行输入grub命令,会出现“grub>”提示符
5,root (hd1,0) 指定grub所使用的根,grub就可以使用/代表hd1,0这个分区了,即把该分区设为文件访问的起始点。grub是以hd来识别硬盘的,hd0表示第一块应盘,hd1表示第二块应盘...,而hd1,0表示第二块应盘的第一个分区,hd1,1表示第二块应盘的第二个分区....
6,setup (hd1) 即把grub安装在第二块应盘中,并且在/mnt/boot/grub中会自动生成grub.conf这个配置文件
7,quit 用这个命令退出
终于,我们的grub安装好了,挺简单吧!
我们把这个硬盘拿到其他的机器上,如果能出现"grub>"提示符,说明我们的grub安装成功。
本文转自 leejia1989 51CTO博客,原文链接:http://blog.51cto.com/leejia/788141,如需转载请自行联系原作者