有安装zfs的方法吗

编译zfs会报错:

configure: error:
*** The __copy_from_user_inatomic() Linux kernel function is
*** incompatible with the CDDL license and will prevent the module
*** linking stage from succeeding. OpenZFS cannot be compiled.

dnf 找不到 dkms zfs 包

有什么安装方法吗

openeuler2403

摸索解决了,思路是修改 config/kernel-copy-from-user-inatomic.m4的 AC_MSG_ERROR改为 AC_MSG_WARN,报错改为警告信息。

还遇到一个问题就是 内核版本不匹配​​:ZFS 模块是针对旧内核(6.6.0-95...)编译的,但你的系统已经升级到 6.6.0-96...,导致 modprobe 找不到模块。

解决简略步骤:

git clone GitHub - openzfs/zfs: OpenZFS on Linux and FreeBSD

方法:修改 .m4 文件,跳过 GPL 检查(推荐)​

直接修改 config/kernel-copy-from-user-inatomic.m4,使其不报错,而是静默跳过并使用 copy_from_user() 替代。

​修改步骤:​

  1. ​打开 kernel-copy-from-user-inatomic.m4​:

nano config/kernel-copy-from-user-inatomic.m4


* ​**​找到报错部分​**​(`AC_MSG_ERROR`),修改为警告并跳过:
* ```
AC_DEFUN([ZFS_AC_KERNEL___COPY_FROM_USER_INATOMIC], [
    AC_MSG_CHECKING([whether __copy_from_user_inatomic is available])
    ZFS_LINUX_TEST_RESULT([__copy_from_user_inatomic_license], [
            AC_MSG_RESULT(yes)
    ], [
            AC_MSG_RESULT(no)
            AC_MSG_WARN([
    *** Skipping `__copy_from_user_inatomic()` due to GPL license conflict.
    *** Using `copy_from_user()` as fallback (may impact performance).
            ])
            AC_DEFINE([HAVE_COPY_FROM_USER_INATOMIC], [0], [GPL-only, disabled])
    ])
])
  • ​保存文件​​,然后重新生成 configure
./autogen.sh && ./configure

编译:
make

安装:
make install

加载:
modprobe zfs

问题2:内核版本不匹配

modprobe zfs
modprobe: FATAL: Module zfs not found in directory /lib/modules/6.6.0-96.0.0.89.oe2403.x86_64

方法 :重启进入旧内核(临时方案)​

  1. 查看所有可用内核:

sudo grubby --info=ALL | grep -E “kernel|index”


* 选择旧内核(`6.6.0-95...`)启动:
* ```
sudo grubby --set-default-index=1  # 假设旧内核是 index=1
sudo reboot
  • 启动后检查内核:

uname -r


* 再次尝试加载 ZFS:

sudo modprobe zfs