Arch Linux 2020年12月更新Kernel到5.10版本以后,我的AR5B22网卡的蓝牙无法正常工作,于是我尝试降级内核到5.9以后蓝牙又可以正常工作了,于是可以判定问题是存在于内核上。为了解决这个问题我重新编译了内核。这篇文章将记录如何使用ABS(Arch Build System)编译ArchLinux的内核(Kernel)。蓝牙问题将在记录在下一篇文章。Arch的wiki已经非常完善了,大多数问题都可以在archwiki中找到相关的解决方案,遇到问题建议多查wiki。
## 过程
mkdir ~/kernelbuild && cd ~/kernelbuild
sudo pacman -S asp base-devel
asp update linux
asp export linux
PKGBUILD
文件,可以根据我们的需求修改的部分。$ ls -l ./linux
总用量 236
-rw-r--r-- 1 rainerosion rainerosion 232952 2月 5 03:32 config
-rw-r--r-- 1 rainerosion rainerosion 6181 2月 5 03:32 PKGBUILD
PKGBUID
文件。找到如下的代码
build() {
cd $_srcname
make all
make htmldocs
}
修改为
build() {
cd $_srcname
make all -j$(nproc)
make htmldocs
}
prepare()
函数中执行补丁程序和修改配置文件信息。若需要获取当前内核的config文件可以执行下面的命令获取。zcat /proc/config.gz > .config
#当然也可以在Kernel源代码所在路径下执行
make oldconfig
PKGBUILD
同级目录下的config文件。make nconfig
# 要使用updpkgsums工具需要先安装一下包
sudo pacman -S pacman-contrib
updpkgsums
# 加上参数i,在内核编译完成后会执行安装操作
# 当然你也可以使用pacman -U <package>来安装
# 如果你不想要清除构建过程中的文件,包括源代码,请去除c参数
makepkg -sci
https://wiki.archlinux.org/index.php/Kernel/Arch_Build_System