需求:

配置Caffe需要配置显卡驱动和cuda等一堆东西。如果更新到了新内核,这些环境可能会没有配置好。于是要用Caffe还得用原来的内核来启动Ubuntu。
但旧的内核Ubuntu的启动项会放在“Previous Version”里面,这样很不方便。于是需要调整下启动项顺序,让系统默认启动旧的内核。

方法:

确认目前系统下安装的内核版本:

dpkg -- get -selections |grep linux- image 

我的有:

linux-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内核相关的行:

menuentry '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直接来:

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中去手动删除多余的启动项的。
  • 一般不要删除系统目前使用的最新的那个内核。有可能会导致不能开机的情况。
  • 所以这里其实是删除多余的内核。

以上全文完整转载自:调整内核启动顺序和删除(旧内核)

Related Posts: Ubuntu-调整旧内核启动顺序和删除 :