如何修改ubuntu 的Grub来修改启动项

最近给服务器安装了Xen,需要修改grub启动项,正好借此机会来学习一下。


基本文件


在ubuntu中不能通过修改menu.lst文件来修改启动配置了,grub2主要包含
   1.   /boot/grub/grub.cfg 文件
   2.   /etc/grub.d/ 文件夹

   3.   /etc/default/grub 文件


grub.cfg就是就是配置选项,类似于menu.lst,里面的格式与menu.lst差不多。但是我们不能通过直接修改这个文件来修改配置。

grub.cfg的文件中包含了两部分的内容,一部分是各个启动项的定义,第二部分是启动界面的设置。


功能介绍

/etc/grub.d/文件夹中定义的各个启动项,其中的文件夹代表了一个或者多个启动项,使用的命名规范都是“两个数字_名称”,前面的两个数字确定这个或者这多个启动项在启动 界面中的位置,默认的“00_"是预给”00_header"的,“10_"是预留给当前系统内核的,"20_"是预留给第三方程序的,除了这些你都可以使用,增加自己的,比如"05_"数字越小的越前面。

/etc/default/gurb文件,该文件主要是启动界面配置,比如默认的启动项,等待用户的选择时间等。

好了,通过上面的介绍,应该对Grub 2有些了解了,聪明的你应该想到要怎么修改默认启动项了,有下面三种方法:

•根据以前修改 /boot/grub/menu.lst 的方法那样直接修改已经生成好的 /boot/grub/grub.cfg。这个方法的优点是简单,缺点是修改之后会被”update-grub”命令覆盖掉。 

•修改 /etc/grub.d/ 中启动项的顺序,将你想要默认启动的项顺序设置为较小的值。优点是修改不会被”update-grub”命令覆盖掉,好像没啥缺电,只有另外的程序修改为比你的值更小了才会成为默认启动。 


•修改 /etc/default/grub 中默认的启动项,设置该文件中 GRUB_DEFAULT 为你想要的值,这个值是生成的 grub.cfg 中各个启动项的从0开始的下标。该方法优点是修改不会被”update-grub”命令覆盖,缺点是当启动项的顺序变化之后,下标也就变了。

示例:


拿最简单最常用的开启启动项默认选择顺序和选择等待时间为例,比如,我要启动xen修改过的内核。
    1.vim  /etc/default/grub
    2. 把GRUB_DEFAULT= 和 GRUB_TIMEOUT= 两个字符串后面的数字改为我们自己想要的并保存关闭
怎样得到需要启动系统的顺序呢,可以通过根据已经生成的 /boot/grub/grub.cfg得到。
这是我的现有启动项:
0 Ubuntu,Linux 3.2.0-27-generic
1 Ubuntu,Linux 3.2.0-27-generic (恢复模式)
2 submenu "Previous Linux versions":
#这是子项
Ubuntu,Linux 3.0.0-23-server
Ubuntu,Linux 3.0.0-23-server (恢复模式)
Ubuntu,Linux 3.0.0-12-server
Ubuntu,Linux 3.0.0-12-server (恢复模式)
3 Ubuntu GNU/Linux,Xen 4.1-amd64 和 Linux 3.2.0-27-generic
Ubuntu GNU/Linux,Xen 4.1-amd64 和 Linux 3.2.0-27-generic (恢复模式)
Ubuntu GNU/Linux,Xen 4.1-amd64 和 Linux 3.0.0-23-server
Ubuntu GNU/Linux,Xen 4.1-amd64 和 Linux 3.0.0-23-server (恢复模式)
Ubuntu GNU/Linux,Xen 4.1-amd64 和 Linux 3.0.0-12-server
Ubuntu GNU/Linux,Xen 4.1-amd64 和 Linux 3.0.0-12-server (恢复模式)
Memory test (memtest86+)
Memory test (memtest86+, serial console 115200)


但是:submenu "Previous Linux versions"中的系统都属于2,xen是个编号为3.所以修改GRUB_DEFAULT=3。

    3. 最后sudo update-grub 不要忘记了。


最简单的做法:

其实个人觉的最简单的是直接阅读/boot/grub/grub.cfg的内容。

查找关键字menuentry。内核的顺序就是menuentry的顺序。你可能会看到:

if [ "${linux_gfx_mode}" != "text" ]; then load_video; fi
menuentry 'Ubuntu,Linux 3.5.0-rc1+' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        gfxmode $linux_gfx_mode
        insmod gzio
        insmod part_gpt
        insmod ext2
        set root='(hd0,gpt2)'
        search --no-floppy --fs-uuid --set=root 47caf968-871e-40da-b292-7d5683ef3e94
        linux   /vmlinuz-3.5.0-rc1+ root=/dev/mapper/ubuntu-root ro   
        initrd  /initrd.img-3.5.0-rc1+
}
menuentry 'Ubuntu,Linux 3.5.0-rc1+ (恢复模式)' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        insmod gzio
        insmod part_gpt
        insmod ext2
        set root='(hd0,gpt2)'
        search --no-floppy --fs-uuid --set=root 47caf968-871e-40da-b292-7d5683ef3e94
        echo    '载入 Linux 3.5.0-rc1+ ...'
        linux   /vmlinuz-3.5.0-rc1+ root=/dev/mapper/ubuntu-root ro recovery nomodeset 
        echo    '载入初始化内存盘...'
        initrd  /initrd.img-3.5.0-rc1+
}
submenu "Previous Linux versions" {
menuentry 'Ubuntu,Linux 3.2.0-27-generic' --class ubuntu --class gnu-linux --class gnu --class os {
        recordfail
        gfxmode $linux_gfx_mode
        insmod gzio
        insmod part_gpt
        insmod ext2
        set root='(hd0,gpt2)'
        search --no-floppy --fs-uuid --set=root 47caf968-871e-40da-b292-7d5683ef3e94

出现了submenu就说明里面包含子菜单。

例如

1.直接进入主菜单的某个内核

我要启动linux 3.5.0-rc1+,它是主菜单的第一个。我就修改这个文件中的set default="0"(注意,要取得写得权利)。

或者直接修改 /etc/default/grub中的GRUB_DEFAULT="0"(这样就要执行update-grub)

2.使用">"进入子菜单

我要启动

Ubuntu,Linux 3.2.0-27-generic可以看出,它属于排在主菜单第三位的submenu的子菜单的第一个。所以就修改这个文件中的set default="2>0"(注意,要取得写得权利)。

或者直接修改 /etc/default/grub中的GRUB_DEFAULT="2>0"(这样就要执行update-grub)。



参考文献:
http://www.360doc.com/content/10/0806/00/2369031_43985480.shtml
http://wenku.baidu.com/view/96a6b14f2b160b4e767fcffe.html###

https://help.ubuntu.com/community/Grub2

很详细的解释:http://www.tudou.com/home/diary_v3885358.html


  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Win11和Ubuntu是两个常用的操作系统,而Grub是一个用于管理双系统启动的工具。如果你想对Grub进行美化,实现双系统启动界面的美化,你可以按照以下步骤进行操作: 第一步,打开Ubuntu系统。在终端中输入以下命令以安装Grub的图形界面编辑工具: sudo add-apt-repository ppa:bean123ch/grub-customizer sudo apt-get update sudo apt-get install grub-customizer 第二步,安装完成后,在应用程序菜单中搜索“Grub Customizer”并打开。 第三步,通过Grub Customizer工具,你可以对Grub的启动菜单进行各种设置。你可以通过更改背景图片、添加主题和自定义菜单项等方式来实现界面美化。你可以选择一个符合自己口味的背景图片,然后应用到Grub启动界面上。 第四步,如果你想进一步美化Grub的启动菜单,你可以选择安装一些第三方主题。你可以在互联网上搜索并下载适用于Grub的主题,然后在Grub Customizer中进行安装和启用。 第五步,完成所有设置后,点击“保存”按钮,然后退出Grub Customizer。 第六步,在重新启动计算机后,你应该能看到美化后的Grub启动界面。你可以通过箭头键来选择不同的操作系统启动项,并按下回车键来启动你想要的系统。 总结起来,通过安装Grub Customizer工具并对Grub启动菜单进行设置,你可以实现Win11和Ubuntu双系统启动界面的美化。希望以上的步骤对你有帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值