simple way to compile kernel on archlinux

实际上ArchLinux的Wiki已经写得非常清楚了,这里只是记录、简化和补充。

首先下载一份源代码,比如这个。同时下载对应的签名,比如这个

验证签名:

1
2
$ gpg --list-packets linux-4.19.tar.sign
$ gpg --recv-keys <上一步输出的keyid>

第二步之后可以通过gpg --list-public-keys查看导入的公钥。

然后进行验证:

1
2
$ unxz linux-4.19.tar.xz
$ gpg --verify linux-4.19.tar.sign linux-4.19.tar

之后解压linux-4.19.tar然后切换到解压生成的目录。

1
$ make clean && make mrproper

复制一份config文件:

1
$ zcat /proc/config.gz > .config

一般来说.config不需要什么修改,假如需要编译一份需要带有调试信息的内核,只需要修改这里:

1
CONFIG_DEBUG_INFO=y

当然也可以加个局部版本号:

1
CONFIG_LOCALVERSION="-fatcat"

之后便是编译:

1
$ make -j4

时间会比较长。编译完成之后:

1
2
$ sudo make modules_install
$ sudo cp -v arch/x86_64/boot/bzImage /boot/vmlinuz-linux-fatcat

生成ramdisk:

1
$ sudo mkinitcpio -k 4.19.0-fatcat -g /boot/initramfs-linux-fatcat.img

之后便是修改增加启动项,如果是grub,只需要:

1
$ sudo grub-mkconfig > /boot/grub/grub.cfg

另外如果通过dkms安装过virtualbox模块,还需要运行dkms对新的内核编译一份对应的模块:

1
$ sudo dkms autoinstall -k 4.19.0-fatcat