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进行内核的配置了。

相关推荐
安科士andxe6 小时前
深入解析|安科士1.25G CWDM SFP光模块核心技术,破解中长距离传输痛点
服务器·网络·5g
小白同学_C9 小时前
Lab4-Lab: traps && MIT6.1810操作系统工程【持续更新】 _
linux·c/c++·操作系统os
今天只学一颗糖9 小时前
1、《深入理解计算机系统》--计算机系统介绍
linux·笔记·学习·系统架构
2601_9491465310 小时前
Shell语音通知接口使用指南:运维自动化中的语音告警集成方案
运维·自动化
儒雅的晴天10 小时前
大模型幻觉问题
运维·服务器
Gofarlic_OMS11 小时前
科学计算领域MATLAB许可证管理工具对比推荐
运维·开发语言·算法·matlab·自动化
通信大师11 小时前
深度解析PCC策略计费控制:核心网产品与应用价值
运维·服务器·网络·5g
dixiuapp11 小时前
智能工单系统如何选,实现自动化与预测性维护
运维·自动化
不做无法实现的梦~11 小时前
ros2实现路径规划---nav2部分
linux·stm32·嵌入式硬件·机器人·自动驾驶
Elastic 中国社区官方博客11 小时前
如何防御你的 RAG 系统免受上下文投毒攻击
大数据·运维·人工智能·elasticsearch·搜索引擎·ai·全文检索