几天来我一直尝试让 ZFS-on-Linux 在 Debian 7 上运行,但模块无法编译:
# dpkg-reconfigure zfs-dkms
------------------------------
Deleting module version: 0.6.3
completely from the DKMS tree.
------------------------------
Done.
Loading new zfs-0.6.3 DKMS files...
Building only for 2.6.32-openvz-042stab090.5-amd64
Module build for the currently running kernel was skipped since the
kernel source for this kernel does not seem to be installed.
当然,已经安装了标题和源:
# uname -r
2.6.32-openvz-042stab090.5-amd64
# dpkg -l | grep 2.6.32-openvz-042stab090.5-amd64
ii linux-headers-2.6.32-openvz-042stab090.5-amd64 1 amd64 Header files related to Linux kernel, specifically,
ii linux-image-2.6.32-openvz-042stab090.5-amd64 1 amd64 Linux kernel binary image for version 2.6.32-openvz-042stab090.5-amd64
ii linux-source-2.6.32-openvz-042stab090.5-amd64 1 all Linux kernel source for version 2.6.32-openvz-042stab090.5-amd64
#
所以我手动尝试了一下。仍然不行:
# dkms build zfs/0.6.3 -k `uname -r` --kernelsourcedir=/usr/src/linux-source-2.6.32-openvz-042stab090.5-amd64
Error! Your kernel headers for kernel 2.6.32-openvz-042stab090.5-amd64 cannot be found.
Please install the linux-headers-2.6.32-openvz-042stab090.5-amd64 package,
or use the --kernelsourcedir option to tell DKMS where it's located
ls /usr/src/linux-source-2.6.32-openvz-042stab090.5-amd64 | wc -l
90
它包含所有内容(arch、block、configs、debian ......)。WTF?
答案1
经过长时间的调试会话后,我发现 /lib/modules/2.6.32-openvz-042stab090.5-amd64 中到 /usr/src 和 /usr/include 的构建和源链接丢失了。
手动添加它们并且有效。
我很高兴我可以在 Linux 中工作,至少可以查看源代码并进行调试......