您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > grub2基础教程-修订版
grub2基础教程修订版 smallapple目录一、grub2新特性二、grub2安装与启动三、grub2配置文件详解四、脚本修改五、使用grub2常见错误及修复方法一、grub2新特性1、grub2和grub有很多不同的地方:a)图形接口b)使用了模块机制,通过动态加载需要的模块来扩展功能c)支持脚本语言,例如条件判断,循环、变量和函数d)支持rescue模式,可用于系统无法引导的情况e)国际化语言。包括支持非ASCII的字符集和类似gettext的消息分类,字体,图形控制台等等f)有一个灵活的命令行接口。如果没有配置文件存在,GRUB会自动进入命令模式g)针对文件系统、文件、设备、驱动、终端、命令、分区表、os loder的模块化、层次化、基于对象的框架h)支持多种文件系统格式i)可访问已经安装的设备上的数据j)支持自动解压2、设备的命名grub2同样以fd表示软盘,hd表示硬盘(包含IDE和SCSI硬盘)。设备是从0开始编号,分区则是从1开始,主分区从14,逻辑分区从5开始,而grub分区编号是从0开始的。下面给出几个例子 :(fd0):表示整个软盘(hd0,1):表示BIOS中的第一个硬盘的第1个分区(hd0,5)/boot/vmlinuz:表示BIOS中的第一个硬盘的第一个逻辑分区下的boot目录下的vmlinuz文件二、grub2安装与启动1、安装ubuntu9.10时,grub默认安装在第一硬盘(hd0)的mbr,其实就是把引导文件boot.img写入硬盘的mbr,当然,用户也可以选择不写入硬盘mbr而是写入linux分区的引导扇区。启动时根据mbr所提供信息找到启动分区后,加载分区内的grub核心文件core.img和配置文件grub.cfg,进入选择菜单画面,在菜单画面,按上下箭号选择需要系统菜单项,按Enter进入选项。按e进入己选择菜单的编辑状态,在编辑状态下,由上下左右箭号来移动光标,enter键换行,ctrl+x以编辑的内容启动,ctrl+c进命令行状态,按Esc退出,回到菜单项。在需要使用额外的内核参数启动时,比如要加上acpi=off时,把光标移动到linux这一行昀后,在splash后加上一空格再输入acpi=off,然后按ctrl+x启动。按c进入命令行状态,按Tab键可查看所有可用的命令。在命令行状态,可以根据需要加载或移除相应模块,也可用来启动在菜单没有显现的的系统。比如,在第一硬盘的第一分区上装有windows xp系统,但在菜单上没显示出来,我们可以命令行状态下输入命令启动:grubset root=(hd0,1)grubchainloader +1grubboot又比如启动第二硬盘第一逻辑分区上的ubuntu系统:grubset root=(hd1,5)grublinux /boot/vmlinuzxxxxxx root=/dev/sdb5grubinitrd /boot/initrd.imgxxxxxxgrubboot其中内核vmlinuz和initrd.img的版本号可用按Tab键自动查看。2、下面介绍下在grub2中一些常用的命令1)help查看命令用法,如help search:查看search命令详细用法 2)set设置变量值,如set default=0set timeout=5set root=(hd0,3)等等需要调用变量AA的值时,使用${AA},如set root=(hd1,1),则${root}=(hd1,1) 3)default定义默认引导的操作系统。0 表示第一个操作系统,1表示第2个,依此类推 4)timeout定义在时间内用户没有按下键盘上的某个按键,自动引导default指定的操作系统。 5)root指定用于启动系统的分区。 6)insmod和rmmod加载或移除某模块,如insmod jpeginsmod pnginsmod ntfsrmmod png 等7)drivemap drivemap兼容grub的map,主要用于只能从第一硬盘(hd0)引导启动的系统如 win2000xp 2003,比如要添加第二硬盘第一分区上的xp系统: menuentry Windows XP { set root=(hd1,1) drivemap s (hd0) ${root} chainloader +1 } 8)ls列出当前的所有设备。如(hd0),(hd0,1),(hd0,5),(hd1),(hd1,1),(hd1,2)等ls l详细列出当前的所有设备。对于分区,会显示其label及uuid。ls /列出当前设为root的分区下的文件ls (hd1,1)/列出(hd1,1)分区根目录的文件 9)searchsearch f /ntldr 列出根目录里包含ntldr文件的分区,返回为分区号search l LINUX搜索label是LINUX的分区。search set f /ntldr搜索根目录包含ntldr文件的分区并设为root,注意如果多个分区含有ntldr文件,set失去作用。 10)loopbackloopback命令可用于建立回放设备,如loopback lo0 (hd1,1)/abc.iso可以使用lo0设备来访问abc.iso里的内容,比如说,可以从abc.iso里的软盘映像中启动loopback lo0 (hd1,1)/aa.isolinux (lo0)/memdiskinitrd (lo0)/abc.img要删除某一回放设备,可以使用d参数:loopback d lo0 11)pager分页显示。set pager=1显示满一页时暂停,按space继续set pager=0取消分页显示 12)linux用linux命令取代grub中的kernel命令 13)chainloader调用另一个启动器,如chainloader (hd0,1)+1调用第一硬盘第一分区引导扇区内的启动器,可以是windows或linux的启动器 14) grub2挂载软盘镜像 menuentry Boot from DOS IMG { linux16 /memdisk initrd16 /win98.img } 对非标准的1.4M和2.8M的其他镜像挂载方法,需要指定 CHS参数: menuentry Boot from IMG { linux16 /memdisk c=* h=* s=* floppy initrd16 /xxx.img } 15) grub2挂载ubuntudesktop的镜像启动进入 livecd 内存够大时(大于iso镜像)可以用 loopback,把iso文件放在某一分区根目录下: menuentry Ubuntu 10.01 LiveCD { search f s /ubuntudesktopi386.iso loopback loop /ubuntudesktopi386.iso linux (loop)/casper/vmlinuz boot=casperisoscan/filename=/ubuntudesktopi386.iso initrd (loop)/casper/initrd.lz } iso 按实际文件名修改 内存不够时,把 iso 内 casper 目录下的 vmlinuz和initrd.lz 复制出来和 iso 文件放在同一分区根目录下: menuentry Ubuntu 10.01 LiveCD { search f s /ubuntudesktopi386.iso linux /vmlinuz boot=casper isoscan/filename=/ubuntudesktopi386.iso initrd /initrd.lz }三、grub2配置文件详解grub2改用grub.cfg为配置文件,配置文件包含以下基本内容:(红色为解释部分)### BEGIN /etc/grub.d/00_header ###load_env#加载变量,如果在grubenv保存变量,则启动时装载set default=0#设置默认引导项,默认值为0insmod ext2#插入文件系统支持的模块,除了用作启动的分区外,其他分区格式可在menuentry底下再添加set root=(hd0,8)# 指定系统root分区,也就是 / 分区search nofloppy fsuuid set 2d61e5f91d2a4167a6f1b991ba00878b#指定uuid=2d61e5f91d2a4167a6f1b991ba00878b的分区为root分区,如果前面的分区号(hd0,8)的#uuid与这里的uuid一致,这两句作用一样,如果不一致,则指定uuid的起作用。if loadfont /usr/share/grub/unicode.pf2 ; then#设置终端字体,unicode.pf2支持中文字符显示set gfxmode=640x480#设置显示分辨率,默认为640x480,可用800x600,1024x768,建议跟你想设定的图片大小一致insmod gfxterm#插入终端模块gfxterm,支持中文字符显示和支持24位图像insmod vbe#插入vbe模块,GRUB2引入模块化机制,要使用它,需要在这里加入if terminal_output gfxterm ; then true ; else# For backward compatibility with versions of terminal.mod that don't# understand terminal_outputterminal gfxterm#设定grub2终端为gfxtermfifiif [ ${recordfail} = 1 ]; then set timeout=1 # 若有启动失败的记录,则菜单项不再倒计时else set timeout=10 #倒计时10秒后进按默认启动项启动fi#设定默认启动前等待时间,默认为10秒### END /etc/grub.d/00_header ###### BEGIN /etc/grub.d/05_debian_theme ###set menu_color_normal=white/black#设定菜单字体及背景颜色set menu_color_highlight=black/blue#设定选择项字体及背景颜色#如果使用默认,背景将完全被蓝色挡住了,需要修改blue为black,背景图片才能显示### END /etc/grub.d/05_debian_theme ###### BEGIN /etc/grub.d/10_linux ####10_linux为系统自动添加的当前root分区linux引导项#每个菜单项要包括menuentry双引号 和大括号{ }才完整,否则不显示菜单menuentry Ubuntu, Linux 2.6.3110generic {set quiet=1insmod ext2set root=(hd0,8)search nofloppy fsuuid set 2d61e5f91d2a4167a6f1b991ba00878b#这句与set root=(hd0,8)效果一样,可删除其一,二者不一致以这句为准linux /boot/vmlinuz2.6.3110genericroot=U
本文标题:grub2基础教程-修订版
链接地址:https://www.777doc.com/doc-5238216 .html