出于部分用户对ROCm和x86应用兼容的需求,让Arch Linux for Loong64官方维护4 KiB内存页大小的内核一直有较大的呼声。此前这一提案因为各种顾虑而一再搁置,但最近经过我们内部讨论后,最终决定向广大Arch Linux for Loong64用户提供4 KiB内存页大小的内核。
出于原生体验、上游支持和切换风险的考虑,我们仍不建议无特殊需求的用户使用4K内核。
维护4K内核的意义
目前ROCm需要在4K内核下才能使用,部分对x86等默认内存页大小为4 KiB的架构的兼容层也对4K内核存在需求,在我们官方维护之前,用户需要自行为这些场景构建内核。虽然对于Arch Linux用户来说,自行构建内核相对普遍,但考虑到官方维护能为用户带来便利,并可减少反馈时的分裂,我们决定官方提供4K内核,方便有这部分需求的用户。
使用4K内核的风险
龙架构默认的内存页大小为16 KiB,使用4K内核(尤其是混用4K与16K内核)可能面临包括但不限于以下问题:
- 旧16K内核下创建的Btrfs无法挂载
- kvm无法正常使用
- chromium(包括衍生的electron与qt webengine)无法正常使用
- 部分4K下构建的二进制文件无法在16K上运行
- 因4K内核上游支持不完善导致的其他一系列风险
因此,我们不建议对ROCm或者跨架构兼容层无特殊需求的用户使用4K内核。重点提醒:如果存在旧内核创建的Btrfs,切勿仅保留4K内核!
安装方法
目前linux-4k
内核已经进入Arch Linux for Loong64官方的extra
源,可以直接通过pacman
安装:
sudo pacman -Syu linux-4k
如果你使用的引导程序是GRUB,安装完成后可以使用以下命令更新GRUB选项:
sudo grub-mkconfig -o /boot/grub/grub.cfg
随后重启,即可在GRUB引导菜单中找到linux-4k
的选项。
维护说明
如何构建维护linux-4k
内核,维护团队内部此前有若干考虑:
- 在Arch Linux官方的几大内核中选择一个改为4K
- 这样会导致原有用户在升级之后内存页大小发生变化,风险太大
- 尤其是仅安装了选定内核且系统分区为Btrfs的用户,在升级之后将无法挂载并启动
- 被否决
- 额外维护一个单独的
linux-4k
内核
- 升级不破坏任何现状,更可接受
- 可从Arch Linux官方内核中派生,有若干选择
我们选择了第二种方案。考虑到维护团队大多使用Btrfs,对4K内核难免关注较少,为了减少潜在问题,我们选择从上游验证相对更充分的linux-lts
派生,使用脚本半自动修订,减少维护工作量并尽量轻松地保证版本及时更新。