从源码编译和安装Linux内核

如何编译和安装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
2
3
4
5
6
7
gpg: key 79BE3E4300411886: 7 duplicate signatures removed
gpg: key 79BE3E4300411886: 172 signatures not checked due to missing keys
gpg: /home/vivek/.gnupg/trustdb.gpg: trustdb created
gpg: key 79BE3E4300411886: public key "Linus Torvalds <torvalds@kernel.org>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg: imported: 1

现在再一次使用 gpg 命令进行验证:

1
gpg --verify linux-4.19.1.tar.sign

示例输出:

1
2
3
4
5
6
7
8
gpg: assuming signed data in 'linux-4.19.1.tar'
gpg: Signature made Sun 12 Aug 2018 04:00:28 PM CDT
gpg: using RSA key 79BE3E4300411886
gpg: Good signature from "Linus Torvalds <torvalds@kernel.org>" [unknown]
gpg: aka "Linus Torvalds <torvalds@linux-foundation.org>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: ABAF 11C6 5A29 70B1 30AB E3C4 79BE 3E43 0041 1886

如果通过了验证,那么就使用 tar 进行解压:

1
tar xvf linux-4.19.1.tar

3.配置 Linux 内核特征和模型

在开始构建内核之前,你必须配置内核特征。你也必须明确你的系统所需要的内核模块(驱动)。这个对于新手来说是很有压力的。我建议你使用 cp 命令复制已有的配置文件:

1
2
cd linux-4.19.1
cp -v /boot/config-$(uname -r) .config

示例输出:

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
2
sudo dnf group install "Development Tools"
sudo dnf ncurses-devel bison flex elfutils-libelf-devel openssl-devel

5.编译内核

开始编译并创建一个压缩好的内核镜像,输入:

1
make

为了加速编译时间,传递 -j 参数:

1
2
3
4
## use 4 core/thread ##
$ make -j 4
## get thread or cpu core count using nproc command ##
$ make -j $(nproc)

编译和构建 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
2
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
sudo grubby --set-default /boot/vmlinuz-4.19.1

Debian/Ubuntu Linux

1
2
sudo update-initramfs -c -k 4.19.1
sudo update-grub

重启系统:

1
reboot

在重启后验证 Linux 内核是否为最新版本

1
uname -mrs
# Linux

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×