当硬盘启动时,BIOS通常是指向第一个硬盘的第一个扇区,找到MBR的前446的字节,既是引导加载程序(boot loader),boot loader是一段程序,它使用的软件主要有LILO,GRUB。
LILO:LInux LOader 不可以引导1024柱面以后的分区上的内核或系
GRUB:GRand Unified Bootloader 是目前使用的主流
主要任务:从磁盘中加载内核文件,以让内核能够顺利驱动整个系统的硬件
grub 的优点
认识与支持较多的文件系统,并且可以使用 grub 的主程序直接在文件系统中查找内核文件名;
启动的时候,可以自行编辑与修改启动设置选项,类似 bash 的命令模式;
可以动态查找配置文件,而不需要在修改配置文件后重新安装 grub 。即我们只要修改完 /boot/grub/menu.lst 里头的设置后,下次启动就生效了!
我们这里只说GRUB ,
一、执行过程
stage1:执行boot loader的主程序
必须安装在 在MBR的前446个字节,主要是引导stage 2
stage2 :主程序加载配置文件
加载所有的配置文件与相关的环境参数文件(包括文件系统定义与主要配置 文件 menu.lst)
有上图我们就可以看到grub的主要配置文件就是/boot/grub/menu.lst可以通过三个路径访问 /boot/grub/grub.conf
/boot/grub/menu.lst
/etc/grub.conf 后面两个路径都是指向前一个的连接。
二、 配置文件 /boot/grub/menu.lst
1、硬盘与分区在grub中的代号
- 硬盘代号以小括号 ( ) 括起来;
- 硬盘以 hd 表示,后面会接一组数字;
- 以“查找顺序”做为硬盘的编号。
- 第一个搜寻到的硬盘为 0 号,第二个为 1 号,以此类推;
- 每颗硬盘的第一个 partition 代号为 0 ,依序类推。
所以第一块找到的硬盘代号为(hd0),而这块硬盘的第一个分区为(hd0,0)
2、/boot/grub/menu.lst 配置文件
- # vim /boot/grub/menu.lst
- default=0 <==默认开机选项,使用第 1 个开机选单 (title)
- timeout=5 <==若 5 秒内未动键盘,使用默认菜单启动
- splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz <==背景图示所在的文件
- hiddenmenu <==读秒期间是否显示出完整的选单画面(默认隐藏)
- title Red Hat Enterprise Linux Server (2.6.18-308.el5) 第一个菜单的内容
- root (hd0,0) 内核文件所在的分区
- kernel /vmlinuz-2.6.18-308.el5 ro root=/dev/vol0/root rhgb quiet 内核
- initrd /initrd-2.6.18-308.el5.img RAM Disk的文件名
- title Install Red Hat Enterprise Linux 5
- root (hd0,0)
- kernel /vmlinuz-5 ks=http://172.16.0.1/workstation.cfg ksdevice=eth0 noipv6
- initrd /initrd-5
- password --md5 $1$FSUEU/$uhUUc8USBK5QAXc.BfW4m.
三、grub的编辑窗口:
1、启动界面 默认5s
在5s内按任意键可以进入选择菜单
这三个 就是title的值,默认启动第二个
此时按下e键进入编辑title
用方向键选择第二项 按e键编辑
四、加密
如果我们不行别人选择启动菜单,也不想别人编辑title菜单,我们 就可以设置密码
- default=1
- timeout=5
- splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz
- hiddenmenu
- password redhat1
- title Red Hat Enterprise Linux Server (2.6.28.10-zhanghui.com)
- root (hd0,0)
- kernel /vmlinuz-2.6.28.10-zhanghui.com ro root=/dev/vol0/root rhgb quiet
- initrd /initrd-2.6.28.10-zhanghui.com.img
- password redhat2
- title Red Hat Enterprise Linux Server (2.6.18-308.el5)
- root (hd0,0)
- kernel /vmlinuz-2.6.18-308.el5 ro root=/dev/vol0/root rhgb quiet
- initrd /initrd-2.6.18-308.el5.img
- title Install Red Hat Enterprise Linux 5
- root (hd0,0)
- kernel /vmlinuz-5 ks=http://172.16.0.1/workstation.cfg ksdevice=eth0 noipv6
- initrd /initrd-5
- password --md5 $1$FSUEU/$uhUUc8USBK5QAXc.BfW4m.
如上图所示,密码可以分别加在三个地方
密码加在1 位置处,我们不可以编辑每一个菜单。可以看到三个菜单但无法编辑。
下面选项没有“e”但有一个"p"
按“p”输入redhat1 位置1 出的密码
就可以编辑每一个菜单了
密码加在2 位置处,没有密码我们就无法启动这个菜单
输入 密码2出的密码 redhat2 就可以通过这个菜单启动
密码加在3 位置处,没有密码我们就无法启动这个菜单
上面我们的密码都是明码,谁只要可以登录系统都可以看到密码,这样不安全,也起不到限制的作用,我们可以对密码加密,就像密码3处的密码
使用命令: grub-md5-crypt
- [root@localhost ~]# grub-md5-crypt
- Password: 输入redhat
- Retype password: 再次输入redhat
- $1$mZD5i0$WZVJcZal2oc/NagUysGap. 加密密码就生成了
password --md5 $1$FSUEU/$uhUUc8USBK5QAXc.BfW4m.
这样别人就不知道密码了
但是位置2 和位置3 的密码是可以被删除的 ,因为输入密码1之后就可以编辑下面的title菜单 把设置密码的那一行删除 在用那个菜单启动 就不需要密码了。
五、安装
1、在grub的命令模式安装
- #grub
- grub> root(hd0,0)
- grub>setup (hd0)
- 只会装stage1:MBR (446) stage2 可以复制
2、grub-install 安装grub
- #grub-install [--root-directory=DIR] INSTALL DEVICE
- 选项与参数:
- --root-directory=DIR 那个 DIR 为实际的目录,使用 grub-install 默认会 将grub 所有的档案都复制到 /boot/grub/* ,如果想要复制到其他目录与装置
- 去, 就得要用这个参数。
- INSTALL_DEVICE 安装的装置代号啦!
例如将grub 装在/tmp目录下 /tmp是一块独立的分区 /dev/sdb1
- [root@localhost tmp]# grub-install --root-directory=/tmp /dev/sdb1
- Probing devices to guess BIOS drives. This may take a long time.
- Installation finished. No error reported.
- This is the contents of the device map /tmp/boot/grub/device.map.
- Check if this is correct or not. If any of the lines is incorrect,
- fix it and re-run the script `grub-install'.
- (fd0) /dev/fd0
- (hd0) /dev/sda
- (hd1) /dev/sdb
vim /boot/grub/menu.lst
手动一步一步的写可以 ,复制也可以
- 先使用grub-install安装grub的配置文件
- 开始编辑menu.lst这个重要的配置文件
- 通过grub来将主程序安装到系统中,(MBR的(hd0)或者是boot sector 的(hd0,0))
六、故障修复
grub 故障分三种
1,stage1 2,stage2,3,grub.conf
1、 紧急救援模式 :
用光盘引导 进入紧急救援模式 :linux rescue 就是光盘上的小系统,搜 索当前系统上某分区上的根文件系统,并挂载到 /mnt/sysp_w_picpath chroot /mnt/sysp_w_picpath 跟切换 到真正的跟
并重装grub
2、stage2 可以复制
cp /usr/share/grub/i386 -redaht/stage2
3、grub.conf
进入紧急救援模式
vim /etc/grub/grub.conf
七、备份
备份 MBR
dd if=/dev/sda of=/root/mbr.bak bs=512 count=1
备份boot loader
dd if=/dev/sda of=/root/bootloader.bak bs=446 count=1
还原
1、dd if=/mnt/sysp_w_picpath/root/bootloader.bak of=/dev/sda bs=446 count=1 还原
尽我所能总结了这么些内容,有不足之处还望大家多多指教,共同学习进步。呵呵