1. 下载内核文件。
内核可以直接从www.kernel.org网站下载,但是网速一般都不理想。建议从国内的开源镜像站下载。比如:清华大学开源镜像站(mirrors.tuna.tsinghua.edu.cn)。
直接下载linux-linux-5.10.2内核:
https://mirrors.tuna.tsinghua.edu.cn/kernel/v5.x/linux-5.10.2.tar.xz
2. 安装开发工具。
archlinux安装base-devel工具包即可。(其实可以省略)
pacman -S base-devel
3. 解压内核。
tar xvf linux-5.10.2.tar.xz
4. 自定义内核。
可以在解压文件根目录下创建.config文件,添加linux需要开启的功能。
Make nconfig(基于curses)是.config的图形管理界面。使用起来非常方便。还有
make config:纯命令行方式。
make gconfig:基于GTK(GNOME)环境窗口界面。
make xconfig:基于Qt(KDE)环境窗口界面。
make defconfig:根据当前运行内核进行配置。
make allyesconfig:默认添加所有配置。
make allnoconfig:默认不添加所有配置。
根据自己的需求定制内核源码。
y,表示自动启动,menu config界面显示为*。n表示禁用,menu config界面显示为空格。m表示手动启动,menu config界面显示为m。
archlinux可以使用 zcat命令获取当前运行内核的config文件。其它发行版的config文件可能直接放在/boot目录中。
$ zcat /proc/config.gz > .config 或者touch .config
5. 编译内核。
在源码文件根目录下运行:
make -j 8 #12代表使用的线程数。根据开发平台自己决定。
make [-j #]:全编译。
make dir/:只编译 dir目录中的代码。
make dir/file.ko:只编译dir目录中特定模块。
※交叉编译内核:编译的目标平台与当前平台不相同。
make ARCH=arch_name
※获取编译目标平台的使用帮助。
make ARCH=arch_name help
比如:make ARCH=arm help
6. 编译安装模块。
实际上就是复制模块包到目录中。运行下面命令,自动将生成的ko文件放到当前运行平台的/lib/modules目录中。(※此处需要用root权限,否则会失败)。
# make modules_install
7. 安装内核
# make install:安装内核到/boot目录,并且它会修改grub.cfg文件。
archlinux可以手动安装:
cp -v arch/x86/boot/bzImage /boot/
8. 清理文件。
安装完成后清理一下编译生成的用不到到文件,节省硬盘空间。
※如果这个内核源码已经编译过(不是刚从官方网站下载的),最好事先清理一下编译生成的文件。
make clean:清理生成的多数文件,但会保留config文件,并且备份config文件。
make mrproper:清理所有生成的文件,包含config文件。
make distclean: mrproper、patches等补丁文件以及编辑器备份,都会被清理掉。
9. 卸载内核。
boot中用不到的内核。
修改grub.cfg。
lib/modules中用不到的模块。
/usr/src/linux/目录下不需要的内核源码。