如何编译和安装Linux内核
可以按如下的步骤编译和安装Linux内核
1.从 kernel.org 抓取最新版本的内核
2.验证内核
3.解压内核压缩文件
4.复制已存的 Linux 内核配置文件
5.编译和构建内核
6.安装内核和模块
7.更新 Grub 配置
8.重启系统
1.获取最新版本的源代码
访问Linux官方网站下载最新的源代码。点击标有“Latest Stable Kernel”的黄色大按钮。
也可以使用 wget 命令下载 Linux 内核源代码:
1 | wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.1.tar.xz |
2.获取 tar.xz 文件
使用 unzx 命令和 xz 命令解压压缩文件获取源代码:
1 | unzx -v linux-4.19.1.tar.xz |
或者
1 | xz -d -v linux-4.19.1.tar.xz |
使用pgp验证 linux 内核 tarball
首先获取linux-4.19.1.tar 的 PGP 签名:
1 | wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.1.tar.sign |
尝试进行验证:
1 | gpg --verify linux-4.19.1.tar.sign |
示例输出:
从 PGP 密钥服务器获取公钥来验证签名。例如:RSA key ID 79BE3E4300411886(从上面的输出结果中得到)
1 | gpg --recv-keys 79BE3E4300411886 |
示例输出:
1 | gpg: key 79BE3E4300411886: 7 duplicate signatures removed |
现在再一次使用 gpg 命令进行验证:
1 | gpg --verify linux-4.19.1.tar.sign |
示例输出:
1 | gpg: assuming signed data in 'linux-4.19.1.tar' |
如果通过了验证,那么就使用 tar 进行解压:
1 | tar xvf linux-4.19.1.tar |
3.配置 Linux 内核特征和模型
在开始构建内核之前,你必须配置内核特征。你也必须明确你的系统所需要的内核模块(驱动)。这个对于新手来说是很有压力的。我建议你使用 cp 命令复制已有的配置文件:
1 | cd linux-4.19.1 |
示例输出:
1 | '/boot/config-4.15.0-30-generic' -> '.config' |
4.安装编译器和其他必须的工具
你必须安装有类似 GCC 或者相关联的工具来编译 Linux 内核。
使用下列的 apt 命令或 apt-get 命令来安装:
1 | sudo apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev |
尝试 yum 命令:
1 | sudo yum group install "Development Tools" |
或
1 | sudo yum groupinstall "Development Tools" |
额外的包:
1 | sudo yum install ncurses-devel bison flex elfutils-libelf-devel openssl-devel |
如何在 Fedora Linux 上安装GCC 和其它开发工具
运行下列 dnf 命令:
1 | sudo dnf group install "Development Tools" |
5.编译内核
开始编译并创建一个压缩好的内核镜像,输入:
1 | make |
为了加速编译时间,传递 -j 参数:
1 | ## use 4 core/thread ## |
编译和构建 linux 内核将会话费大量时间,这取决于你的系统资源(例如:CPU)。
安装 Linux 内核模块
1 | sudo make modules_install |
安装 Linux 内核
到目前为止我们已经编译了 Linux 内核并且安装了内核模块。是时候安装内核本身了:
1 | sudo make install |
这将安装三个文件在 /boot 目录并修改你的内核 grub 配置文件:
- initramfs-4.19.1.img
- System.map-4.19.1
- vmlinuz-4.19.1
更新 grub 配置
你需要修改 Grub 2 bootloader 配置。 输入下列 shell 命令
CentOS/RHEL/Oracle/Scientific and Fedora Linux
1 | sudo grub2-mkconfig -o /boot/grub2/grub.cfg |
Debian/Ubuntu Linux
1 | sudo update-initramfs -c -k 4.19.1 |
重启系统:
1 | reboot |
在重启后验证 Linux 内核是否为最新版本
1 | uname -mrs |