Linux系统引导grub分析
一、Windows与Linux的引导
操作系统的启动过程基本如下:
BIOS----->Bootloader------>Kernel------>init------->service----->login----bash
Windows的引导原理如下:
一个块硬盘中分C、D两个盘,C盘(第一块分区)中讲集成一块PBR的引导区域,硬盘中仍然独立存在MBR的引导区域。Windows实现的是通过MBR引导跳转到C盘中的PBR引导,从而引导Windows的操作系统。
Linux的引导原理:
Linux一般通过grub进行引导,grub存在于/boot分区内,grub可以实现啊选择引导。
如果是双系统,可以先装Windows建立Windows的引导机制,然后安装Linux,设置Linux的grub阻断Windows的自动跳转引导PBR,使其选择引导Windows的PBR和Linux的init。
二、Linux中的grub分析
与grub相关的重要文件:
/boot/grub/grub.conf(menu.lst)
/boot/grub/stage1 (512字节固定)
stage1_5_ext3
stage2
stage1和stage1_5出现问题:grub-install /dev/sda 修复
stage2出现问题需要用关盘启动来重新安装,三部曲:
cdrom
Linux rescue
chroot /mnt/sysimage
grub.conf找不到:重新建立grub.conf
vim /boot/grub/grub.conf
引导中最重要的三段命令:
root (hd0,0) 到第一个硬盘的第一个分区(boot分区)
kernel /vmlinuz-2.6.18-194.el5 ro root=LABEL=/ 告诉kernel /boot下的vmlinuz是内核
ro代表只读,并且root根目录是/ 也可以写成/dev/sda2
起到承上启下的作用
initrd /initrd-2.6.18-194.el5.img 将跟kernel相关的驱动放在initrd下
根分区和驱动没有指定正确都无法引导
e2label /dev/sda2 可以查看卷标,root=/LABEL=/ 中 /就是卷标,也就是根目录的意思
在grub中可以加密码,也就是我们在安装系统的时候提示的grub的密码,可以在grub.conf中进行设置,写入哪一行
就在哪一行执行时提示密码来进行对系统的保护,格式为:
password --md5 *****
如果不加md5 则密码是以明文的形式显示出来的
获取MD5密码的内容如下
[root@localhost grub]# grub-md5-crypt
Password:
Retype password:
$1$IToNN0$NCtPJK7BsNO8F1ClymTm5/
将生成的加密密码复制过去即可
kernel /vmlinuz-2.6.18-194.el5 ro root=LABEL=/ 后可以加入很多命令
如1 则表示单用户模式 有1-6个模式
如果root忘记密码我们可以在grub的选择界面按下 e 选择到这一行 e 在末尾修改添加1 回车 按b 执行
如果添加 init=/bin/bash 则不加载任何服务 纯启动bash