系统: Ubuntu18.04
操作事项: 为操作系统添加新的linux内核并作为首选启动项(已经有了4.15 与 5.8的内核)
操作如下:
- 从国内镜像源下载linux内核 http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/
- 编译内核
- xz -d linux4.19.83.tar.xz
- tar xf linux4.19.83.tar
- cp /boot/config(注:这个是系统中保存的内核配置文件) ./.config
- make menuconfig
- 保存退出
- 编译内核: make -j4 (注:j4 代表4个线程)
- 进入root用户: sudo su
- 安装模块 make modules_install
- make bzImage
- cp arch/x86/boot/bzImage /boot/vmlinuz-4.19.83
- cp .config /boot/config-4.19.83
- cd /lib/modules/4.19.83/
- update-initramfs -c -k 4.19.83 (注:这个命令表示,将新内核更新进grub菜单,参数含义可参照:https://manpages.debian.org/jessie/initramfs-tools/update-initramfs.8.en.html)
- update-grub(更新 grub启动项)
FQA:
我更改并升级完内核后,重新启动系统发现,系统并没有优先启动最新更新的内核,但是按照这个方法,5.8.9内核被更新后,是可以被有限选择的,最后我查看grub.cfg发现内核级别越高 其在menulist中的位置越靠前。所以更新完内核后需要更改内核选择项如下:
- vim /etc/default/grub
- 修改 为 GRUB_DEFAULT="1> 3" (注:3 表示在子菜单中选择第4项(程序员是从0开始计数的)3与前面的 > 有个空格)
这样修改后 记得执行命令update-grub。重新启动后,便可启动更新的内核了。
修改grug的三种方法:http://www.voidcn.com/article/p-tqdwfijw-pe.html
A:对于电脑上只有一个系统Ubuntu的,grub菜单默认是被隐藏了的,去掉隐藏可以这样:
sudo vi /etc/default/grub
GRUB_HIDDEN_TIMEOUT=0(默认是0,修要修改成大于0的值,比如10,保存后退出!)
更新grub : sudo update-grub
这样在每次开机时按一下shift键(或者ESC,ESC针对比较早一点的grub)就可以看到grub菜单了!(说明:GRUB 2第一次执行时将会寻找其他操作系统。若没有其他操作系统被检测到,菜单将会配置为隐藏。若辨认出其他操作系统,菜单将会显示。若是大于 0 的整数,系统将会依此配置的秒数暂停,但不会显示菜单。配置此值为0 则菜单不会显示,也不会有延迟。配置此值为 -1 将会导致菜单一直显示,直到用户选择。使用者可以在启动时按住 SHIFT 键不放以强制显示菜单。)
B、编辑文件 :sudo vi /boot/grub/grub.cfg
没有grub菜单是由于 set timeout_style=hidden
若想显示grub菜单可以将其修改为 set timeout_style=menu
然后可以设置显示的时间:settimeout=0(改为大于0的值),这样grub选择菜单也就可以显示了!
C、编辑文件:sudo vi /etc/default/grub
注释掉下面的两行:
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true
更新grub:sudo update-grub