编译内核并替换内核
以5.3.8(最新)Linux 内核为例
- 下载内核源码
从https://mirrors.edge.kernel.org/pub/linux/kernel下载所需的内核源码.
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.3.8.tar.xz
- 安装内核编译所需的环境
sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison
- 解压内核源码
xz -d linux-5.3.8.tar.xz && tar xvf linux-5.3.8.tar
- 内核编译配置文件.config的生成
可以拷贝当前系统的内核配置文件到源码目录,也可以自己通过menuconofig
选择需要编译的feature,当然也可以在当前系统的内核配置文件基础上运行menuconfig
进行修改.
# 进入源码根目录
cd ~/下载/linux-5.3.8
# 拷贝当前系统内核配置文件
cp -v /boot/config-$(uname -r) .config
# make menuconfig
- 编译内核
make -j $(nproc)
- 安装编译生成的modules
sudo make modules_install
- 安装新内核相关文件
sudo make install
- 重启
reboot
- 在重启的grub界面选择想要进入的内核版本即可
部分ubuntu版本在grub时默认显示可选择的内核版本,部分ubuntu版本在grub时需要进入ubuntu高级选项
才能看到可选择的内核版本.
附:
ubuntu18.04在编译之后无法看到grub引导界面,而是直接以新内核启动了系统,因此无法选择需要启动的内核版本问题
该问题是由grub设置导致的,需要修改grub的配置文件
sudo vim /etc/default/grub
将文件中的GRUB_TIMEOUT_STYLE
选项的值从hidden
改为menu
如果GRUB_TIMEOUT
选项的值为0,则修改为5或10,该选项在GRUB_TIMEOUT_STYLE
为menu
时,为grub进入默认引导项的倒计时等待时间.
修改grub配置文件后需要允许以下命令,以更新grub设置.
sudo update grub
然后重启即可.
reboot