用Ubuntu 20.04编译Linux内核

1. 将Linux源码tar包拷贝到合适的目录,然后用“tar xvf <文件名>”解压。

2. 安装编译内核所需依赖。
sudo apt install bison flex libssl-dev libelf-dev

3. 生成内核配置文件,或拷贝一份当前系统所用的配置文件。
由编译内核的目的决定。
如果你想研究Ubuntu的某一个版本的内核,那就拷贝一份该版本所用的内核配置文件到Linux源码根目录下。当前运行的Ubuntu的配置文件在/boot文件夹下,以config开头,如/boot/config-5.4.0-26-generic。将其拷贝到Linux源码根目录下,改名为.config(注意前面的点)。
或者,也可以用make menuconfig来生成一份默认的内核配置文件。
或者,为了研究syzkaller发现的漏洞,可以用syzkaller的内核配置文件。
你也可以在一个内核配置文件的基础上进行微调,比如将“=m”改成“=y”,或“=y”改成“=n”。
本步骤结束时,Linux源码根目录下应该已经存在合适的.config文件。

4. 编译
输入“make -j4”开始编译。j后面的数字不一定越大越好,还是要根据虚拟机的核心数量来决定。
如果编译时依旧出现要选择y/n,可以按Ctrl+C退出编译,运行“make olddefconfig”,这样就能为那些未决定的配置选项生成默认配置。

5. 编译完成
编译完成后,会提示bzImage存放在何处。另外,Linux源码根目录下会出现vmlinux文件,可以用来gdb调试。

评论

此博客中的热门博文

一篇文章读懂Tor原理

macOS 10.15系统上用VMWare Fusion 11.5虚拟机安装Ubuntu 20.04系统步骤