在上面的文章中,我们多次提到了Linux内核,我们知道Linux内核是Linux操作系统的核心内容。 内核实现对硬件的管理,并为应用软件使用硬件提供套接字。
对于Linux开发者来说,内核学习和开发才是最终目标。 为此,我们明天首先介绍一下内核的编译。
你需要知道的是,编译和安装Linux内核并不像想象的那么困难和复杂,尽管只需要几条命令就可以完成。
在本文中,我们将逐步解释如何从源代码编译和安装 Linux 内核。 需要说明的是,本指南是基于Ubuntu 18.04版本编译和安装的,其他发行版可能有所不同。
编译 Linux 内核
整个内核编译过程非常简单,并且内核编译花费的时间也比较长。 这主要是因为内核的代码较多。 事实上,如果你有一台强大的计算机,时间会短得多。 另外需要注意的是,建议在虚拟机环境下编译,以免出错导致系统出现问题。 如果在虚拟机上测试,建议系统分区和内核源码分区大小小于20GB。
第一步:下载源码
1.进入Linux内核官网,下载最新版本,或者其他版本的内核代码。 这是源代码的 tarball。
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、可以通过以下命令启动配置界面
制作菜单配置
该命令将运行一些脚本,然后打开配置界面
4. 下面是打开的配置界面。 可以看到它包含了所有的内核组件git编译内核源码,包括文件系统、网络、IO栈、虚拟化和设备驱动等,如果你不熟悉的话,不需要做任何改动。
Step5:编译内核
1.可以通过以下命令编译内核
制作-j10
里面的参数是并发数,一般可以是CPU的两倍。
2. 安装模块
sudomakemodules_install
3.安装内核
须藤make安装
安装完成后,会出现以下提示信息。
Step6:重启并验证版本
当上述步骤正确后,我们重新启动计算机,然后运行以下命令。
uname-夫人
此时可以看到内核版本已经是我们编译的版本了。
推理
通过前面的步骤git编译内核源码,我们就可以轻松编译出一个内核了。 如果内核模块开发得早的话,也会基于内核代码树,所以这是内核开发的基础。
可能出现的问题
编译内核时可能会遇到这个问题:
没有规则创建目标 debian/certs/debian-uefi-certs.pem,由 certs/x509_certificate_list 请求
只需编辑要编译的内核目录中的配置文件即可。简单的形式是执行以下命令
配置文件
然后找到CONFIG_SYSTEM_TRUSTED_KEYS并将其设置为空,如下所示。
CONFIG_SYSTEM_TRUSTED_KEYS=””