步骤分为以下:
- 安装虚拟机,创建fedora环境。
- 下载更新版的内核压缩包并解压。
- 进入解压后的文件目录下,安装软件依赖包。
- 第一次编译尝试:清除。
- 查看剩余磁盘是否足够。
- 编译内核。
- 安装内核。
- 总结。
1.安装虚拟机并创建fedora环境:
- 自行上官网下载VirualBox虚拟机,我使用的是server版,这个版本的虚拟机是命令行界面。
- 而后创建虚拟机,我的fedora版本是29版的。
- 创建时磁盘空间最少50G,我设置的是120G,注意,设置语言之后的界面是设置时区等,在这个界面的第一行最后一个点击,我们要手动更改一下fedora-root挂载点下的磁盘空间为40G以上,否则对之前的磁盘设置再大也无济于事,这是血泪的教训!
- 在下面界面里,点击设置,点击系统,点击处理器,设置处理器个数(具体个数参考你本机处理器个数,在本机任务管理器性能里查看CPU个数)
2.下载更新版的内核压缩包并解压:
- 进入虚拟机,cd /usr/src
- 输入 uname -a查看当前的内核版本,需要root权限则输入 su -,输入命令,即进入root模式。
- 在当前目录下输入命令下载比自己的内核版本高的版本,否则产生不兼容问题,示例:
wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.19.19.tar.gz
网址查看:https://www.kernel.org/pub/linux/kernel/v4.x
- 解压:
tar zxvf linux-4.19.19.tar.gz
3.进入解压后的文件目录下,安装软件依赖包:
- 进入解压后的目录:
cd linux-4.19.19
- 安装软件依赖包:
- 说明:fedora与Ubuntu的软件依赖包名字完全不同,在此笔者又栽了个跟头,找到一个Ubuntu的教程还可以,结果软件依赖包死活装不上,最后发现,这二者要下载的完全不同。
- 以下是编译出错缺失的软件依赖包:
- 因此,此处因输入命令下载相应的软件依赖包:(示例)
yum -y install /usr/bin/pathfix.py bison elfutils-devel
- 以上显示的全部都要下载,另外,还有一个ncurses-devel也要下载。
4.第一次编译尝试:清除:
- 依次输入:若出错显示没有make命令,则yum -y install make即可
- 说明:-y意味下载过程中对询问的是否下载回答的yes,可以去除-y试一下就能明白。
make mrproper
make clean
make menuconfig
- 作用不细说,大致为清除无关文件,省出磁盘空间。
- 其中,最后一行命令之后,会跳出一个图形化界面,出现选择的图形化界面后,直接按右方向键选择到exit退出,退出提示中选择保存,实现内核的默认配置。
5.查看内存磁盘剩余空间:
df -i #查看节点剩余
df -h #查看磁盘剩余空间
df /home #查看home文件夹目录下的空间
lscpu #查看处理器个数
6.编译内核:
- 根据处理器个数:
make -jn #编译命令,n为可开的线程数
- 编译过程:
6.安装内核:
make modules_install
make install
界面:
- reboot重启
- 重启后启动界面出现新的内核版本:fedora(4.19.19)
7.总结:
- Linux 内核编译本质上是一个非常简单的操作,但我执行了五次,也将虚拟机创建 了五次,才成功,究其原因,是细节做得不够到位,无法认清问题出现的本质原因, 编译分成几大步:下载解压、软件依赖包安装、清除操作、配置设置、编译内核、 安装内核、重启。
- 其中在软件依赖包安装这一步中,依赖包屡屡安装不成功,出错 no match,原因在 于,未辨清 fedora 与 Ubuntu 要安装的依赖包名称并不相同。
- 在编译内核过程中,屡屡出错:no space,究其根本,是磁盘设置得不够大以及创建时分区没有做好,而后创建时在 fedora-root 挂载下设置 100G,完全没问题。
- 要提高编译速度,可在本机上查看内核数量,而后在创建虚拟机时设置内核个数, 编译时可通过 make –jn(n 为设置的线程数)操作提高速率。