免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1340 | 回复: 0
打印 上一主题 下一主题

GRUB详解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-30 18:09 |只看该作者 |倒序浏览

                                                               
                                                                                总体上.我们可以把GRUB看成一个微型的OS,stage1.stage1.5可以看成一个引导程序,stage2看成一个OS.只不过这个OS是用来专门用来启动其他OS的
一.GRUB引导系统的两种方式  1,直接引导方式   GRUB同时支持linux,openbsd,freebsd,netbsd等系统   通常步骤如下:   (1)通过'root'指令来设置GRUB的主设备指向操作系统映像文件所存储的地方   (2)通过'kernel'命令来载入该操作系统的核心映像.如需参数,在后面添加   (3)如果需要模块,通过'module'命令来加载模块   (4)运行命令'boot'启动系统  2,链式引导方式   如果你要启动一个不被GRUB直接支持的操作系统(例如:xp),可以通过链式引导启动一个操作系统.将   开机的指针直接指向装有该操作系统分区的bootsector(即该分区的第一扇区),使其激活.   主要步骤如下:   (1)通过'rootnoverify'命令设置GRUB的主设备指向一个扇区(同'root'区别是不挂入分区)   (2)通过'makeactive'命令来设置在扇区上的'active’标志位   (3)通过'chainloader' 命令来加载引导程序.'+1'表明GRUB需要从起始分区读一个扇区   (4)运行命令'boot'启动系统
二.GRUB引导操作系统的简要流程   (1)BIOS 执行INT 0x19,载MBR至0x7c00并跳转执行如果你安装GRUB到MBR,GRUB的安装程序会       把 Stage1(512B)拷贝到MBR.视Stage2的大小,安装程序会在Stage1中嵌入Stage1_5或者       Stage2的磁盘位置信息.   (2)Stage1开始执行,它在进行直接加载Stage1_5或者Stage2并跳转执行.不论是哪种情况,这一步      的结果都是Stage2开始运行.   (3)Stage2这个小型的操作系统终于开始正式运行了!它会把系统切入保护模式,设置好C运行环境      (主要是BSS).他会先找config文件(就是我们的menulist),如果没有的话就执行一个Shell,      等待我们输入命令.然后Grub的工作就是输入命令-解析命令-执行命令的循环,当然Stage2本身      是为加载其他操作系统而存在的,所以如果情况允许,在他执行Boot命令以后就会把控制权转交出去.
三,GRUB主要启动模块   Stage1      这是一个基本必须的用来启动GRUB的映像文件.通常,这个文件是被装载到MBR或者启动扇区所在      的分区.由于PC的启动扇区的大小为512字节,所以这个映像文件编译以后也必须为512字节.Stage1      的全部的工作是从本地磁盘把Stage 2或者Stage 1.5装载进来.由于对stage1大小的限制,它通      过分程序表的形式来编码Stage 2或者Stage 1.5的位置,所以在stage1是不能识别任何文件系统   Stage2      这是GRUB的核心映像.它几乎做了除启动它本身以外的所有事情.通常,它被存放为某一种文件系统下,      但并非是必须的.   Stage1.5      做为stage1与stage2之间的桥梁,也就是说,stage1载入stage1.5,然后stage1.5载入stage2.      stage1与stage1.5之间的区别是,前者是不识别任何文件系统的但后者识别文件系统(例如      'e2fs_stage1_5'识别ext2fs).所以你可以安全的移动stage2位置,即使是GRUB安装完以后. 注: 在我的系统中.stage1被安装到了mbr,也就是硬盘第一扇区,而stage1.5被安装到了mbr以后的扇区,     根据大小完全复制进去,并且stage1.5的类型为/boot分区的文件系统类型
附:MBR(Master Boot Record) 硬盘主引导分区硬盘的0柱面0磁头1扇区
0面0磁头的所有扇区都是保留的,BIOS不会放置任何数据,第一分区从0面1磁头1扇区开始MBR=Bootloader(446B) + Partition Table(64B) + Magic Number (2B 55AA)    Bootloader 存放引导程序,如果安装GRUB到MBR,stage1将覆盖这个区域    Partition table为硬盘分区表,最多支持4个主分区    Magic number 为55AA ,标示该扇区为MBR.注: fdisk /mbr 这个命令不是恢复全部MBR,而是把前面446B的Bootloader换成原始的激活程序,如果
    Partition Table有问题就没有用grub-install 是把已经安装的软件包中的一些文件复制到/boot/grub中;对于新安装GRUB软件包后,也是一个必经的过程安装GRUB到MBR
grub> root (hd0,1)        (A)
root (hd0,1)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd0)         (B)
setup (hd0)
Checking if "/boot/grub/stage1" exists... yes
Checking if "/boot/grub/stage2" exists... yes
Checking if "/boot/grub/e2fs_stage1_5" exists... yes
Running "embed /boot/grub/e2fs_stage1_5 (hd0)"...  15 sectors are embedded.                 (C)
succeeded
Running "install /boot/grub/stage1 (hd0) (hd0)1+15 p        (D)  (hd0,1)/boot/grub/stage2 /boot/grub/menu.lst"... succeeded
Done.                     (E)
grub> quit
A:设置装有stage1,stage1.5.stage2的硬盘分区B:安装GRUB至MBR   C:'embed'命令是嵌入stage1.5到硬盘MBR后的扇区上,这儿把stage1.5写入MBR后的15个扇区.扇区数目   根据stage1.5的大小而不同D:安装stage1到MBR上E:'p'告知GRUB,stage2和menu.lst的位置
GRUB源码分析
参考
http://www.linuxsir.org/bbs/showthread.php?t=170348
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/91603/showart_1809025.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP