linux编译内核
操作系统老师布置的作业,已经完成半个多月了来补写博客,可能会有疏漏,欢迎评论指出问题,谢谢
编译环境
- 虚拟机: VMware workstation pro 16
- 虚拟机操作系统: ubuntu-22.04.1-desktop-amd64
- 原系统内核版本:5.19.0
建议
给自己的虚拟机设置至少65G硬盘
,最好内存4G
查看自己的系统版本
命令:
uname -r
下载kernel
在自己的ubuntu系统中下载kernel
网址如下:
https://mirrors.tuna.tsinghua.edu.cn/
https://www.kernel.org/
官网下载速度略慢,建议镜像网站
再镜像网站搜索kernel,选择要下载的版本,推荐比自己内核版本高一个等级的版本
,比如自己的是5.x那就下载6.x的kernel
推荐下载.tar.xz格式
磁盘分区
- 点击
win键
,找到disk
并打开
- 找到文件根目录系统所在的分区,把多划分出来的内存分过去
编译前的准备
- 首先切换成
root用户
- 然后把下载好的linux转移到
/usr/src/
下
sudo -i
sudo cp linux-6.2.6.tar.xz /usr/src/
- 切换到linux包所在目录下
cd /usr/src/
- 解压内核源码,这里使用的是 linux-6.2.6.tar.xz ,.xz为双重压缩,因此先使用
xz命令
解压
sudo xz -d linux-5.11.1.tar.xz
- 然后
tar命令
解压
sudo tar -xf linux-5.11.1.tar
- 切换到 linux-6.2.6 目录下
cd linux-6.2.6
修改配置
此处参考博文【linux系列】内核编译最新教程+常见问题总结
// 不建议使用
sudo make config
// 建议使用(图形界面,键盘操作)
sudo make menuconfig
// 强烈建议使用(图形界面,鼠标操作)
sudo make gconfig
一系列需要安装的:
make
sudo apt install make
gcc
sudo apt install gcc
gtk+-2.0 、gmodule-2.0 和 libglade-2.0
sudo apt install libgtk2.0-dev libglib2.0-dev libglade2-dev
flex
sudo apt install flex
bison
sudo apt install bison
启动gconfig
sudo make gconfig
如果需要修改配置可以在 gconfig中图形化进行设置
配置好后点击 Save 即可保存配置,生成 .config 文件
(博主什么也没改直接save了)
编译内核
ssl
sudo apt install libssl-dev
elf
sudo apt install libelf-dev
- 开始编译(j4意为多线程运行)
sudo make -j4
- 这个阶段耗时比较久,我和舍友用时四十分钟到三小时不等,看自己电脑性能如何了
- 这阶段的问题
make:*** [Makefile:2021: .] 错误 2
- 解决方法 :
gedit .config
把图中的几处改成图里的样子,建议对照下图看看哪里还有不同的,博客是编译完内核后半个月写的了,具体哪几个要改可能有些记不清了
- tips:根据室友的反馈,编译过程中最好别用电脑做别的,她当时在用wps然后Ubuntu就报错了
安装内核
- 安装模块
sudo make modules_install
- 安装内核
sudo make install
万里长征最后一步
设置开机进入 grub 引导界面
首先关掉密码登录
接下来可以参考博客:Ubuntu Linux系统 设置开机进入 grub 引导界面的方法
- 重启Ubuntu
reboot
- 设置了开机进入 grub 引导界面后姐可以自主选择内核登录了(自己的截图找不到了用了同学的,不要在意版本号)