ubuntu20.04 编译内核源码5.15.58

现在的内核版本:

ok@ok-VirtualBox:~$ uname -a
Linux ok-VirtualBox 5.15.0-41-generic #44~20.04.1-Ubuntu SMP Fri Jun 24 13:27:29 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

 5.15.0-41

下载新的内核源码:The Linux Kernel Archives

 

如果下载网络过慢,可以下载:linuxsrc5.15.58-Linux文档类资源-CSDN下载

 

1 安装环境

sudo apt-get install ncurses-dev
sudo apt-get install flex
sudo apt-get install bison
sudo apt-get install libelf-dev
sudo apt-get install libssl-dev
sudo apt install dwarves
sudo apt-get install zstd

解压源码

xz -d   linux-5.15.58.tar.xz
tar -xvf linux-5.15.58.tar

2 配置内核相关参数项

首先进入代码根目录

ok@ok-VirtualBox:~/Downloads$ cd linux-5.15.58/

把本机config配置拷贝到我们前面解压出来的内核源码根目录下:

cp -v /boot/config-$(uname -r) .config

 如果之前编译过内核源码,由于出错或者其它原因想重新编译,则需要先清理下之前的编译结果,执行:

make mrproper

采用基于文本的菜单配置,适用性强,也可用于远程编译内核

sudo make menuconfig

 

 

 

编译内核源码

执行make命令即可,但是内核源码庞大,编译下来很费时间(跟机器性能有关,一般需要数十分钟到几个小时),可以make加上-jn选项多线程编译内核来加速内核编译,如:

# j后面数字,可以设置成cpu个数
root@ok-VirtualBox:/home/ok/Downloads/linux-5.15.58# make -j8

 如果报错:

编译内核错误——*** 没有规则可制作目标“debian/canonical-certs.pem”,由“certs/x509_certificate_list” 需求。 停止

sudo gedit .config

删掉双引号中的内容(保留双引号):
 

 安装驱动

root@ok-VirtualBox:/home/ok/Downloads/linux-5.15.58# make modules_install

完成: 

在/lib/moudles下生成了:

 

当前版本:

 

 生成内核压缩镜像文件

root@ok-VirtualBox:/home/ok/Downloads/linux-5.15.58# make bzImage

在 ./arch/x86/boot 下生成bzImage

 

        bzImage:是压缩的内核镜像文件,bz表示“big zImage”,不是用bzip2压缩的。两者的不同之处在于,zImage解压缩内核到低端内存(第一个640K),bzImage解压缩内核到高端内存(1M以上)。如果内核比较小,那么采用zImage或bzImage都行,如果比较大应该用bzImage。比zImage有更高的压缩率。
    vmlinuz:是可引导的、压缩的内核。“vm”代表“Virtual Memory”。Linux支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制。Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”。vmlinuz的建立有两种方式。一是编译内核时通过“make zImage”创建,然后通过:“cp /usr/src/linux-2.4/arch/i386/linux/boot/zImage/boot/vmlinuz”产生。zImage适用于小内核的情况,它的存在是为了向后的兼容性。二是内核编译时通过命令make bzImage创建,然后通过:“cp/usr/src/linux-2.4/arch/i386/linux/boot/bzImage /boot/vmlinuz”产生。一般是一个软链接。但是,它已经丢失了调试信息等,不可用于调试,这就是为什么perf和systemtap等内核级别的调试软件安装的时候,需要重新编译内核的原因。同理,解压缩vmlinuz是可以得到vmlinux的。但是失去了调试信息。相对于vmlinux,它增加了解压缩和boot的部分


安装

        拷贝镜像文件:

root@ok-VirtualBox:/home/ok/Downloads/linux-5.15.58# cp arch/x86/boot/bzImage /boot/vmlinuz-5.15.58
root@ok-VirtualBox:/home/ok/Downloads/linux-5.15.58# cp .config /boot/config-5.15.58

进入/lib/modules/5.15.58/

root@ok-VirtualBox:/home/ok/Downloads/linux-5.15.58# cd /lib/modules/5.15.58/
root@ok-VirtualBox:/lib/modules/5.15.58# ls
build                      modules.builtin.bin      modules.softdep
kernel                     modules.builtin.modinfo  modules.symbols
modules.alias              modules.dep              modules.symbols.bin
modules.alias.bin          modules.dep.bin          source
modules.builtin            modules.devname
modules.builtin.alias.bin  modules.order
root@ok-VirtualBox:/lib/modules/5.15.58# update-initramfs -c -k 5.15.58

更改系统启动参数

root@ok-VirtualBox:/lib/modules/5.15.58# update-grub

 

 重启:

内核替换成功:

 

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
编译 Ubuntu 20.04 内核的步骤如下: 1. 获取内核源代码 可以从 Ubuntu 的官方网站上下载内核源代码,或使用 Git 从内核源代码仓库中下载。在终端中输入以下命令: ``` sudo apt-get update sudo apt-get install git git clone git://kernel.ubuntu.com/ubuntu/ubuntu-focal.git ``` 2. 安装编译工具 编译 Ubuntu 内核需要安装一些编译工具和依赖项。在终端中输入以下命令: ``` sudo apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev ``` 3. 配置内核 进入 Ubuntu 内核源代码目录并运行以下命令: ``` cd ubuntu-focal cp /boot/config-$(uname -r) .config sudo make oldconfig ``` 在运行 `sudo make oldconfig` 命令时,系统会提示你是否需要更改一些内核配置。如果你不确定,请保持默认设置。 4. 编译内核 在终端中输入以下命令开始编译内核: ``` sudo make -j $(nproc) ``` 这将使用系统上可用的所有处理器核心进行编译编译过程可能需要一些时间,具体时间取决于你的硬件配置和内核大小。 5. 安装内核 编译完成后,可以安装内核。在终端中输入以下命令: ``` sudo make modules_install sudo make install ``` 这将安装编译后的内核和模块。然后你需要更新 GRUB 配置以便引导新内核。在终端中输入以下命令: ``` sudo update-grub ``` 6. 重启系统 内核安装完成后,重启系统以使新内核生效。 ``` sudo reboot ``` 注意:编译和安装内核可能会导致系统出现问题,因此在执行此操作之前,最好进行全面备份。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值