在上面文章中我们反复提及过Linux内核,晓得Linux内核才是Linux操作系统最为核心的内容。内核实现了对硬件的管理linux内核编译,为应用软件提供了使用硬件的插口。
对于Linux开发人员而言,内核的学习和开发才是终极目标。为此我们明天先介绍一下内核的编译。
须要晓得的是arch linux,Linux内核的编译和安装并非想像的这么难,这么复杂,虽然只须要几条命令就可以搞定。
本文,我们将一步一步地介绍怎样从源代码编译和安装一个Linux内核。须要注意的是本指导基于Ubuntu18.04版本编译安装,其它发行版可能会有差别。
编译一个Linux内核
整个内核编译的过程十分简单,而且内核编译须要耗费比较长的时间。这主要是由于内核的代码十分多。其实,假如你的计算机性能强劲,时间会短好多。另外须要注意的是,建议在虚拟机环境下编译,这样防止错误造成系统问题。若果在虚拟机测试,建议系统分区和内核源代码分区的大小小于20GB。
Step1:下载源代码
1.步入Linux内核的官网,下载最新版本linux开源软件,或则其它版本的内核代码。这儿是源代码的压缩包。
2.假定我们如今在一个Linux操作系统中,在命令行输入如下命令就可以下载内核了。
wget链接(因为链接会被觉得是广告,本文省略链接,请自行复制)
在下载的过程中可以看见下载进度,下载完成后信息大致如下所示。
Step2:解压源代码
压缩包下载完成后,可以通过tar命令解压。
tarxvflinux-5.9.6.tar.xz
在解压的时侯可以看见文件列表,这个会好多,可能须要等一会儿。
Step3:安装须要的软件包
安装编译工具以及其它一下依赖的软件包,在Ubuntu18.04环境下执行如下命令。
sudoapt-getinstallgitfakerootbuild-essentialncurses-devxz-utilslibssl-devbcflexlibelf-devbison
假如一切顺利,大约安装输出信息如下所示。
Step4:配置内核代码
在编译内核之前,我们可以对内核源代码进行配置。配置的目的主要是确定什么模块会编译到内核当中。
1.步入源代码目录
cdlinux-5.9.6
2.从当前机器的启动目录拷贝配置信息到源代码目录。这步操作的意思是我们编译内核的配置采用用当前环境一致的配置。
cp-v/boot/config-$(uname-r).config
3.可以通过如下命令启动配置界面
makemenuconfig
该命令会运行一些脚本,之后打开一个配置界面
4.下边是打开的配置界面。可以看出上面包含所有的内核组件,包括文件系统,网路,IO栈,虚拟化和设备驱动等等。假如你不熟悉,可以不做任何更改。
Step5:编译内核
1.通过如下命令就可以编译内核了
make-j10
里面参数是并发数目,一般可以是CPU的2倍。
2.安装模块
sudomakemodules_install
3.安装内核
sudomakeinstall
安装完成后会有如下提示信息。
Step6:重启,验证版本
当上述步骤都没有出错的情况下,我们重启一下计算机,之后运行如下命令。
uname-mrs
此时就可以看见内核版本早已是我们编译的版本了。
推论
通过前面几步,我们可以很简单的编译一个内核。假如前面开发内核模块,也是要基于内核代码树的linux内核编译,因而这个是内核开发的基础。
可能遇见的问题
编译内核的时侯可能会碰到这个问题:
没有规则可制做目标
debian/certs/debian-uefi-certs.pem,由
certs/x509_certificate_list需求停止
在要编译的内核目录下编辑一下配置文件即可。简单的形式是执行如下命令
vim.config
之后找到
CONFIG_SYSTEM_TRUSTED_KEYS,将其设置为空,也就是下边这个样子。
CONFIG_SYSTEM_TRUSTED_KEYS=””