如何修改Ubuntu 9.10的系统启动项grub2

在早期的Ubuntu中,想修改系统启动项非常简单,只要用gedit打开系统菜单设定文件(sudo gedit /boot/grub/menu.lst ),修改该文件中到内容即可,但是在Ubuntu 9.10中使用的是Grub 2,就不能采用这种方式修改系统启动项了。

Grub 2特性

Grub 2(GRand Unified Bootloader, version 2)是Grub的第二版。Grub 2对Grub的接口进行了完全的重写,基于PUPA(详细介绍)项目的研究,Grub 2更模块化并且更容易扩展,Grub 2的一些提升如下:

具有图形化界面,支持主题。
模块化加载。
夸平台的兼容性。
支持脚本。

自定义的启动项目定义。

修改分区命名。


Grub 2结构

Grub 2包含下面几个部分:


1. /boot/grub/grub.cfg 文件

2. /etc/grub.d/ 文件夹

3. /etc/default/grub 文件


grub.cfg类似Grub中的 /boot/grub/menu.lst。里面的格式于menu.lst差不多,但是现在不允许你通过直接修改该文件到方式来修改启动项,因为该文件是在 执行“update-grub”或者”update-grub2”之后,根据上面说到2、3两项动态生成到,也就是说,如果你修改了这个文件当下次这两个命令被执行了,你修改到内容就会背覆盖。在更新系统时,这两个命令会自动执行的。grub.cfg文件中主要包含两个部分,一部分是各个启动项的定义,第二部分是启动界面的设置。你可以直接用gedit打开该文件看其中的内容。既然grub.cfg不能修改,那也没什么好详细说的了,稍微研究下就能看懂里面是怎么写的。

Grub 2的另外两部分内容其实就分别对应于grub.cfg中的两部分内容。

首先 2. /etc/grub.d/ 文件夹中定义各个启动项,其中的文件代表了一个或多个启动项,命名规范都是“两个数字_名称”,前面的两位数字确定这个或这多个启动项在启动界面的位置,默认的 “00_“是预留给“00_header“的,“10_”是预留给当前系统内核的,”20_”是预留给第三方程序的,除了这些你都可以使用,增加自己的,比如 05_ , 15_,数字越小越前面。当执行前面说的“update-grub”或者”update-grub2”命令之后,这个文件夹中的文件就是用于生成 grub.cfg 中启动项的定义的,并且是用shell写的。


Grub 2的最后一部分是 3. /etc/default/grub 文件,该文件主要是启动界面的配置,比如默认的启动项,等待用户选择启动项的时间等。文件内容很简单,就是一些键值对,详细的可配置属性可以参考Grub 2的Wiki中“grub (/etc/default/grub)”这一节。当执行前面说的“update-grub”或者”update-grub2”命令之后,这个文件的内容就用于生成 grub.cfg 中启动界面的设置。

修改配置

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


1、根据以前修改 /boot/grub/menu.lst 的方法那样直接修改已经生成好的 /boot/grub/grub.cfg。

这个方法的优点是简单,缺点是修改之后会被”update-grub”命令覆盖掉。

2、修改 /etc/grub.d/ 中启动项的顺序,将你想要默认启动的项顺序设置为较小的值。

优点是修改不会被”update-grub”命令覆盖掉,好像没啥缺点,只有另外的程序修改为比你的值更小了才会成为默认启动。

3、修改 /etc/default/grub 中默认的启动项,设置该文件中 GRUB_DEFAULT 为你想要的值,这个值是生成的 grub.cfg 中各个启动项的从0开始的下标。

该方法优点是修改不会被”update-grub”命令覆盖,缺电是当启动项的顺序变化之后,下标也就变了…


示例

在写这篇文章的时候,我的环境是这样的:安装了Ubuntu 9.10,内核是Linux 2.6.31-14,后来两次更新之后变成Linux 2.6.31-17,在安装Ubuntu之前是用win7的,现在是双系统,现在的启动项有(根据已经生成的 /boot/grub/grub.cfg得到):

"Ubuntu, Linux 2.6.31-17-generic"
"Ubuntu, Linux 2.6.31-17-generic (recovery mode)"
"Ubuntu, Linux 2.6.31-15-generic"
"Ubuntu, Linux 2.6.31-15-generic (recovery mode)"
"Ubuntu, Linux 2.6.31-14-generic"
"Ubuntu, Linux 2.6.31-14-generic (recovery mode)"
"Memory test (memtest86+)"
"Memory test (memtest86+, serial console 115200)"

"Windows 7 (loader) (on /dev/sda1)"


可以使用apt-get remove linux-image-2.6.31-xx-generic 删除linux的旧核心。

现在在 /boot/grub/grub.cfg 有这么一行”set default=”0″”,注意这里的下标是从0开始的,相当于我现在的默认启动项是上面的第一个”Ubuntu, Linux 2.6.31-17-generic”,要改为默认启动win7,所以应该将默认启动项改为 8,用下面的命令调出gedit。

$ sudo gedit /etc/default/grub

修改/etc/default/grub中GRUB_DEFAULT=0为GRUB_DEFAULT=8。用下面的命令重新生成 /boot/grub/grub.cfg:

$ sudo update-grub

执行后显示:

macro@macro-laptop:/etc/default$ sudo update-grub

Generating grub.cfg ...
Found Debian background: moreblue-orbit-grub.png
Found linux image: /boot/vmlinuz-2.6.31-17-generic
Found initrd image: /boot/initrd.img-2.6.31-17-generic
Found linux image: /boot/vmlinuz-2.6.31-15-generic
Found initrd image: /boot/initrd.img-2.6.31-15-generic
Found linux image: /boot/vmlinuz-2.6.31-14-generic
Found initrd image: /boot/initrd.img-2.6.31-14-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Windows 7 (loader) on /dev/sda1

done

这时候再查看:


$ sudo gedit /boot/grub/grub.cfg

可以看到其中的set default=”0″已经变成set default=”8″了。大功告成,restart。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值