个人主机说明,安装ubuntu12.04系统,内核为linux ubuntu 3.2.0.77 ,为学习内核编译,重新从官网下载新的linux内核,版本号为linux 3.2.68,纯粹为学习编译内核。
按教程进行一大堆设置,编译,编译内核,编译模块,安装内核和模块,最后启动。
问题:启动后直接进入linux3.2.68,因为内核项未加载全,键盘无法使用,只能进入界面,提示输入密码,无外界输入方法,到此停止不能前进。
解决办法:重新进入grub引导,修改默认引导项,进入原来的linux3.2.0.77内核。
具体操作:
开机按esc或shift进入恢复模式,(有的系统grub.cfg设置timeout=-1,直接进入系统,按此方法处理),选择linux3.2.0.77进入原有系统;
有的系统则一开机就进入grub选项,选择linux3.2.0.77进入原有系统,然后重新设置grub.cfg
具体方法见下。
方法一,摘自:http://blog.csdn.net/blueln/article/details/6751991
现在玩Linux的人大多数都安装有双系统,而且经常使用的是windows,可是grub默认的启动是Linux,每次要手动选择,显得很麻烦,这里,我就教大家如果修改启动菜单,将windows设为第一启动项。
方法一:手动设置
备份原有grub启动信息
- sudo cp /boot/grub/grub.cfg /boot/grub/grub/cfg_backup
- sudo gedit /boot/grub/grub.cfg
![](http://hi.csdn.net/attachment/201109/6/0_1315267743DJA4.gif)
如上图所示,找到set default="0"一项,将0修改为你要设置的启动项, default=”0″后面的数值0是第一个选择项,如果分别改成1、2、3、4的话,则分别把默认启动的选择项放在第二、三、四、五个选择项上面。一般为4。
![](http://hi.csdn.net/attachment/201109/6/0_1315267787vV4A.gif)
找到timeout=”10″后面的数值10则表示选择引导条的默认倒计时为10秒,当然,这个数值可以改得更大,比如20、30什么的,不过如果把数值改成负1,即“-1”的话,在开机看到grub选择项时没有倒计时,直到选择了所要启动的引导条并回车才能进入系统
修改保存,重启就可以了。
在早期的一些Ubuntu版本下,修改grub的引导顺序的方法如下:
配置文件不在grub.cfg,而是在menu.lst中,其他修改信息照上文设置即可。
方法二,摘自http://blog.csdn.net/zhu_liangwei/article/details/7847034
需要修改grub启动项,正好借此机会来学习一下。
基本文件
1. /boot/grub/grub.cfg 文件
2. /etc/grub.d/ 文件夹
3. /etc/default/grub 文件
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”命令覆盖掉,好像没啥缺电,只有另外的程序修改为比你的值更小了才会成为默认启动。
示例:
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
删除多余启动项方法:
1 最简单方法,装个软件,图形化操作。
sudo apt-get install startupmanager
安装启动项管理器
系统——系统管理——启动项管理器,后面不解释。然后会自动按照配置修改grub.cfg文件了。
2
然而,grub修改开机启动菜单,会自动把最新的Ubuntu放在第一位,把Windows放在最后一个。我们经常希望把Windows调整到靠前的位置,可能还会修改默认的启动项和等待时间等。解决方案如下:
1.找到grub配置,打开配置文档,在终端里输入命令:
sudo gedit /boot/grub/grub.cfg
2.修改grub配置
set default="0":表示默认的启动项,“0”表示第一个,依次类推。
set timeout=10:表示默认等待时间,单位是秒。
找到windows的启动项,剪切复制到所有Ubuntu启动项之前,例如:
### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os {
}
### END /etc/grub.d/30_os-prober ###
3.保存并退出。
最后,重新启动机器,一切将变得如你所愿。
很多用户一般都会选择Windows + Ubuntu的双系统。用得时间久了,随着Ubuntu内核的不断升级,开机启动菜单会变得越来越臃肿。下面简单介绍一下如何删除开机启动菜单多余的内核(旧版本),以及如何调整不同操作系统的启动顺序。
Ubuntu是由grub引导启动的。每当Ubuntu升级到新的版本后,grub会自动调整开机启动菜单的顺序,把新的内核放在启动菜单的开始,同时也不会删除久的内核版本。这样,当Ubuntu的升级次数一多,启动菜单中将变得非常臃肿。而且那些旧版本的内核基本不会用,不如删除之。解决方案如下:
1.找出系统已经安装的内核版本,在终端里输入命令:
dpkg --get-selections | grep linux-image
然后会显示系统中已安装的内核,例如:
linux-image-2.6.38-10-generic
linux-image-2.6.38-8-generic
linux-image-2.6.35-22-generic
linux-image-generic
2.卸载旧的内核版本,在终端里输入命令:
sudo apt-get remove linux-image-2.6.35-22-generic
上面命令和含义是:
dpkg --get-selections [<表达式> ...] 把已选中的软件包列表打印到标准输出;
grep linux-image 匹配查找;
uname -a 查看已安装的linux内核版。
这样,旧的内核版本就删除了。