为什么80%的码农都做不了架构师?>>>
grub的配置文件在/boot/grub/grub.conf。/etc/grub.conf和/boot/grub/menu.lst都是指向这个文件的软连接。
grub启动时,会寻找menu.lst文件,如果找不到,则进入grub>交互界面。这时就需要我们手动指定kernel和img文件地址了。用到的基本参数是root、kernel、initrd。
我们也可以在grub启动的时候,用a/e键临时编辑参数(不会修改grub.conf文件)。内容如:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/mapper/VolGroup-LogVol01
# initrd /initrd-[generic-]version.img
#boot=/dev/vda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.32-279.14.1.el6.x86_64)root (hd0,0)kernel /vmlinuz-2.6.32-279.14.1.el6.x86_64 ro root=/dev/mapper/VolGroup-LogVol01 rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD quiet rd_LVM_LV=VolGroup/LogVol01 SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM console=ttyS0initrd /initramfs-2.6.32-279.14.1.el6.x86_64.img
title Red Hat Enterprise Linux (2.6.32-220.el6.x86_64)root (hd0,0)kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=/dev/mapper/VolGroup-LogVol01 rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD quiet rd_LVM_LV=VolGroup/LogVol01 SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM console=ttyS0initrd /initramfs-2.6.32-220.el6.x86_64.img
~
一、非核心参数。
1, 配置参数default。
这个参数决定grub光标默认停留的引导标签。default=0,光标停留在第一个引导标签上;default=1,光标停留在第二个引导标签上。
2, 配置参数timeout。
这个参数设置grub等待时间。单位为秒。
3, splashimage
这个参数设置grub引导界面的背景图位置。如需要自己设置,制作一张XPM图,然后将图片压缩成gz格式。
如果把这个参数删除,grub引导界面会变成普通的黑底白字,和NT loader一样。
4, 配置单数title。
很显然是grub引导界面的标题。
5, 配置参数password
通过修改grub启动参数,可以轻松进入单用户模式,修改root密码。所以设置password保护grub界面。
二、核心参数(root, kernel, initrd)
root (hd0,0)
表示第一个硬盘,第一个分区。这里的root和Linux系统里的root用户不是一回事。 在 Linux 中,当谈到 "root" 文件系统时,通常是指主 Linux 分区。但是,GRUB 有它自己的 root 分区定义。GRUB 的 root 分区是保存 Linux 内核的分区。这可能是您的正式 root 文件系统,也可能不是。我们讨论的是 GRUB,需要指定 GRUB 的 root 分区。进入 root 分区时,GRUB 将把这个分区安装成只读型,这样就可以从该分区中装入 Linux 内核。GRUB 的一个很“酷”的功能是它可以读取本机的 FAT、FFS、minix、ext2 和 ReiserFS 分区.到目前为止,您可能会感到一点疑惑,因为 GRUB 所使用的硬盘/分区命名约定与 Linux 使用的命名约定不同。在Linux 中,第一个硬盘的第五个分区称作 "hda5"。而 GRUB 把这个分区称作 "(hd0,4)"。GRUB 对硬盘和分区的编号都是从 0 开始计算。另外,硬盘和分区都用逗号分隔,整个表达式用括号括起。现在,可以发现如果要引导 Linux 硬盘 hda5,应输入 "root (hd0,4)"。
kernel /vmlinuz-2.6.32-279.14.1.el6.x86_64 ro root=/dev/mapper/VolGroup-LogVol01 rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD quiet rd_LVM_LV=VolGroup/LogVol01 SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM console=ttyS0
注意:
指定内核的位置。后面跟的是参数。有时候,我们需要打开Linux的串行接口ttyS0,则要在这行的最后面跟上这个参数。console=ttyS0,
在这行末尾添加上single,或者在grub互交环境下在kernel命令最末尾添上 single则,系统会登陆到单用户模式。
initrd /initramfs-2.6.32-220.el6.x86_64.img
用来初始的linux image,并设置相应的参数。 命令map:当你有两块硬盘,一个无法从第二块硬盘启动的操作系统,例如Windowsxp,就可以使用map命令.你能够将hd0映射为hd1,将hd1映射为hd0。换句话说,你可以虚拟的交换两个硬盘而启动所需要的操作系统 。命令形式如下:
grub> map (hd0) (hd1)
grub> map (hd1) (hd0)
GRUB 使用了“链式装入器”(chainloader)。链式装入器从分区 (hd1,0) 的引导记录中装入winxp自己的引导装入器,然后引导它。这就是这种技术叫做链式装入的原因 -- 它创建了一个从引导装入器到另一个的链。这种链式装入技术可以用于引导任何版本的 DOS 或 Windows。
GRUB的配置文件要简单就这么简单,如果你要更个性化一点,试一试把“color light-gray/blue ”加在default语句的下面,下一次启动GRUB时,看看有什么变化,再试一试“color light-blue/red",惊喜吗? 有趣吧! )
三、grub的交互性。
如果需要在Linux登陆的时候,临时修改grub。则键入e,选择kernel后,再键入e。为kernel命令添加参数。
参考资料:
http://wenku.baidu.com/view/dafafe707fd5360cba1adb58.html
http://www.eliteblog.cn/user/shavie/GRUB-BOOT-CHAINLOADER-MBR.html
http://tech.ccidnet.com/art/3089/20070419/1065507_1.html