linux 6.19版本内核编译

编译环境:

我是采用一台笔记本电脑,然后在笔记本电脑上安装linux系统,在linux系统下进行linux内核的编译。

确认自己的linux环境

使用命令 :uname -a

复制代码
cp@CP:\~/桌面/linux$ uname -a
Linux CP 6.14.0-37-generic #37~24.04.1-Ubuntu SMP PREEMPT_DYNAMIC Thu Nov 20 10:25:38 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

kernel源代码下载与编译:

源码下载

使用命令 :wget url

复制代码
cp@CP:\~/桌面/linux$ wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.19.tar.xz

源码解压

使用命令 :tar -xvf

复制代码
cp@CP:\~/桌面/linux$ tar -xvf linux-6.19.tar.xz 

解压完成以后cd进入文件夹目录下:

复制代码
cp@CP:\~/桌面/linux$ ls
linux-6.19  linux-6.19.tar.xz
cp@CP:\~/桌面/linux$ cd linux-6.19/

源码编译

使用make指令进行编译

复制代码
cp@CP:\~/桌面/linux/linux-6.19$ make
***
*** Configuration file ".config" not found!
***
*** Please run some configurator (e.g. "make oldconfig" or
*** "make menuconfig" or "make xconfig").
***
/home/cp/桌面/linux/linux-6.19/Makefile:839: include/config/auto.conf.cmd: 没有那个文件或目录
make[1]: *** [/home/cp/桌面/linux/linux-6.19/Makefile:848:.config] 错误 1
make: *** [Makefile:248:__sub-make] 错误 2

.config文件找不到,目前根因还不知道。按照网上的教程使用make defconfig进行编译。

复制代码
cp@CP:\~/桌面/linux/linux-6.19$ make defconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/confdata.o
  HOSTCC  scripts/kconfig/expr.o
  LEX     scripts/kconfig/lexer.lex.c
/bin/sh: 1: flex: not found
make[2]: *** [scripts/Makefile.host:9:scripts/kconfig/lexer.lex.c] 错误 127
make[1]: *** [/home/cp/桌面/linux/linux-6.19/Makefile:742:defconfig] 错误 2
make: *** [Makefile:248:__sub-make] 错误 2

依然报错:根因为缺少flex,因此安装flex。

安装flex

安装软件的命令 sudo apt install

复制代码
cp@CP:\~/桌面/linux/linux-6.19$ sudo apt install flex
[sudo] cp 的密码: 
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
下列软件包是自动安装的并且现在不需要了:
  libllvm19 libnvidia-cfg1-550 libnvidia-common-550 libnvidia-compute-550
  libnvidia-decode-550 libnvidia-encode-550 libnvidia-extra-550
  libnvidia-fbc1-550 libnvidia-gl-550 nvidia-compute-utils-550
  nvidia-firmware-550-550.163.01 nvidia-kernel-common-550
  nvidia-kernel-source-550 nvidia-utils-550 xserver-xorg-video-nvidia-550
使用'sudo apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
  libfl-dev libfl2 m4
建议安装:
  bison flex-doc m4-doc
下列【新】软件包将被安装:
  flex libfl-dev libfl2 m4
升级了 0 个软件包,新安装了 4 个软件包,要卸载 0 个软件包,有 47 个软件包未被升级。
需要下载 560 kB 的归档。
解压缩后会消耗 1707 kB 的额外空间。
您希望继续执行吗? [Y/n] Y
获取:1 http://archive.ubuntu.com/ubuntu noble/main amd64 m4 amd64 1.4.19-4build1 [244 kB]
获取:2 http://archive.ubuntu.com/ubuntu noble/main amd64 flex amd64 2.6.4-8.2build1 [301 kB]
获取:3 http://archive.ubuntu.com/ubuntu noble/main amd64 libfl2 amd64 2.6.4-8.2build1 [9768 B]
获取:4 http://archive.ubuntu.com/ubuntu noble/main amd64 libfl-dev amd64 2.6.4-8.2build1 [6250 B]
已下载 560 kB,耗时 9秒 (64.7 kB/s)                                            
正在选中未选择的软件包 m4。
(正在读取数据库 ... 系统当前共安装有 211210 个文件和目录。)
准备解压 .../m4_1.4.19-4build1_amd64.deb  ...
正在解压 m4 (1.4.19-4build1) ...
正在选中未选择的软件包 flex。
准备解压 .../flex_2.6.4-8.2build1_amd64.deb  ...
正在解压 flex (2.6.4-8.2build1) ...
正在选中未选择的软件包 libfl2:amd64。
准备解压 .../libfl2_2.6.4-8.2build1_amd64.deb  ...
正在解压 libfl2:amd64 (2.6.4-8.2build1) ...
正在选中未选择的软件包 libfl-dev:amd64。
准备解压 .../libfl-dev_2.6.4-8.2build1_amd64.deb  ...
正在解压 libfl-dev:amd64 (2.6.4-8.2build1) ...
正在设置 m4 (1.4.19-4build1) ...
正在设置 libfl2:amd64 (2.6.4-8.2build1) ...
正在设置 flex (2.6.4-8.2build1) ...
正在设置 libfl-dev:amd64 (2.6.4-8.2build1) ...
正在处理用于 libc-bin (2.39-0ubuntu8.7) 的触发器 ...
正在处理用于 man-db (2.12.0-4build2) 的触发器 ...
正在处理用于 install-info (7.1-3build2) 的触发器 ...

再次进行源码的编译:

复制代码
cp@CP:\~/桌面/linux/linux-6.19$ make defconfig
  LEX     scripts/kconfig/lexer.lex.c
  YACC    scripts/kconfig/parser.tab.[ch]
/bin/sh: 1: bison: not found
make[2]: *** [scripts/Makefile.host:17:scripts/kconfig/parser.tab.h] 错误 127
make[1]: *** [/home/cp/桌面/linux/linux-6.19/Makefile:742:defconfig] 错误 2
make: *** [Makefile:248:__sub-make] 错误 2

报错根因:缺少bison。

安装bison

复制代码
cp@CP:\~/桌面/linux/linux-6.19$ sudo apt-get install bison
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
下列软件包是自动安装的并且现在不需要了:
  libllvm19 libnvidia-cfg1-550 libnvidia-common-550 libnvidia-compute-550
  libnvidia-decode-550 libnvidia-encode-550 libnvidia-extra-550
  libnvidia-fbc1-550 libnvidia-gl-550 nvidia-compute-utils-550
  nvidia-firmware-550-550.163.01 nvidia-kernel-common-550
  nvidia-kernel-source-550 nvidia-utils-550 xserver-xorg-video-nvidia-550
使用'sudo apt autoremove'来卸载它(它们)。
建议安装:
  bison-doc
下列【新】软件包将被安装:
  bison
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 47 个软件包未被升级。
需要下载 749 kB 的归档。
解压缩后会消耗 2515 kB 的额外空间。
获取:1 http://archive.ubuntu.com/ubuntu noble/main amd64 bison amd64 2:3.8.2+dfsg-1build2 [749 kB]
已下载 749 kB,耗时 5秒 (140 kB/s)                 
正在选中未选择的软件包 bison。
(正在读取数据库 ... 系统当前共安装有 211358 个文件和目录。)
准备解压 .../bison_2%3a3.8.2+dfsg-1build2_amd64.deb  ...
正在解压 bison (2:3.8.2+dfsg-1build2) ...
正在设置 bison (2:3.8.2+dfsg-1build2) ...
update-alternatives: 使用 /usr/bin/bison.yacc 来在自动模式中提供 /usr/bin/yacc (yacc)
正在处理用于 man-db (2.12.0-4build2) 的触发器 ...

编译成功:

复制代码
cp@CP:\~/桌面/linux/linux-6.19$ make defconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/confdata.o
  HOSTCC  scripts/kconfig/expr.o
  LEX     scripts/kconfig/lexer.lex.c
  YACC    scripts/kconfig/parser.tab.[ch]
  HOSTCC  scripts/kconfig/lexer.lex.o
  HOSTCC  scripts/kconfig/menu.o
  HOSTCC  scripts/kconfig/parser.tab.o
  HOSTCC  scripts/kconfig/preprocess.o
  HOSTCC  scripts/kconfig/symbol.o
  HOSTCC  scripts/kconfig/util.o
  HOSTLD  scripts/kconfig/conf
*** Default configuration is based on 'x86_64_defconfig'
#
# configuration written to .config
#

到此说明源码编译成功。

内核配置:

1、使用vim进行内核的配置

复制代码
cp@CP:\~/桌面/linux/linux-6.19$ vim .config

2、使用menuconfig进行内核的配置

复制代码
cp@CP:\~/桌面/linux/linux-6.19$ make menuconfig
*
* Unable to find the ncurses package.
* Install ncurses (ncurses-devel or libncurses-dev
* depending on your distribution).
*
* You may also need to install pkg-config to find the
* ncurses installed in a non-default location.
*
make[2]: *** [scripts/kconfig/Makefile:234:scripts/kconfig/mconf-libs] 错误 1
make[1]: *** [/home/cp/桌面/linux/linux-6.19/Makefile:742:menuconfig] 错误 2
make: *** [Makefile:248:__sub-make] 错误 2

根因:缺少libncurses-dev

安装libncurses-dev

复制代码
cp@CP:\~/桌面/linux/linux-6.19$ sudo apt-get install libncurses5-dev
[sudo] cp 的密码: 
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成                 
注意,选中 'libncurses-dev' 而非 'libncurses5-dev'
下列软件包是自动安装的并且现在不需要了:
  libllvm19 libnvidia-cfg1-550 libnvidia-common-550 libnvidia-compute-550
  libnvidia-decode-550 libnvidia-encode-550 libnvidia-extra-550
  libnvidia-fbc1-550 libnvidia-gl-550 nvidia-compute-utils-550
  nvidia-firmware-550-550.163.01 nvidia-kernel-common-550
  nvidia-kernel-source-550 nvidia-utils-550 xserver-xorg-video-nvidia-550
使用'sudo apt autoremove'来卸载它(它们)。
建议安装:
  ncurses-doc
下列【新】软件包将被安装:
  libncurses-dev
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 47 个软件包未被升级。
需要下载 384 kB 的归档。
解压缩后会消耗 2417 kB 的额外空间。
获取:1 http://archive.ubuntu.com/ubuntu noble/main amd64 libncurses-dev amd64 6.4+20240113-1ubuntu2 [384 kB]
已下载 384 kB,耗时 8秒 (47.0 kB/s)                                            
正在选中未选择的软件包 libncurses-dev:amd64。
(正在读取数据库 ... 系统当前共安装有 211474 个文件和目录。)
准备解压 .../libncurses-dev_6.4+20240113-1ubuntu2_amd64.deb  ...
正在解压 libncurses-dev:amd64 (6.4+20240113-1ubuntu2) ...
正在设置 libncurses-dev:amd64 (6.4+20240113-1ubuntu2) ...
正在处理用于 man-db (2.12.0-4build2) 的触发器 ...

然后就可以使用menaconfig进行内核的配置了。

相关推荐
梦想很大很大20 小时前
拒绝“盲猜式”调优:在 Go Gin 项目中落地 OpenTelemetry 链路追踪
运维·后端·go
Sinclair21 小时前
内网服务器离线安装 Nginx+PHP+MySQL 的方法
运维
叶落阁主21 小时前
Tailscale 完全指南:从入门到私有 DERP 部署
运维·安全·远程工作
0xDevNull1 天前
Linux切换JDK版本详细教程
linux
进击的丸子1 天前
虹软人脸服务器版SDK(Linux/ARM Pro)多线程调用及性能优化
linux·数据库·后端
茶杯梦轩1 天前
从零起步学习RabbitMQ || 第二章:RabbitMQ 深入理解概念 Producer、Consumer、Exchange、Queue 与企业实战案例
服务器·后端·消息队列
甲鱼9292 天前
MySQL 实战手记:日志管理与主从复制搭建全指南
运维
Johny_Zhao3 天前
OpenClaw安装部署教程
linux·人工智能·ai·云计算·系统运维·openclaw
YuMiao3 天前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
chlk1234 天前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统