我在一台新机器上安装了 Ubuntu 20.10,并使用了 ZFS 选项,也就是说,/boot
和根文件系统都在 ZFS 上。但是,我需要较新的内核版本 5.9 来支持硬件,我使用主线内核 PPA。 很遗憾,Ubuntu 20.10 (v0.8.4) 中包含的 ZFS 版本不适用于 Linux v5.9 内核(构建内核模块失败)。
这导致了一个相当困境:我如何才能同时使用所需的较新内核版本和 ZFS(当然,包括完整功能,例如 ZSys)?
我试过了从源代码构建和安装 ZFS。 但是,那
.deb
从源代码构建 ZFS 时创建的软件包与 Ubuntu 的软件包不兼容以及任何依赖于 Ubuntu 软件包的东西(像 ZSys!) 因软件包冲突而必须被删除/无法安装。由于这些问题,我注意到目前Debian bullseye(测试版)有较新的软件包,其中 ZFS 版本为 0.8.5(与 Linux v5.9 兼容),并且打包方案看起来与 Ubuntu 中的方案兼容。因此,我尝试升级到这些软件包,并且确实成功为我的主线 5.9.8 内核构建了内核模块。但是,在启动时,这无法挂载 ZFS 文件系统(即使使用普通的 5.8 Ubuntu 内核):
Command: mount -o zfsutil -t zfs rpool/ROOT/ubuntu_682y7z /root// Message: filesystem 'rpool/ROOT/ubuntu_682y7z' can not be mounted: Permission denied
所以,现在我陷入了困境。运行需要升级 ZFS 的主线内核的最可靠方法是什么?我确实考虑过构建一个带有内置 ZFS 支持的自定义 5.9 内核,但我的内核中的 ZFS 版本不会与使用旧版本 ZFS 的已安装 Ubuntu 软件包发生冲突吗?
答案1
我注意到,虽然Ubuntu 开发版本 (hirsute) 中的 ZFS 软件包版本目前0.8.4-1ubuntu13
, 这变更日志显示以下内容:
更新日志
zfs-linux (0.8.4-1ubuntu13) hirsute; urgency=medium * Add Linux 5.9 compat fixes (LP: #1899826) - 4800-Linux-5.9-compat-add-linux-blkdev.h-include.patch include blkdev.h in various sources - 4801-Linux-5.9-compat-NR_SLAB_RECLAIMABLE.patch deprecate some older page free stats for arc free page calculation - 4802-Linux-5.9-compat-make_request_fn-replaced-with-submi.patch API change for block allocation - 4805-Increase-Supported-Linux-Kernel-to-5.9.patch allows driver to be built against 5.9 * Add Linux 5.10 compat fixes - 4710-Use-percpu_counter-for-obj_alloc-counter-of-Linux-ba.patch prerequisite for 4804-Linux-5.10-compat-frame.h-renamed-objtool.h.patch - 4720-Linux-5.7-compat-Include-linux-sched.h-in-spl-sys-mu.patch prerequisite for next set of patches - 4804-Linux-5.10-compat-frame.h-renamed-objtool.h.patch rename check of linux/frame.h to linux/frame.h - 4805-Linux-5.10-compat-percpu_ref-added-data-member.patch API check to the percpu_ref structure - 4806-Linux-5.10-compat-check_disk_change-removed.patch check_disk_change removed, functionality moved to zfs_check_media_change - 4807-Linux-5.10-compat-revalidate_disk_size-added.patch use revalidate_disk_size where necessary -- Colin Ian King <[email protected]> Tue, 3 Nov 2020 12:22:22 +0000
这表明与较新的 Linux 内核兼容所需的更改已反向移植到这些软件包。因此,我zfs-dkms
从hirsute
存储库安装了该软件包,这为我的主线内核提供了一个可用的 DKMS ZFS 模块。