GRUB2

转载:http://yolila.blog.163.com/blog/static/780137022009931844499/

到 GRUB2 的时候才发现原来还有这么多旧版本的好资料,以前没有找到好文档,

好多的概念是自己经过一段时间使用之后才逐渐熟悉的,

没有想到刚开始接触 GRUB2 就发现以前版本这么多好文档。

GRUB2 又重蹈覆辙,还是找不到好的参考资料。


Boot-land.net 上的手册,我看到的第一个较为完整的:
       diddy.boot-land.net/grub4dos/Grub4dos.htmt
官方手册:
       http://www.gnu.org/software/grub/manual/
关于 Windows 的识别
       http://kbase.redhat.com/faq/docs/DOC-6864
Fedora 上的安装教程,非常不错。
http://docs.fedoraproject.org/install-guide/f11/zh-CN/html/ch-grub.html

关于 GRUB2 的:
  https://wiki.ubuntu.com/Grub2
https://help.ubuntu.com/community/Grub2
http://ubuntuforums.org/showthread.php?t=1195275
http://members.iinet.net/~herman546/p20.html
关于常用的 Custom Boot Entry
  http://members.iinet.net/~herman546/p20/GRUB2%20Configuration%20File%20Commands.html#Custom_Boot_Entries
给启动菜单添加条目的流程也变了。对于 Ubuntu 9.10 来说,它的配置文件放在 /boot/grub/grub.cfg。
但是这个文件实际上是不推荐直接修改的。对启动菜单的修改可以归结为三种:
1. 去掉 grub.cfg 的只读属性,直接修改。如前所说,不推荐;
2. 由命令 update-grub2 或者 update-grub 命令自动完成。这需要事先配置好
/etc/default/grub 和 /etc/grub.d 中的相关选项。
在 /etc/grub.d 中有相关的文件可以执行自动的内核和其他操作系统检测。不过就我的体验来看,
它连 Windows XP 也没有检测出来,实用性可想而知了。
3. 修改 /etc/grub.d/40_custom 文件,执行 update-grub 命令。
删除某个条目就不多说了,记得执行 update-grub 命令。

一、/etc/default/grub 这个文件主要处理原来 menu.lst 文件头和 kernel 的配置。

GRUB_DEFAULT = 0 默认为第一项GRUB_DEFAULT = saved 默认为
上一次启动有效的那项,
并且启动时 GRUB2 的那一项菜单会高亮显示。这个功能不太妙,
因为它需要在 /etc/grub.d/40_custom 或者其他地方
的 menuentry 条目上还添加额外的内容,比如像这样:
#! /bin/sh -e

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
. ${libdir}/grub/grub-mkconfig_lib
echo "Adding SystemRescueCD & Custom Kernel" >&2

menuentry "Jaunty 2.6.28-15-custom" {
save_default_entry | sed -e "s/^/\t/"
  set root=(hd0,7)
  linux /boot/vmlinuz-2.6.28-15-custom root=UUID=
12c55255-27b3-488b-hje7e-9dbe4e2esfg5 ro quiet splash
  initrd /boot/initrd.img-2.6.28-15-custom
}

menuentry "SystemRescue" {
  save_default_entry | sed -e "s/^/\t/"
  set root=(hd0,6)
  linux /sysrcd/rescuecd subdir=sysrcd setkmap=us
  initrd /sysrcd/initram.igz
}GRUB_DEFAULT = "xxxxxx" 使用 menuentry 里名字相同的那项做为默认的启动项。
#GRUB_HIDDEN_TIMEOUT 
最初安装 GRUB2 时,如果没有检测到其他的操作系统,那么这一行会被注释掉。
否则就会有效。
GRUB_HIDDEN_TIMEOUT = 0 不会停,直接就进去了。
可以在启动时按住 SHIFT 键强制显示启动菜单。
如果 GRUB2 检测 SHIFT 键状态失败,它允许用户按 ESC 键来显示菜单。
GRUB_HIDDEN_TIMEOUT_QUIET = true 
表示在 GRUB_HIDDEN_TIMEOUT 期间不显示计时。false 则要显示计时以下选项依赖于 
GRUB_HIDDEN_TIMEOUTGRUB_TIMEOUT = -1 不会计时了,
一直等到用户做出选择才会启动某一操作系统。
GRUB_TIMEOUT = 5 时间到了就启动默认的。在这之前如果按了键盘上的键,则会中止计时。
GRUB_DISABLE_LINUX_RECOVERY = true 可以禁止 GRUB 为内核产生 "Recovery" 模式的菜单。
GRUB_DISABLE_OS_PROBER = "true" 不检测其他的操作系统,
比如 Windows, Linux, Hurd 等。
这一项与使用命令 update-grub 时是否调用 /etc/grub.d/30_os-prober 有关。
GRUB_CMDLINE_LINUX="ro quiet splash" 放置内核启动参数的地方。
关于 CMDLINE 和 LINUX 这些配置没有看明白。再学

二、GRUB2 SPLASH IMAGE
关于 splash image 的配置信息主要放置在 /etc/grub.d/05_debian_theme 当中。参考以下文章:
http://members.iinet.net/~herman546/p20/GRUB2%20Splashimages.html
使用以下命令从 Ubuntu 软件库中安装已经制作好的图片:
  sudo apt-get install grub2-splashimages
新下载的文件放置在 /usr/share/images/grub/ 中,因为 GRUB 不能处理加密了的文件系统,
因此最好执行以下命令将这些文件移动到 /boot/grub 中:
  sudo cp /usr/share/images/grub/*.tga /boot/grub/
编辑 05_debian_theme 找到如下行,修改那个文件名为想要使用图片,注意中间的小句号:
  for i in {/boot/grub,/usr/share/images/grub}/moreblue-orbit-grub.{png,tga} ; do
然后使用命令 update-grub 更新配置文件。

可能出现的情况是,apt 包管理说找不到 grub2-splashimages 这个软件包,
可能是软件源没有同步的问题
。我们也可以手动下载它,然后根据其中的 README 的指导进行背景的更换。
一定记得 update-grub2。下载地址:
http://packages.debian.org/zh-cn/sid/grub2-splashimages
这里有 deb 下载:http://ftp.de.debian.org/debian/pool/main/g/grub2-splashimages

三、从 LiveCD 重新安装 GRUB2
首先启动到 LiveCD,找到以前安装 Ubuntu 的正确分区,可以使用命令 df -Th 辅助。
挂载 Ubuntu 分区:           sudo mount /dev/sdXY /mnt
如果 /boot 为单独的分区,则单独挂载 /boot: sudo mount /dev/sdZA /mnt/boot
将 /dev 与 /mnt/dev 上的设备文件绑定:   sudo mount --bind /dev /mnt/dev
chroot 到 /mnt:             sudo chroot /mnt
安装 GRUB2 到第 B 块硬盘:       sudo grub-install /dev/sdX
检查是否正确安装:           sudo grub-install --recheck /dev/sdX
按 Ctrl + D 退出 chroot 环境。
如果挂载了 /boot 设备则 umount 掉:     sudo umount /mnt/boot
卸载 Ubuntu 分区:           sudo umount /mnt
其他资料:http://blog.csdn.net/liyandong1204/article/details/6791561

最近很多人问到开机的grub设定问题,所以我整理一下重点,方便大家查询。
顺便厘清一些错误的用法。


要修改grub,请注意以下几个重要档案:
1. /boot/grub/grub.cfg
此档案中包含了GRUB选单资讯。
注意他的开头,说明了这是由/etc/grub.d与/etc/default/grub所生成的,不要自己编辑。
这个档案还是唯读属性,就是要避免你直接去编辑。
若是你修改了这个档案,只要更新核心,或是以指令更新grub选单,之前的修改就会被覆盖掉。
所以除非不得已,请不要去动这个档案。要修改,请继续往下看。


2. /etc/default/grub
此档案为使用者修改grub设定的主要档案,真的改烂了请不要急,
在/usr/share/grub/default/里还有一份,复制回来即可。
要修改这个档案,请输入
sudo gedit /etc/default/grub


3. /etc/grub.d目录
此目录放置档案,会在sudo update-grub时,合并到/boot/grub/grub.cfg中。
注意这些档案名称结构,前面都有数字。数字越小的,在合并时放在越前面。
常有人问到,grub menu要怎麼更改选项的顺序?就是更改数字的大小。
此外请你在这目录下输入ls -l,看一下各档案的属性,有没有看到都有x属性(可执行)?
变动x属性,可以决定这个选项要不要出现在选单内。

以下介绍/etc/default/grub所使用的参数,我只介绍大家比较会去修改到的。


1. GRUB_DEFAULT - 设定预设选单选项。有以下几种作法。
GRUB_DEFAULT=0 以位置来设定预设选单选项。第一笔选单选项为 0,
第二笔为 1,以此类推。
GRUB_DEFAULT="xxxx" 在此例中,选单中的位置不会有影响。例如:
GRUB_DEFAULT="Ubuntu, Linux 3.11.0-13-generic"。注意要完整全称。
GRUB_DEFAULT=saved 由储存预设的作业系统开机。
可以用grub-reboot和grub-set-default指令来设定预设作业系统。
预设作业系统不会由来自选单中的互动式选择而被设定。
sudo grub-set-default 0 以位置来设定预设选单选项。第一笔选单选项为 0,第二笔为 1,以此类推。
sudo grub-set-default "xxxx" 以选单名称来设定
sudo grub-reboot 0 以位置来设定下次重启开机选项。第一笔选单选项为 0,第二笔为 1,以此类推。
sudo grub-reboot "xxxx" 以选单名称来重启开机




2. GRUB_HIDDEN_TIMEOUT - 此设定用来决定GRUB选单会有多长时间不被显示。
GRUB_HIDDEN_TIMEOUT=0 在单一作业系统电脑中,会立刻以预设作业系统开机。
在只有一个作业系统状况下,这是预设的设定。假如还是要显示选单,
请在这行前加上 # 注销掉,并确认 GRUB_TIMEOUT 设定为正整数。
GRUB_HIDDEN_TIMEOUT=X x为秒数,空白画面几秒后,系统将会依照预设开机,
不会出现选单。当萤幕是空白时,使用者可以按下任何键以显示选单。

3. GRUB_HIDDEN_TIMEOUT_QUIET - 在空白画面时,是否显示倒数计时器
GRUB_HIDDEN_TIMEOUT_QUIET=true '不'显示计时器
GRUB_HIDDEN_TIMEOUT_QUIET=fault 显示计时器




4. GRUB_TIMEOUT - 选单显示多久之后自动以预设作业系统开机
GRUB_TIMEOUT=10 10秒后以预设系统开机
GRUB_TIMEOUT=-1 持续显示选单,直到使用者选择




5. GRUB_GFXMODE - 设定grub选单显示的解析度。一般是注解掉。
GRUB_GFXMODE=640x480 以640x480模式显示。
除非开机时选单显示就有问题,不然不要启用这个参数,据说会影响进入grub选单的时间。
真的要启用,后面的数值请依照你显卡可以支援的模式填入,如1280x1024x16,800x600x24,640x480




6. GRUB_DISABLE_LINUX_RECOVERY - 救援模式要不要显示?
你在选单中是不是都有看到救援模式(recovery mode)?假如你的电脑一向稳定,
而且你不太会去动到系统,可以考虑去除 # 注解
GRUB_DISABLE_LINUX_RECOVERY=true '不' 显示救援模式




7. GRUB_DISABLE_OS_PROBER - 对其他分割区作业系统的检查
大家应该都知道sudo update-grub可以找到在其他分割区的作业系统,制成选单
。但有时我就是不想要他显示到选单内,那怎麼办?那注销掉这一行就可以不检查其他分割区有没有作业系统。
GRUB_DISABLE_OS_PROBER=true '不'检查其他作业系统




8. GRUB_BACKGROUND - 背景影像所在。这个参数,需要自行加入。
GRUB_BACKGROUND=</usr/share/background/xxx.jpg>
以/usr/share/background/xxx.jpg当作选单背景。
可以.png, .jpg, 或.tga等格式


还有其他参数,若有兴趣请参照
https://help.ubuntu.com/community/Grub2/Setup#Editing_grub.cfg_directly
(话说,想要进阶高手,会点英文找资料会比较容易)

以下介绍/etc/grub.d目录下的档案。这些档案内都有很清楚的注解,
但都是英文的,不过不需要很强的英文能力。难的是你必须要有撰写修改scripts的能力。基本上,这些档案大多都不需要去修改。


1. 00_header - 设定初始显示项目
前一段介绍了/etc/default/grub的设定,就是由这一部份来负责,所以你不需要更动这个档案。




2. 05_debian_theme - 布景主题
设定开机影像、文字颜色、高亮度选项及布景主题。在没有开机影像的情况下,
此档案会设定一个单色的布景主题来显示初始选单画面。在之前/etc/default/grub已经介绍过GRUB_BACKGROUND参数,若有设定,则在00_header就已经先载入了,所以优先性高於在此设定。
个人有点小看法,开机越快越好,在这个选单背景下功夫,不如想办法加快流程。而且这个步骤停留时间不长,实在吸引不了什麼目光...




3. 10_linux - 指定目前使用中的Linux作业系统核心位置
用来建立这些linux不同核心显示在选单中的名称。若您不想要所有的旧核心版本全都显示在选单中,请移除旧核心。




4. 20_memtest86+ - 搜寻 /boot/memtest86+.bin
memtest86+ 主要是进行记忆体测试。你会常用到吗?假如用不到,不用移除,只要拿掉x属性即可不再出现在选单当中。请输入:
sudo chmod -x /etc/grub.d/20_memtest86+




5. 30_os-prober - 此档案使用 os-prober 来搜寻其他分割区的作业系统。
结果将会依据此档案中的内容而放至 grub.cfg 中
此档案被划分成四个段落,代表四种作业系统类型:Windows, Linux, OSX 和 Hurd。假如你要去修改这个档案了,'
那你必须熟悉scripts的撰写。




6. 40_costom - 用来加入自订选单选项的样板
会在执行 update-grub 时,嵌入至 grub.cfg 中。




既然不怎麼需要作修改,那知道这个目录有什麼用?就像最早简介中所述:更改数字,
可以改变顺序,小的在前面,大的在后面;更改x属性,可以决定要不要在选单中出现。


如,你想要windows系统出现在前面,你可以把os-prober的数字改成07,他就会出现在现有的linux前面。
如,你不想要出现memtest86+,就把x属性拿掉。


再一个更复杂的状况,除了现有的ubuntu外,你还有fedora与windows7在其他分割区,
而你希望出现的顺序为windows7, fedora, ubuntu,你可以把os-prober的数字改成07,
并且把里面关於windows的scripts放在前面。
所有对於/etc/default/grub与/etc/grub.d的更改,必须以下列的指令来生效
sudo update-grub
以上链接:http://tieba.baidu.com/p/2705458099

这个指令会重新做出/boot/grub/grub.cfg,下次开机时,就会呈现出新的选单。




若想了解更多,请参阅以下参考资料:
https://help.ubuntu.com/community/Grub2
https://help.ubuntu.com/community/Grub2/Setup



  • 0
    点赞
  • 0
    收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值