首页 > 系统相关 >ubuntu编译kernel

ubuntu编译kernel

时间:2023-05-04 17:33:06浏览次数:56  
标签:kernel -- modules 编译 menuentry ubuntu 5.19 class

前言

使用的是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

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

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

make

出现问题

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

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

生成内核压缩镜像文件

 make bzImage

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

安装准备

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):

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

然后第二个选项的子菜单

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

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

GRUB_DEFAULT=1> 4

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

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

完成之后更新

sudo update-grub

重启

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

标签:kernel,--,modules,编译,menuentry,ubuntu,5.19,class
From: https://www.cnblogs.com/wdgray/p/17371885.html

相关文章

  • C语言函数指针数组,GCC编译问题
    使用C语言函数指针数组实现简单的计算器,代码如下#include<stdio.h>#include<stdlib.h>doubleadd(doublea,doubleb){return(a+b);};doublesub(doublea,doubleb){return(a-b);};doublemul(doublea,doubleb){return(a*b);};doubl......
  • Ubuntu22.04 rc-local 配置开机自启动脚本
    1.rc-local服务简介Linux中的rc-local服务是一个开机自动启动的,调用开发人员或系统管理员编写的可执行脚本或命令的,它的启动顺序是在系统所有服务加载完成之后执行。ubuntu22.04系统已经默认安装了rc-local.service服务,但是不知什么原因系统把这个服务给“隐蔽”了,所以如果不做......
  • datax_v202303 编译和使用
    下载源码gitclonehttps://github.com/alibaba/DataX.git#查看taggittaggitcheckoutdatax_v202303安装无法下载的jar到本地仓库下载地址pentaho-aggdesigner-algorithm-5.1.5-jhyde.jarhttps://github.com/xiaohaibaba/share_jar/raw/main/pentaho-aggdesigner-algor......
  • RK3588 Android12 编译打包私有ext4格式vendor.img并挂载到新增vendor_private分区
    一、制作ext4格式的vendor.img使用simg2img工具直接将现有的vendor.img转换成ext4格式的vendor.disk即可 ./out/host/linux-x86/bin/simg2img  out/target/product/ribeye/vendor.img  vendor.disk然后就可以直接挂载到新增分区对应的目录:mount vendor.disk/vendor_......
  • [ubuntu]安装配置go
    系统环境ubuntu18.04安装配置安装Go语言sudoapt-getupdatesudoapt-get-yupgradewgethttps://storage.googleapis.com/golang/go1.7.linux-amd64.tar.gzsudotar-xvfgo1.7.linux-amd64.tar.gzsudomvgo/usr/local设置环境vim/etc/profileexportGORO......
  • ubuntu正确安装chrome
    可能出现此错误的原因是您的系统中没有添加GoogleChrome的软件源。您可以按照以下步骤手动添加GoogleChrome的软件源并安装:1.在终端中打开/etc/apt/sources.list.d/目录:```cd/etc/apt/sources.list.d/```2.创建一个新的源文件:```sudotouchgoogle-chrome.list```3.使......
  • ubuntu 2204换源
    update2022.04.23:Ubuntu22.04的稳定版已经于2022年4月21日发布,Ubuntu22.04稳定版下载地址:https://ubuntu.com/download/desktopUbuntu22.04的稳定版计划于2022年4月21日发布。开发工作已经在紧锣密鼓地进行,它将遵循如下发布时间表:2022年2月24日:功能......
  • Ubuntu 18.04 Server版下载与安装
    1、下载地址https://releases.ubuntu.com/releases/2、系统镜像版本区别ubuntu-18.04.3-live-server-amd64.iso#带live,ISO镜像提供不安装就可以试⽤系统的功能ubuntu-18.04.3-server-amd64.iso  #不带live,不可⽤试⽤,但是可以直接进⾏系统安装3、不同CPU指令集的ISO镜像C......
  • Uniapp HBuilderX 编译 运行到手机 内存不足:***** out of memory
    HBuilderX内置node版本是32位,如果遇到JavaScriptheapoutofmemory问题,可以自行下载64位的Node进行替换替换HBuilderX 内置的node.exe文件:HBuilderX\plugins\node\node.exe用自己安装的node里面的 node.exe文件即可。替换过后再次运行会提示安装对应的binding.node......
  • Debian与Ubuntu到底有什么不同,应该如何选择?
    在CentOS转向CentOSStream之后,这意味着它将变得不可靠。但是幸好,仍然有非常优秀的Linux发行版本在等我们。其中比较有知名度的是Ubuntu以及Debian。我们经常听到的一句话是:UbuntuisbasedonDeibian那它们究竟有什么区别,如果让你来选择,你要如何选择?这篇文章中,我将简单的说......