需求:
配置Caffe需要配置显卡驱动和cuda等一堆东西。如果更新到了新内核,这些环境可能会没有配置好。于是要用Caffe还得用原来的内核来启动Ubuntu。
但旧的内核Ubuntu的启动项会放在“Previous Version”里面,这样很不方便。于是需要调整下启动项顺序,让系统默认启动旧的内核。
方法:
- 确认目前系统下安装的内核版本:
1
dpkg dpkg --get-selections |grep linux-image
我的有:1
2
3
4
5linux-image-3.8.0-29-generic install
linux-image-3.8.0-30-generic install
linux-image-3.8.0-31-generic install
linux-image-3.8.0-33-generic install
linux-image-3.8.0-34-generic install
比如我找到我想默认启动是33版本的内核。
- 修改启动项顺序,这个需要配置grub,打开grub的配置文件
sudo gedit /boot/grub/grub.cfg
之后找到33内核相关的行:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23menuentry 'Ubuntu, with Linux 3.8.0-33-generic' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
gfxmode $linux_gfx_mode
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root f80f33c8-2270-4d2e-8311-5e4cf4874e19
linux /boot/vmlinuz-3.8.0-33-generic root=UUID=f80f33c8-2270-4d2e-8311-5e4cf4874e19 ro quiet splash $vt_handoff
initrd /boot/initrd.img-3.8.0-33-generic
}
menuentry 'Ubuntu, with Linux 3.8.0-33-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod gzio
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set=root f80f33c8-2270-4d2e-8311-5e4cf4874e19
echo 'Loading Linux 3.8.0-33-generic ...'
linux /boot/vmlinuz-3.8.0-33-generic root=UUID=f80f33c8-2270-4d2e-8311-5e4cf4874e19 ro recovery nomodeset
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-3.8.0-33-generic
}
然后放到(所有启动项中的)最前面即可。
- 其实到这里就实现了我的需求的,但程序员都爱折腾,于是我顺便看了看要怎么删除多余的内核。其实也很简单,可以用apt-get remove直接来:
1
apt-get remove linux-image-3.8.0-29-generic linux-image-3.8.0-30-generic linux-image-3.8.0-31-generic
注意
- 删除后,还是需要到grub.cfg中去手动删除多余的启动项的。
- 一般不要删除系统目前使用的最新的那个内核。有可能会导致不能开机的情况。
- 所以这里其实是删除多余的旧内核。