Feature Request: Currently, the build scripts for ZFS/SPL only allow building kmod packages for Debian and Ubuntu. In contrast, it is possible to build DKMS packges for CentOS/RHEL and Fedora. It would be very useful to have DKMS packages for Debian and Ubuntu so that the ZFS and SPL modules can be automatically rebuilt after a kernel upgrade. This is described here.
Upgrading the kernel with the kmod package requires rebuilding the ZFS and SPL packages for the new kernel.
@jwittlincohen The ZFS build system will produce dkms packages that work on Debian/Ubuntu if the prerequisites are installed. In addition, that distribution family has taken over maintenance and development of packaging officially as zfs-linux downstream.
Is there something else you wanted?
@Conan-Kudo I just want to be clear that you are talking about building the ZFS and SPL packages found on the ZoL website. The documentation states, "DKMS (rpm-only): Building rpm-based DKMS and user packages can be done as follows. However, be aware that the build system currently does does [sic] support building deb-based DKMS packages." If it is indeed possible to build DKMS packages for Debian/Ubuntu using the sources from http://zfsonlinux.org/, could you provide the appropriate instructions, as the ones here only show the option to build DKMS RPMs?
If you are referring to the DKMS packages provided by Debian's repositories, I already know they exist. My goal was to create DKMS binaries of 0.70-rc3 for testing. As of this time neither Ubuntu nor Debian provide 0.7.0 packages in any of their repositories as it is not an official release.
Also note that Ubuntu does not provide up-to-date packages for 16.04 LTS so a documented way of building DKMS packages for it would be welcome.
I checked the Makefile in the ZFS 0.7.0-rc3 source package. All references to DKMS relate to the script rpm-dkms build script. As the name suggests, this only produces RPMs. :)
but how do we build deb for 0.7 ?
trying to get something working with kernel 4.11 on ubuntu
the 0.7 spl built and installed fine
but zfs, not much luck so far
also trying to work out how to get the latest spl-dkms
Unpacking zfs-dkms (0.6.5.9-5ubuntu4) over (0.6.5.9-5ubuntu4) ...
Setting up zfs-dkms (0.6.5.9-5ubuntu4) ...
Loading new zfs-0.6.5.9 DKMS files...
Building for 4.11.0-041100-generic
Building initial module for 4.11.0-041100-generic
configure: error:
* Please make sure the kmod spl devel
can specify the location of the spl objects with the
* '--with-spl-obj=PATH' option.
ERROR (dkms apport): kernel package linux-headers-4.11.0-041100-generic is not supported
Error! Bad return status for module build on kernel: 4.11.0-041100-generic (x86_64)
@MasterCATZ v0.6.5.9 doesn't support 4.11 kernel, next time please read package description. Build beta 0.7.0 or wait for 0.6.5.10.
There's multiple issues with this issue.
Regarding the issue though, If using an Ubuntu kernel and wanting to use a different zfs/spl, dkms actually is a blocker because it detects an existing zfs/spl and doesn't automatically build out of tree versions and as far as I know there's no way to globally override dkms to --force it to use your own (it checks version number only, and version != version across all debian variants).
When I was testing some Ubuntu kernels on Debian I ran into this issue with dkms. You kinda have to do some variant of this;
dkms build --force -m spl -v $SPLVER -k $KVER
dkms build --force -m zfs -v $ZFSVER -k $KVER
dkms install --force -m spl -v $SPLVER -k $KVER
dkms install --force -m zfs -v $ZFSVER -k $KVER
This is, of course, assuming that your zfs/spl packages HAVE dkms config files and source trees (usually in /usr/src). Back when I was using ubuntu-based kernels I had an ugly hackjob script to auto rebuild my modules, if anyone finds it useful the link is below (updated slightly today to support multiple kernels and zfs source trees, but not well tested. original code is still in the comments): https://gist.github.com/Trucido/17481dfecd01a8befa5a2308f4b45569
If wanting to use a newer version of zfs, the existing dkms files in from the package repos would likely work but may need some slight modification.
HOWEVER, this also presents another issue of mismatched zfsutils-linux and friends. (libzfs2linux, libzpool2linux, zfs-zed, etc). All of this stuff is tightly integrated, and even moreso on Ubuntu than Debian.
This is more of a downstream issue though and I don't believe it belongs here. You could check some of the downstream repos though (like unstable/experimental has 4.11 kernels, so their zfs source repository may have newer versions as well). Likewise for Ubuntu you could check their testing/unstable repos (usually the next distribution release codename). However, this requires advanced apt pinning of packages and repos if you want upgrades to work properly.
Thanks Trucido
I will give that script a go tomorrow
still, no idea where to find "beta 0.7.0" for Ubuntu
thanks when I last looked that was last updated 162 weeks ago
so I thought it was no longer valid
will try that after Trucido's script finishes
@MasterCATZ yeah, not sure why it isn't updated daily when it clearly notes that it is updated daily "Native ZFS for Linux daily builds"
W: The repository 'http://ppa.launchpad.net/zfs-native/daily/ubuntu zesty Release' does not have a Release file.
looks like I still have to wait for Ubuntu to do the zfs update on their end
any other idea's
spl, 0.6.5.9, 4.10.0-22-generic, x86_64: installed
spl, 0.6.5.9, 4.10.12-041012-generic, x86_64: installed
spl, 0.6.5.9, 4.10.6-041006-generic, x86_64: installed
spl, 0.6.5.9, 4.10.8-041008-generic, x86_64: installed
zfs, 0.6.5.9, 4.10.0-22-generic, x86_64: installed
zfs, 0.6.5.9, 4.10.12-041012-generic, x86_64: installed
zfs, 0.6.5.9, 4.10.6-041006-generic, x86_64: installed
zfs, 0.6.5.9, 4.10.8-041008-generic, x86_64: installed
downside being I need kernel 4.11 for my AMD ryzen CPU to work
I have used alien to convert 0.7 rpm - deb , but does not seem to get zfs working for me still
gitclone build attempt with zfs
https://pastebin.com/ug0ZnAQ5
gitclone build of spl seems to work
https://pastebin.com/vXzzwhf8
well after some more attempts and git clean -dfx
something seems to have worked or kernel 4.11.3 worked?
however I think I have some conflicting packaged like zfs-fuse
thankfully the pool imported I have only been without it for a bit over a month now
pool: ZFSRaidz2
id: 1240625230436445622
state: ONLINE
SPL
https://pastebin.com/C0ykPYPa
ZFS
https://zerobin.net/?dd542773747bb460#+fU5ZpiSZxLh+tx0T1HB1AAsGoSxolEvCuAjGMOgEwg=
the only issue now is getting dkms to actually install it
I can not seem to get past this issue ( but my pool is running so not too worried for now )
Error! Could not locate dkms.conf file.
File: /usr/src/spl-0.7.0/dkms.conf does not exist.
Just need a debian package now :-/
I build rpm first and use alien to convert dkms noarch.rpm to deb. That works.
Do running commands like "zpool status" from installs of alien converted rpms of 0.7.x on a debian system still give you errors like this:
:~$ zpool status
Permission denied the ZFS utilities must be run as root.
Does the RPM --> DEB method install working systemd unit files? When I build the kmod packages for Stretch, I have to manually mount my /home partition because systemd zfs.target service doesn't start. See https://github.com/zfsonlinux/zfs/issues/6435.
I only converted dkms rpm to deb. Same problem, I have to import zfs by hand after 0.7 upgrade.
This is so annoying. I'm using Kernel 4.11.2-041102 with help of the Ukuu Kernel Update Utility on Ubuntu 16.04 and I'm unable to use ZFS. This PPA only supports Trusty. Right now I dont know how to get ZFS to play well with Ubtuntu 16.04 and a newer Kernel.
Loading new zfs-0.6.5.6 DKMS files...
First Installation: checking all kernels...
Building only for 4.11.2-041102-generic
Building initial module for 4.11.2-041102-generic
configure: error:
*** Please make sure the kmod spl devel <kernel> package for your
*** distribution is installed then try again. If that fails you
*** can specify the location of the spl objects with the
*** '--with-spl-obj=PATH' option.
ERROR (dkms apport): kernel package linux-headers-4.11.2-041102-generic is not supported
Error! Bad return status for module build on kernel: 4.11.2-041102-generic (x86_64)
Consult /var/lib/dkms/zfs/0.6.5.6/build/make.log for more information.
You need to make the change in the spl source mentioned here:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=836578
in the spl debian/dkms:
-POST_INSTALL="cp
+POST_BUILD="cp
${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build/spl_config.h
${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/build/module/Module.symvers
${dkms_tree}/${PACKAGE_NAME}/${PACKAGE_VERSION}/${kernelver}/${arch}/
I was able to successfully build and install SPL and ZFS 0.7.3 DKMS packages. DKMS built the kernel modules for both SPL and ZFS on installation. However, something is wrong because when I run update-initramfs -u -k all the resulting initrd does not contain the ZFS modules, even if I run depmod -a first. As a result, I can't use the resulting initrd to boot my ZFS root pool. If I compile with kmod packaging, the initrd contains the necessary modules.
It's possible I'm just doing something wrong since the custom build guide was not updated for DKMS on Debian. Here were the steps I took:
SPL:
1) autoreconf --force --install
2) ./configure
3) make pkg-utils deb-dkms
4) for file in *.deb; do sudo gdebi -q --non-interactive $file; done
ZFS:
1) autoreconf --force --install
3) ./configure --with-config=srpm
4) make pkg-utils deb-dkms
4) for file in *.deb; do sudo gdebi -q --non-interactive $file; done
5) sudo depmod -a 4.13.0-amd64
6) sudo update-initramfs -u -k all
7) lsinitramfs initrd.img-4.13.0-1-amd64 | grep zfs (to verify that ZFS modules are in the initrd)
@jwittlincohen could you try to check what update-initramfs is doing verbosely and also whether you have /usr/share/initramfs-tools/hooks/zfs properly importing the needed modules?
Sorry, wrong issue thread :)
@jwittlincohen I spent a bit of time reading the build scripts, and from what I've gathered, you want to use --with-config=user to build proper DKMS packages. --with-config=srpm expects all of the configuration to come from the source package, removing the ZFS_AC_CONFIG_USER function from the configuration.
When I build with --with-config=user, I get proper DKMS packages with systemd unit files and modules-load.d preset.