【Arch Linux】编译安装 AUR 上的 Linux 内核
Arch Linux 可以使用多种 Linux 内核. 默认的内核由官方 core
仓库的 linux
包提供, 一般另附有 linux-headers
包. 官方仓库中提供的预编译内核还有同为 core
仓库的 linux-lts
和 extra
仓库的 linux-zen
. 不过, 在一些场合下, 例如需要更新的或是有 patch 的内核时, 我们可能需要从 AUR 中获取需要的内核并手动编译安装. 本文以 linux-mainline
包为例, 主要借助 yay
更便捷地处理相关操作.
通常情况下, 只需要 yay -S linux-mainline
即可. 以下需要对编译安装过程做一些可选操作.
获取 PKGBUILD
使用 yay
的 -G
选项仅获得 PKGBUILD
等相关的文件. 添加 --force
以强制保持与上游 AUR 包内容一致. 由于该操作默认目标文件夹为当前文件夹, 所以可以切换到 ~/.cache/yay
后再获取.
1 | mkdir -p ~/.cache/yay && cd ~/.cache/yay |
(可选) 修改上游仓库 URL
进入 linux-mainline
文件夹查看 PKGBUILD
后可以发现其从 <kernel.org> 的 Git 服务器获取上游的 Linux 源码:
1 | ... |
但是完整的 Linux 仓库体积已经超过 2 GB, 对于中国大陆用户不够友好. 好在 <kernel.org> 在北京已经设置 Git 镜像: https://kernel.source.codeaurora.cn/. 所以我们可以修改上游仓库的 URL, 以提高下载速度. 在编辑器中打开 PKGBUILD
:
1 | 26c26 |
或者是执行下面的命令修改:
1 | sed -i 's/git+https\:\/\/git\.kernel\.org\/pub\/scm\/linux\/kernel\/git\/torvalds\/linux\.git/git+https:\/\/kernel.source.codeaurora.cn\/pub\/scm\/linux\/kernel\/git\/torvalds\/linux.git/' PKGBUILD |
此外, 还可以通过 yay
的 --editmenu
参数交互式编辑:
1 | yay -S --editmenu linux-mainline |
(可选) 获取 PGP 密钥
查看 PKGBUILD
可以看到用户需要接受三个 PGP 密钥, 分别是:
1 | ... |
但是安装过程中可能发现 yay 卡在获取密钥的部分. 对于后两个密钥, 可以通过:^1
1 | gpg --keyserver hkp://keys.openpgp.org --recv-keys 647F28654894E3BD457199BE38DBBDC86092693E |
获取.
这个选项可以持久化:^2
1 | yay -Y --gpgflags "--keyserver hkp://keys.openpgp.org" --save |
不过对于第一个密钥, 可能需要其他的方法. 首先保证存在 gpg2
(对应包为 core
仓库的 gnupg
), 再:
1 | gpg2 --auto-key-locate cert,pka,dane,wkd,keyserver --locate-keys torvalds@kernel.org |
(可选) 多线程编译安装
需要手动传入 make
命令的编译 flags:
1 | MAKEFLAGS="-j16" yay -S linux-mainline # 16 线程 |
多线程编译仍然可能需要较长时间 (笔者测试需要 30 分钟左右, 因机器配置而异). 请不要断电.
更新 Boot loader 配置
以 GRUB 为例:
1 | sudo grub-mkconfig -o /boot/grub/grub.cfg |
重启
这是非常重要的 - 否则折腾半天系统服务没法加载的时候会很痛苦.
参考
【Arch Linux】编译安装 AUR 上的 Linux 内核
1.Android 使用 Gradle 命令行签名 APK
2.Arch Linux 安装 TiddlyWiki + 配置服务 + 添加自定义插件 + Cloudflare 代理 + Caddy 反向代理
3.Arch Linux 在 ASUS Zenbook S 13 OLED (UM5302TA) 上的 patch
4.使用 GPG 加密、解密和验证信息
5.Kotlin 简要语法快速学习
6.【Arch Linux】使用 Wine 运行 Galgame
7.【Arch Linux】本地化:简体中文
8.Arch Linux 物理机安装大体思路和部分实现细节(MBR & GPT)
1.【ACG音乐分享】Ceui《今、歩き出す君へ》
2.使用 GPG 加密、解密和验证信息
3.【翻译】如何编写 Git 提交消息
4.Linux 时间操作及其同步
5.【实测】Python 和 C++ 下字符串查找的速度对比
6.Codeforces 1312B: Bogosort