Ubuntu24.04下载并且编译Linux内核源码

可以从网上 The Linux Kernel Archives下载Linux内核源码,虚拟机使用Ubuntu版本为6.8.0-49-generic 我选择的Linux内核源码版本为6.8.1

但由于官网下载速度过慢,因此选择镜像网站Index of /pub/linux/kernel/v6.x/找到对应版本下载。

下载一些编译需要的工具如下:

sudo apt-get install vim git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison

解压下载的源代码。

xz -d linux-6.8.1.tar.xz
tar -xavf <linux-6.8.1.tar>

得到linux-6.8.1 目录。

切换到linux-6.8.1目录下,

编辑Makefile,可以定义自己的内核版本号。vim Makefile,修改“EXTRAVERSION =<YOUR_EXTRAVERSION>”,这里我设定的是`EXTRAVERSION =OSPRACTICE。

接着设定使用当前系统的内核配置文件为新内核的配置文件:

cp /boot/config-6.8.0-49-generic .config

如果需要更详细的配置,可以运行以下命令打开图形化配置界面。

make menuconfig

由于Debian 及其衍生版(即包括了Ubuntu)为内核模块使用一个签名证书。默认情况下,计算机并不包含这个证书。

因此需要关闭启用模块签名的选项,否则在接下来的内核编译中会报错。

我是结合了技术|Linux 内核动手编译实用指南 及GPT提示:

./scripts/config --file .config --set-str SYSTEM_TRUSTED_KEYS ''
./scripts/config --file .config --set-str SYSTEM_REVOCATION_KEYS ''
scripts/config --disable SYSTEM_TRUSTED_KEYRING
scripts/config --disable MODULE_SIG
scripts/config --disable MODULE_SIG_ALL
scripts/config --disable MODULE_SIG_SHA256
scripts/config --disable MODULE_SIG_SHA512
scripts/config --disable MODULE_SIG_RSA
scripts/config --disable MODULE_SIG_ECDSA
scripts/config --disable X509_CERTIFICATE_PARSER
scripts/config --disable CERTS

接下来使用多线程加速编译, j$(nproc)表示使用所有 CPU 核心并行编译。2>&1 会将 STDOUT 和 STDIN 重定向到相同的文件描述符,并通过管道传输给 tee 命令,这会将输出存储在一个名为 log 的文件,即将终端打印出的内容存储到日志中便于查看。

由于使用了多线程加速,编译的速度很快,大概用了一个半小时完成编译:

make -j$(nproc) 2>&1 | tee log

然后安装编译好的内核模块:

sudo make modules_install

最后安装新编译的内核:

sudo make install

如下图所示6.8.1-OSPRACTICE为新编译的内核。

为了使用编译的内核,需要编辑grub2选项。输入以下命令打开grub选项,并设置改为GRUB_TIMEOUT_STYLE=menu GRUB_TIMEOUT=5。这是在开机的时候打开一个选用内核的菜单界面并且设置选择时间为5秒。

sudo vim /etc/default/grub

更新grub并且重启选择新内核。

sudo update-grub
reboot

选择新编译的内核6.8.1-OSPRACTICE

启动后在终端界面查看内核,终于成功了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值