首页 > 系统 > Linux > 正文

安装debian Linux过程中学习grub的心得体会

2024-08-28 00:06:45
字体:
来源:转载
供稿:网友

  从sarge开始,grub成为debian的默认boot loader,说明grub有比lilo更高明的地方。但是,像我这样用惯了lilo的人,转到grub来还是有点不习惯。这两天看了grub的一些文档,终于把一些本来不清楚的地方琢磨的有点明白了。现在把自己的一些心得写在这里,希望对那些和我有同样问题的朋友能起到一点帮助。
  1、grub是什么?
  按照官方文档的说法,grub是一个boot loader,它主要负责pc机自检(POST)以后到操作系统内核获得控制权之间一些工作。如果只是引导本地系统,能正常工作的grub应该包括一下文件:stage1、stage2、*stage1_5、menu.lst。
  其中stage1的大小一定是512字节,它要被安装(也就是写入)某个硬盘的主引导记录,或者某个活动分区(这个分区要用fdisk标记成可启动的)的启动扇区。stage1的主要的也是唯一的作用就是找到你存放在硬盘上某个地方的stage2文件,来完成后续的工作。
  stage2文件可以存在在某个特定的文件系统中,比如你分了一个linux分区,在上面创建一个ext2文件系统,然后把这个文件拷贝到这个分区的某个目录下。也可以把stage2直接存放在硬盘的某个位置,也就是未分区的某个地方。不过,好像没有多少人会这么做吧。
  因为stage1的容量有限(主引导记录MBR和启动扇区的大小只能够是512字节),所以它对文件系统是无法识别的,那如果你把stage2存放在ext2或者fat格式的文件系统上,它如何来找到这个文件呢?这就要用到上面提到的那些stage1_5的文件了,它们负责解释文件系统。你的stage2放在什么格式的文件系统上,就要调用对应的那个stage1_5文件。比如,你把stage2存放在ext2格式的文件系统上,就需要e2fs_stage1_5;stage2存放在fat格式的文件系统上,就需要fat_stage1_5了。
  总的来说,从你按下计算机电源,到debian启动,大概的过程如下:
  ①按下电源后,计算机自检(POST),如果硬件设备(CPU、内存、硬盘、光驱、各种卡)都没有问题,BIOS会检查各个硬盘的MBR,看有没有可以执行的代码,如果你把grub安装到第一个硬盘的MBR上,那BIOS就会找到它,然后把控制权交个这段代码(其实就是512字节大小的stage1)。
  ②stage1根据安装时提供的信息,如stage2在什么地方,需不需要加载文件系统的对应的stage1_5文件等,找到stage2文件,并把控制权交给stage2。
  ③stage2会需要特定位置的menu.lst文件,如果找到,就分析其中的内容,形成操作系统选择菜单(Grub管它叫Menu Interface),如果没有找到menu.lst或者这个文件的格式、内容有错误,那就显示grub的命令行提示符。
  ④当你选择了菜单中相应的条目,或者输入了相关的命令,就可以看是引导系统了。比如引导linux的话,stage2会负责将vmlinuz和initrd(如果有的话)装载到内存,并把控制全交给vmlinuz。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表