admin管理员组

文章数量:1531363

2024年6月30日发(作者:)

如何永久XP默认启动,3秒倒计时(即使更新Grub后还是如此)详解

Ubuntu9.10 Grub2

在 早期的Ubuntu中,使用Grub作为系统的启动引导程序,想修改系统启动

项非常简单,只要用gedit打开系统菜单设定文件( sudo

gedit /boot/grub/ ),修改该文件中到内容即可,但是到了Grub

2中,不能采用这种方式修改系统启动项了。

由于ylmfos3.0用leafpad替代了gedit,可以输入

sudo leafpad /boot/grub/ (注意空格)

有人问找不到sudo gedit/boot/grub/,无语。。。

习惯windows的朋友可以双击桌面上我的电脑(或我的文档),切换到根目录,

什么是根目录?就是“文件系统” /

找到boot,双击,再找到grub双击,再找到,右键-以管理员身份打

开,这下该会了吧。

什么?还是不能修改?把的只读属性取消?

怎么取消只读属性?

右键,属性,把只读前的勾去掉)

Grub 2特性

Grub 2(GRand Unified Bootloader, version 2)是Grub的第二版。Grub

2对Grub的接口进行了完整到重写,基于PUPA(详细介绍)项目到研究,Grub

2更模块化并且更方便扩展,Grub 2的一些提升如下:

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

启动项目定义修改分区命名

Grub 2结构

Grub 2包含下面几个部分:

/boot/grub/ 文件/etc/grub.d/ 文件夹/etc/default/grub

文件

下面开始一个个介绍。

类似Grub中的 /boot/grub/。里面的格式于

差不多,但是现在不允许你通过直接修改该文件到方式来修改启动项,因为该文

件是在 执行“update-grub”或者"update-grub2”之后,根据上面说到

2、3两项动态生成到,也就是说,如果你修改了这 个文件当下次这两个命令被

执行了,你修改到内容就会背覆盖。我发现这两个命令应该经常会自动执行的,

因为上次我修改了启动画面的背景,需要通过这两个命令 重新生成,

但是后来我忘了用这两个命令,所以背景一直没有生效,当时还很纳闷,不知道

怎么回事,不过今天开机用了会儿,系统又更新,装完 之后重启就 好了,然后

我突然想到上次可能忘了执行这命令了,没想到系统更新会自动执行,:)。

文件中主要包含两个部分,一部分是各个启动项的定义,第二部分是

启动界面的设置。你可以直接用gedit打开该文件看其中的内容。既然

不能修改,那也没什么好详细说的了,稍微研究下就能看懂里面是怎么写的。下

面就介绍一下Grub 2的另外两个部分。

Grub 2的另外两部分内容其实就分别对应于中的两部分内容。首先

2. /etc/grub.d/ 文件夹中定义各个启动项,其中的文件代表了一个或多个启动

项,命名规范都是“两个数字_名称”,前面的两位数字确定这个或这多个启动项

在启动界面的位置, 默认的 “00_“是预留给“00_header“的,“10_"

是预留给当前系统内核的,"20_"是 预留给第三方程序的,除了

这些你都可以使用,增加自己的,比如 05_ , 15_,数字越小越前面。这里的

文件好像是代码,我还没研究透,不会自己写,只会改,:(,要加油学习了。

当执行前面说的“update-grub”或 者"update-grub2”命令之后,这个

文件夹中的文件就是用于生成 中启动项的定义的。

Grub 2的最后一部分是 3. /etc/default/grub 文件,该文件主要是启动界面

的配置,比如默认的启动项,等待用户选择启动项的时间等。文件内容很简单,

就是一些键值对,详细的可配置属性可以参考Grub 2的Wiki中“grub

(/etc/default/grub)”这一节。当执行前面说的“update-grub”或者

"update-grub2”命令之后,这个文件的内容就用于生成 中启

动界面的设置。

总结

好了,通过上面的介绍,应该对Grub 2有些了解了,聪明的你应该想到要怎么

修改默认启动项了,有下面三种方法:

根据以前修改 /boot/grub/ 的方法那样直接修改已经生成好

的 /boot/grub/。这个方法的优点是简单,缺点是修改之后会

被"update-grub"命 令覆盖掉。修改 /etc/grub.d/ 中启

动项的顺序,将你想要默认启动的项顺序设置为较小的值。优点是修改不

会被"update-grub"命令覆盖 掉,好像没啥缺电,只有另

外的程序修改为比你的值更小了才会成为默认启动。修改

/etc/default/grub 中默认的启动项,设置该文件中 GRUB_DEFAULT

为你想要的值,这个值是生成的 中各个启动项的从0开始的

下标。该方法优点是修改不会被"update-grub"命令覆盖,

缺电是当启动项的顺序 变化之后,下标也就变了。。。

示例

在写这篇文章的时候,我的环境是这样的:安装了Ubuntu 9.10,内核是Linux

2.6.31-14,后来两次更新之后变成Linux 2.6.31-16,在安装Ubuntu之前

是用win7的,现在是双系统,现在的启动项有(根据已经生成的

/boot/grub/得到):

"Ubuntu, Linux 2.6.31-16-generic""Ubuntu,

Linux 2.6.31-16-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)"

呵 呵,好多,我本来想根据第二种方法先删掉几个启动项的,不过想想以后可

能还是会用到的,就先留着吧,所以采用第三种方法修改。现在在

/boot/grub/ 有这么一行“set default="0"”,注意这

里的下标是从0开始的,相当于我现在的默认启动项是上面的第一个“Ubuntu,

Linux 2.6.31-16-generic”,我要改为默认启动win7,所以应该将默认启动

项改为 8,用下面的命令调出gedit。

[blockquote]sudo gedit /etc/default/grub

[/blockquote]修改/etc/default/grub中GRUB_DEFAULT=0为

GRUB_DEFAULT=8。

用下面的命令重新生成 /boot/grub/:

[blockquote]sudo update-grub

[/blockquote]执行后显示:

[blockquote]rextu@rextu-laptop:/etc/default$ sudo update-grub

Generating ...

Found Debian background:

Found linux image: /boot/vmlinuz-2.6.31-16-generic

Found initrd image: /boot/-2.6.31-16-generic

Found linux image: /boot/vmlinuz-2.6.31-15-generic

Found initrd image: /boot/-2.6.31-15-generic

Found linux image: /boot/vmlinuz-2.6.31-14-generic

Found initrd image: /boot/-2.6.31-14-generic

Found memtest86+ image: /boot/memtest86+.bin

Found Windows 7 (loader) on /dev/sda1

done

[/blockquote]这时候在执行:

[blockquote]sudo gedit /boot/grub/

[/blockquote]可以看到其中的set default="0"已经变成set

default="8"了。大功告成,restart,哈哈。

以上是转载 。

下面是我实现上文所讲述的第2种方法修改启动项:

终端输入:cd /etc/grub.d

ls

我的文件是这样的:00_header 05_debian_theme 10_linux

20_os-prober40_custom README

其中:10_linux就是我们当前使用的操作系统,20_os-prober的作用是自动

查找计算机的其他系统,比如我的就是windows xp,我们只要执行命令:sudo

mv 20_os-prober 06_os-prober,这样,以后grub再次更新时,XP就默

认在linux前启动了。

然后,我们再修改sudo gedit/etc/default/grub

将GRUB_TIMEOUT=10,修改为GRUB_TIMEOUT=3 或者你喜欢的时间,

之后每次更新grub,就是3秒倒计时了。终端输入:sudo update-grub 看看效

果吧,这样以后每次更新grub,都是默认XP启动,3秒倒计时。

至于第一种方法的实现,论坛已经有帖子了,见:

/?tid=1494686

本文标签: 修改启动项启动