开启CONFIG_DEBUG_LOCK_ALLOC编译Ubuntu内核时ZFS许可问题求解
编译Ubuntu内核ZFS许可冲突解决方案
方法一:完全排除ZFS组件编译
- 内核配置阶段直接禁用ZFS相关选项即可:
- 若使用
make menuconfig/make nconfig等可视化配置工具,搜索CONFIG_ZFS,将其值设为n即可关闭ZFS模块编译 - 若使用Ubuntu官方提供的内核编译脚本,可在编译前执行
echo "CONFIG_ZFS=n" >> .config强制写入配置,同时在调用编译脚本时添加--disable-zfs参数,全程跳过ZFS组件的编译流程
- 若使用
- 禁用后重新编译内核,不会再触发CDDL许可与
CONFIG_DEBUG_LOCK_ALLOC的冲突报错
方法二:本地编译自定义ZFS替换官方DKMS包
可以本地修改ZFS许可后编译,替换DKMS默认拉取的官方安装包,操作步骤如下:
- 下载对应版本的ZFS源码,打开源码根目录下的
META文件,将License字段的值修改为GPL - 安装ZFS编译所需依赖后执行配置命令:
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-linux=/path/to/your/kernel/source --with-linux-obj=/path/to/your/kernel/build - 配置完成后依次执行
make、make install完成编译安装 - 手动注册本地编译的ZFS到DKMS:
- 执行
dkms add -m zfs -v <你的ZFS版本号> - 执行
dkms build -m zfs -v <你的ZFS版本号> -k <你编译的内核版本号> - 执行
dkms install -m zfs -v <你的ZFS版本号> -k <你编译的内核版本号>
- 执行
- 完成上述操作后DKMS会优先使用本地注册的ZFS模块,不会再从网络拉取官方ZFS deb包
注意:修改ZFS许可仅可用于个人测试场景,CDDL与GPL的许可兼容性存在法律风险,请勿将修改后的ZFS用于生产环境或对外分发
内容的提问来源于stack exchange,提问作者Ashwin Kumar
相关产品推荐
相关产品推荐

