设为首页 加入收藏

TOP

ubuntu编译kernel(一)
2023-07-23 13:32:57 】 浏览:54
Tags: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

选择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/defau
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Ubuntu配置软件镜像源 下一篇Linux | nvidia-smi 命令使用记录

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目