2009年4月14日星期二

grub详解

 GNU GRUB 是一个多重操作系统启动管理器。GNU GRUB 是由GRUB(GRand Unified Bootloader) 派生而来。GRUB 最初由Erich Stefan Boleyn 设计和应用;
  GNU GRUB is a Multiboot boot loader. It was derived from GRUB, GRand Unified Bootloader, which was originally designed and implemented by Erich Stefan Boleyn.
  Grub特点简介
  1.提供一个功能强大的命令行接口
  这样就给用户提供了一个功能强大的接口,伸展了用户启动操作系统的灵活性,这种功能,对于非x86构架的许多机器上,已经存在了很多年了
  2.支持LBA大容量硬盘访问模式
  在LBA模式出现之前,启动的程序只能访问1024柱面的硬盘,大约就是8G空间,后面的空间就无法访问了,因为grub对LBA的支持,让操作系统
  调用的灵活性大大的增加了
  3.可以支持ext2文件系统
  这个功能可以让Grub直接访问到放在硬盘分区上的配置文件,从而一旦MBR收到破坏,只需要重新写MBR,不需要重新写配置文件便可以恢复启动
  Grub命令简介
  这里介绍一下通过c命令进入Grub命令模式情况下,可以手动运行的一些命令,来完成各种不同的任务
  boot 启动操作系统,或者启动上一次的(chainloader)
  chainloader 启动特定的文件或者一个chainloader 如果,启动的文件位于特定分区的第一个扇区,可以用+1符号代替文
  件名称 比如 chainloader +1 表示从0开始读一个扇区
  displaymem 显示当前的内存利用率
  initrd 让用户指定一个initrd RAM软盘启动
  当内核需要某些特殊的模块才能启动的时候,就需要这个文件
  install p config-file 把grub程序安装到系统的MBR中间
  stage-1表示一个设备,如分区,文件等,在这里可以找到启动映像文件
  比如(hd0,0)/grub/stage1
  install-disk 规定了 启动映像应该安装到哪里
  比如(hd0)
  stage-2 把第二阶段启动映像传递给stage-1
  如(hd0,0)/grub/stage2
  p conifg-file 表示让install命令读取grub.conf的配置文件,
  如(hd0,0)/grub/grub.conf
  kernel ....
  规定内核文件,后面跟内核参数
  root 定义根分区,并挂接着个分区
  rootnoverify 定义根分区 但是不挂接着个分区
  1. 什么是grub
  grub 是一个多重启动管理器。grub是GRand Unified Bootloader的缩写,它可以在
  多个操作系统共存时选择引导哪个系统。它可以引导的操作系统包括Linux,FreeBSD,So
  laris,NetBSD,BeOSi,OS/2,Windows95/98,Windows NT,Windows2000。它可以载入操作系
  统的内核和初始化操作系统(如Linux,FreeBSD),或者把引导权交给操作系统(如Win
  dows 98)来完成引导。
  2. grub的特点
  grub可以代替lilo来完成对Linux的引导,特别适用于linux与其它操作系统共存情
  况,与lilo相比,它有以下特点:
  支持大硬盘
  现在大多数Linux发行版本的lilo都有同样的一个问题:根分区(/boot分区)不能分
  在超过1024柱面的地方,一般是在8.4G左右的地方,否则lilo不能安装,或者安装后不
  能正确引导系统。而grub就不会出现这种情况,只要安装时你的大硬盘是在LBA模式下,
  grub就可以引导根分区在8G以外的操作系统。
  支持开机画面
  grub支持在引导开机的同时显示一个开机画面。对于玩家来说,这样可以制作自己
  的个性化开机画面;对于PC厂商,这样可以在开机时显示电脑的一些信息和厂商的标志
  等。grub支持640x480,800x600,1024x768各种模式的开机画面,而且可以自动侦测选择
  最佳模式,与Windows那320x400的开机画面不可同日而语。
  两种执行模式
  grub不但可以通过配置文件进行例行的引导,还可以在选择引导前动态改变引导时
  的参数,还可以动态加载各种设备。例如你在Linux下编译了一个新的核心,但不能确定
  它能不能工作,你就可以在引导时动态改变grub的参数,尝试装载这个新的核心进行使
  用。Grub的命令行有非常强大的功能,而且支持如bash或doskey一样的历史功能,你可
  以用上下键来寻找以前的命令。
  菜单式选择
  在lilo下,你需要手工输入操作系统的名字来引导不同的操作系统。而grub使用一
  个菜单来选择不同的系统进行引导。你还可以自己配置各种参数,如延迟时间,默认操
  作系统等。
  分区位置改变后不必重新配置
  lilo是通过读取硬盘上的绝对扇区来装入操作系统,因此每次分区改变都必须重新
  配置lilo,例如你用PQ magic调整了分区的大小,那lilo在你重新配置好之前就不能引
  导这个分区的操作系统了。而grub是通过文件系统直接把核心读取到内存,因此只要操
  作系统核心的路径没有改变,grub就可以引导系统。 除此之外,Grub还有许多非常强大
  的功能。例如支持多种外部设备,动态装载操作系统内核,甚至可以通过网络装载操作
  系统核心。Grub支持多种文件系统,支持多种可执行文件格式,支持自动解压,可以引
  导不支持多重引导的操作系统等。
  3. grub的使用
  安装grub
  如果已经安装了蓝点Linux2.0则grub是默认安装的。要把grub重新安装到主引导扇
  区上,只需要简单打入makebootable命令就可以了。
  制作grub启动盘
  首先确定grub已经安装,然后进入grub的目录,键入:
  #cd /boot/grub
  放入一张软盘,然后敲入命令:
  #dd if=stage1 of=/dev/fd0 bs=512 count=1
  #dd if=stage2 of=/dev/fd0 bs=512 seek=1
  这样就可以做好一张启动盘了。 也可以用mkbootdisk命令 #mkbootdisk 2.2.16
  2.2.16是指内核版本号
  开机
  安装了grub开机后会出现一个菜单,列出所有的启动选项。如果设置了启动画面则
  会显示启动画面,按Esc键则可以取消启动画面显示菜单选项。蓝点Linux所带的grub的
  命令提示是全中文的,在菜单下面详细列出如按e是编辑启动命令,按c是使用命令行等
  。用上下键可以选择菜单项,按回车启动所选项。按e键可以编辑所选项的启动命令,你
  可以用这个功能临时改变你的系统的启动参数,参见配置grub一节。按c键则进入命令行
  模式。
  在命令行模式下可以打入命令直接执行,例如你可以敲入poweroff关闭计算机。按
  Tab键可以列出所有支持的命令。蓝点Linux已经把grub汉化了,其中一部分命令敲入名
  字后会给出中文提示,显示命令的用法和参数。
  4. 配置grub
  grub启动时会在/boot/grub/中寻找一个名字为menu.lst的配置文件,如果找不到此
  文件则不进入菜单模式而直接进入命令行模式。
  menu.lst 是一个文本文件,你可以用任何一个文本编辑器来打开它。每一行代表一
  个配置命令,如果一行的第一个字符为井号\"#\"则这一行为注释,你可以简单地用增加或
  减少注释行来改变配置。
  编辑menu.lst,一般会有以下各行
  timeout second
  设定在second秒之后引导默认的操作系统。
  蓝点Linux默认是timeout 5,就是5秒没有其他指令就引导系统,如果设成-1,则grub会
  一直等待直到用户选择一个选项为止。
  default num
  默认启动第num+1行选项,也就说default=0则默认启动菜单第一行的操作系统,defaul
  t=1则启动第2行的系统,如此类推。
  splash pathname/filename
  指出开机画面的文件所存放的路径和文件名,如 splash /boot/logo/800x600x8.img 是
  指用在/boot/logo路径下的800x600.img文件作为开机画面
  title OSname title
  后面的字符就是你在菜单项上所看见的选项,你可以写上操作系统的名字和描述,如用
  title BluePoint Linux, Single Mode 代表这一选项是引导蓝点Linux的单用户模式。
  下面结合两个系统引导描述来解释几个引导选项的意义
  title BluePoint Linux, Default Mode
  root (hd0,1)
  kernel /boot/vmlinuz vga=auto root=/dev/hda2
  hd0是指第一个硬盘(主硬盘) (hd0,1)是指第一个硬盘的第二个分区。 kernel /boot/v
  mlinuz 是指出Linux核心的路径在/boot/vmlinuz中。vga=auto 是设定显示模式,root
  =/dev/hda2是指把第一个硬盘的第二个分区作为根挂载点?quot;/\")。
  title Microsoft Windows
  root (hd1,0)
  chainloader (hd1,0)+1
  root (hd1,0)这是指第二个硬盘(从硬盘)上第一个分区
  chainloader (hd1,0)+1 装入一个扇区的数据然后把引导权交给它。
  5. 从软盘启动grub
  制作启动盘后可以用软盘启动引导硬盘上的操作系统 插入制作好的启动软盘,进入
  BIOS设定软盘启动。软盘启动成功后就会进入grub的命令行模式
  grub>
  要启动一个操作系统,首先指定引导哪个分区上的系统,例如要引导指第一个硬盘
  上的第一个分区的操作系统,先键入
  grub>root (hd0,0)
  接着如果要启动的是Windows系统,键入
  grub>chainloader (hd0,0)+1
  注意(hd0,0)要随着硬盘和分区的不同而改变数字。 如果要引导Linux或其他系统,
  应键入
  grub>kernel (hd0,0)/boot/vmlinuz root=/dev/hda1
  注意hda1参数也要随着硬盘和分区的不同而改变,如从第二个硬盘的第一个分区引
  导则用hdb1。
  最后敲入boot就可以启动系统了。
  在任何时候不能确定命令或者命令的参数都可以按Tab获得相关的帮助。用上下键可
  以获得命令的历史记录。 其实这些命令就是menu.lst的启动描述,您也可以根据那些描
  述来自己键入启动命令,最后敲入boot就可以引导系统了。

没有评论:

发表评论