1、实验环境
Ubuntu64位: ubuntu 20.04LTS
待编译内核: linux-5.4.109
虚拟机: VMware
2、下载内核源码
网址:https://www.kernel.org
我是选择了对应版本的tarball下载的
3、解压缩内核原码文件
(1)切换到root用户——“su
”并输入密码
(如果显示什么密码啥失败 就设置一下root密码——“sudo passwd root”)
("exit"命令切换回用户态)
(2)将下载的新内核压缩文件复制到/usr/src目录下
①mkdir /usr/src/linux-5.4.109
——在/usr/src目录下创建文件夹linux-5.4.109
② cp linux-5.4.109.tar.xz /usr/src/linux5.4.109
——到下载包的位置,执行命令
③xz -d linux-5.4.109.tar.xz
——解压缩xz,大概执行一分钟左右
④tar -xvf linux-5.4.109.tar.xz
——解压缩tar
4、清除残留的.config和.o文件
(1)进入/usr/src/linux-5.4.109/linux-5.4.109目录
(第一个linux-5.4.109是之前创的文件夹名,第二个是下载的内核中的文件,不要混淆了)
(2)安装ncurses包 (我已经安装了就不演示了)
apt-get install libncurses5-dev
(3)make mrproper
【注意:一定要进入linux-5.4.109子目录,不然会报错:make: *** No rule to make target 'meproper'. Stop.
】
5、配置内核
make menuconfig
【报错了:/bin/sh: 1: flex: not found
make[1]: *** [scripts/Makefile.host:9: scripts/kconfig/lexer.lex.c] Error 127】
解决(依次安装bison和flex):apt-get install bison
apt-get install flex
成功后如图:
一般采用默认值 选择保存配置信息
文件名采用默认的.config→→ (如果修改了配置就这样,没修改直接第一个界面选择第二个选项)
配置的话:
“y”——将相应特性的支持或设备驱动程序编译进内核;
“m”——将相应特性的支持或设备驱动程序编译进可加载模块,在需要时可由系统或用户自行加入到内核中;
“n”——内核不提供相应特性或驱动程序的支持。
6、编译内核,生成启动映像文件
(1)安装openssl
apt-get install libssl-dev
没安装的话会报错
(2)执行编译内核命令:make
或者make -j2
(双核CPU编译)make -j4
(4核CPU编译) 【多核编译可加快编译速度】
(3)报错解决
错误:
解决:
①vim .config
②找到行并置空CONFIG_SYSTEM_TRUSTED_KEYS="debian/certs/benh@debian.org.cert.pem"
修改为
CONFIG_SYSTEM_TRUSTED_KEYS=" "
【用:/CONFIG_SYSTEM_TRUSTED_KEYS
搜索定位到该行】
:wq
保存并退出
7、编译模块
make moudles
8、安装内核
(1)安装模块:make moudles_install
(2)安装内核:make install
9、配置gurb引导程序
update-grub2
【该命令会自动修改grub】
10、重启系统
重启系统:reboot
查看Linux内核版本号:uname -a