0 前言
Linux系统中可同时安装多个内核镜像,启动时选其一运行即可,《Linux内核安装》介绍了通过apt-get工具安装内核的方法,本文将介绍如果由源码安装新内核。
验证版本:Ubuntu14.04/18.04/20.04/22.04、UOS Pro 20、银河麒麟SP1 V10
1 源码
1.1 标准内核
(1)方法1:压缩包
wget https://mirrors.edge.kernel.org/pub/linux/kernel/v4.x/linux-4.6.4.tar.gz
tar axvf linux-4.6.4.tar.gz
注:压缩包中不含git仓库,因此无法查看提交记录。
(2)方法2:torvalds仓库
git clone https://github.com/torvalds/linux.git
注:git tag只含大版本号,不含小版本号(第2个小数点后的版本),因此无法切换到上述4.6.4版本。
(3)方法3:稳定仓库(推荐)
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
注:git tag包含详细的版本号,因此可以切换到上述4.6.4版本。
1.2 发行版内核
(1)方法1
Ubuntu可通过下面方式下载含发行版patch的内核:
# 确认当前所用内核版本
uname -r
# 查看可用内核源码
apt-cache search linux-source
# 安装内核源码
apt-get install -y linux-source-5.3.0 # 得到/usr/src/linux-source-5.3.0/linux-source-5.3.0.tar.bz2
(2)方法2
Ubuntu还可以通过下面方法下载内核源码[25]:
sudo apt-get install -y dpkg-dev # 下面命令需要用到其中的“dpkg-source”
# 下面命令无需sudo权限
apt-get source linux-image-unsigned-$(uname -r)
# or failing that:
apt-get source linux-image-$(uname -r)
正常情况下会将源码下载到当前目录。
注:“/etc/apt/sources.list”中原有的“deb-src”配置默认被注释掉了,指定上述命令会提示错误[26]:
E: You must put some 'source' URIs in your sources.list
将“/etc/apt/sources.list”中的“deb-src”配置全都取消注释,“sudo apt-get update”更新一下就好。
(3)方法3
方法1、方法2下载的源码有时并非最新的,此时可通过各发行版官网下载内核,例如Ubuntu内核官网:
# jammy(ubuntu22.04)
git clone https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/jammy # [25]
# focal(ubuntu20.04)
git clone https://git.launchpad.net/~ubuntu-kernel/ubuntu/+source/linux/+git/focal # [21][25][28]
注:Ubuntu各版本的代号(吉祥物)详见参考资料[29]。