ubuntu编译kernel

前言

使用的是ubuntu 22.04 本来的kernel:5.19.0-38-generic 编译kernel 5.19

使用虚拟机要注意存储空间的变化,避免内存爆掉。

环境配置

需要先安装配置环境

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

编译kernel

下载和kernel同版本的源码。

http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/v5.x/linux-5.19.tar.gz

将自带的配置文件copy到解压的源码的顶层Makefile处。

cp -r /boot/config-5.19.0-38-generic .config

配置kernel

sudo make menuconfig

ubuntu编译kernel

选择save,选择.config(之前copy过来的)

完成之后回到这个界面选择退出。

make

ubuntu编译kernel

出现问题

make[1]: *** No rule to make target 'debian/canonical-certs.pem', needed by 'certs/x509_certificate_list'.  Stop.
make: *** [Makefile:1843: certs] Error 2

删除.config文件中这两行中的双引号中的内容,双引号保留。

CONFIG_SYSTEM_TRUSTED_KEYS="debian/canonical-certs.pem"
CONFIG_SYSTEM_REVOCATION_KEYS="debian/canonical-revoked-certs.pem"

清除编译结果重新编译。

清除编译结果

make mrproper

安装驱动

sudo make modules_install

完成后会生成一个版本号的文件夹。生成位置是/lib/modules/5.19.0

这个文件夹要创建需要权限。

ubuntu编译kernel

生成内核压缩镜像文件

 make bzImage

./arch/x86/boot下会生成bzImage文件

ubuntu编译kernel

安装准备

5.19.0这个名字是/lib/modules下创建的文件夹的名字。

sudo cp -r arch/x86/boot/bzImage /boot/vmlinuz-5.19.0
sudo cp -r .config /boot/config-5.19.0
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

切换kernel版本

查看kernel版本

​ 这是可以选择的kernel版本,每个版本都有正常的和recovery mode两个 (不要选择recovery mode

root@ubuntu:/# cat /boot/grub/grub.cfg |grep -E 'menuentry.+class.+class.+menuentry_id_option'
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-97fa777f-a9b2-4ce8-babc-03476266e1dd' {
	menuentry 'Ubuntu, with Linux 5.19.0-41-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.19.0-41-generic-advanced-97fa777f-a9b2-4ce8-babc-03476266e1dd' {
	menuentry 'Ubuntu, with Linux 5.19.0-41-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.19.0-41-generic-recovery-97fa777f-a9b2-4ce8-babc-03476266e1dd' {
	menuentry 'Ubuntu, with Linux 5.19.0-38-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.19.0-38-generic-advanced-97fa777f-a9b2-4ce8-babc-03476266e1dd' {
	menuentry 'Ubuntu, with Linux 5.19.0-38-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.19.0-38-generic-recovery-97fa777f-a9b2-4ce8-babc-03476266e1dd' {
	menuentry 'Ubuntu, with Linux 5.19.0' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.19.0-advanced-97fa777f-a9b2-4ce8-babc-03476266e1dd' {
	menuentry 'Ubuntu, with Linux 5.19.0 (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.19.0-recovery-97fa777f-a9b2-4ce8-babc-03476266e1dd' {
root@ubuntu:/# vi /etc/default/grub

选择版本

对照上面拿到的数据编上顺序号码

0	5.19.0-41-generic
1	5.19.0-41-generic (recovery mode)
2	Linux 5.19.0-38-generic
3	5.19.0-38-generic (recovery mode)
4	Linux 5.19.0
5	Linux 5.19.0 (recovery mode)

配置/etc/default/grub文件

GRUB_DEFAULT=0

这个0就是选择的结果,对应的就是前面的版本,0表示的是默认的版本。不要选择recovery mode

如果不小心真的进入了recovery mode 在开机时长按shift键,自己手动选择。

为什么是0,因为默认的时候会自己选择第一个选项(正常开机就是默认选择的第一个 *Ubuntu):

ubuntu编译kernel

但是我们自己编译的kernel想要使用就在第二个选项中,对应的操作码是1

然后第二个选项的子菜单

ubuntu编译kernel

第一个选项是0,以此类推。

如果是想要启动Linux 5.19.0内核,就

GRUB_DEFAULT=1> 4

1表示的是一级菜单选择的是1,4表示的是二级菜单选择5.19.0 > 符号后面有一个空格

这个选项表也和之前查看的kernel版本对的上。

完成之后更新

sudo update-grub

重启

uname -r 查看版本是否切换成功

原文链接:https://www.cnblogs.com/wdgray/p/17371885.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ubuntu编译kernel - Python技术站

(0)
上一篇 2023年5月4日
下一篇 2023年5月5日

相关文章

  • xshell上传下载文件(Windows、Linux)

    下面我将给出“xshell上传下载文件(Windows、Linux)”的完整攻略。 Xshell是什么 Xshell是一款Windows操作系统下的终端模拟软件,可以通过SSH、TELNET、RLOGIN、SFTP等协议与远程服务器进行连接。可以通过Xshell进行文件传输、编辑文件、执行脚本等操作。 Xshell上传文件 使用Xshell上传文件,主要通过…

    Linux 2023年5月14日
    00
  • linux 重定向命令详解(如1>/dev/null 2>&1)

    基础 0:表示标准输入stdin 1:表示标准输出stdout,系统默认为1,可省略(即1>/dev/null等价于>/dev/null) 2:表示标准错误stderr >:表示重定向(即将输出定向到指定路径文件,>/dev/null表示将标准输出重定向到空设备文件,即不输出任何信息到终端,即不显示任何信息。) 2>&1…

    Linux 2023年4月11日
    00
  • FFmpeg开发笔记(一)搭建Linux系统的开发环境

    对于初学者来说,如何搭建FFmpeg的开发环境是个不小的拦路虎,因为FFmpeg用到了许多第三方开发包,所以要先编译这些第三方源码,之后才能给FFmpeg集成编译好的第三方库。 不过考虑到刚开始仅仅调用FFmpeg的API,不会马上去改FFmpeg的源码,因此只要给系统安装编译好的FFmpeg动态库,即可着手编写简单的FFmpeg程序。 对于初学者来说,如何…

    Linux 2023年4月16日
    00
  • VMWare中CentOS ifcfg-eth0配置方法(亲测直接可用)

    下面是详细的攻略: VMWare中CentOS ifcfg-eth0配置方法(亲测直接可用) 一、背景说明 在VMWare虚拟机中安装CentOS系统时,可能需要配置网卡(例如将虚拟机连接到网络),而网卡的配置文件 ifcfg-eth0 的配置方法并不太直观。本文介绍在VMWare虚拟机中配置CentOS系统的ifcfg-eth0的方法,经过亲测直接可用。 …

    Linux 2023年5月24日
    00
  • CentOS配置本地yum源/阿里云yum源/163yuan源并配置yum源的优先级

    下面是详细的讲解。 CentOS配置本地yum源的方法 在本地CentOS服务器上创建一个目录用于存放yum源,比如我们创建目录 /data/yum。 sudo mkdir -p /data/yum 下载CentOS官方镜像(http://vault.centos.org/), 此处选择版本7,架构64位。 sudo wget http://vault.ce…

    Linux 2023年5月14日
    00
  • Linux系统下对硬盘分区进行扩容的方法总结

    针对“Linux系统下对硬盘分区进行扩容的方法总结”,我来给出一个完整攻略的示范。 Linux系统下对硬盘分区进行扩容的方法总结 背景 一个服务器在部署之初,往往会用固定的分区来划分存储空间。但是随着业务的发展,存储空间不断被占满,就需要对硬盘分区进行扩容。下面就简要介绍Linux系统下如何进行扩容。 步骤 第1步:备份重要数据 分区扩容是一项风险较高的操作…

    Linux 2023年5月14日
    00
  • linux命令**50

        命令格式: ls [选项] [目录名]    命令功能: 列出目标目录中所有的子目录和文件。     常用参数:           -a,列出所有文件包括隐藏文件         -l,列出详细信息,文件大小一般以字节大小显示           -h,以容易理解的方式列出文件大小 例:        ls -l列出当前目录的详细文件信息,第一列第…

    Linux 2023年4月12日
    00
  • VMware Workstation虚拟机中的Linux通过NAT模式共享上网配置教程

    VMware Workstation虚拟机中的Linux通过NAT模式共享上网配置教程 在VMware Workstation下,我们可以通过NAT模式来让Linux虚拟机与Windows主机共享上网。下面是详细配置教程。 步骤一:设置虚拟机网络适配器 打开VMware Workstation,启动Linux虚拟机。 选择虚拟机,点击“编辑虚拟机设置”。 在…

    Linux 2023年5月24日
    00
合作推广
合作推广
分享本页
返回顶部