zfsonlinux / pkg-zfs

Native ZFS packaging for Debian and Ubuntu
https://launchpad.net/~zfs-native/+archive/daily
308 stars 55 forks source link

compatibility with `openrc` (Devuan) #238

Open zeigerpuppy opened 1 year ago

zeigerpuppy commented 1 year ago

I am hoping to use ZFS with openrc on Devuan linux I note that the package description for zfsutils-linux 2.0.3-9 lists openrc in the Breaks list (see below).

In Devuan, the openrc package is backwards compatible with sysvinit so using both ZFS and openrc should be compatible.

this is the Devuan (Chimaera) openrc package:

openrc:
  Installed: 0.42-2.1
  Candidate: 0.42-2.1
  Version table:
 *** 0.42-2.1 500
        500 http://deb.devuan.org/merged chimaera/main amd64 Packages
        100 /var/lib/dpkg/status

I have tried testing installation by installing zfsutils-linux first and then editing the breaks list in /var/lib/dpkg/status.

openrc then installs without complaint with ZFS installed.

On boot, it looks like the startup scripts for ZFS have started apart from zfs-import

running rc-status:

Runlevel: default
 rsyslog                                                                                              [  started  ]
 cron                                                                                                 [  started  ]
 fail2ban                                                                                             [  started  ]
 acpid                                                                                                [  started  ]
 ntp                                                                                                  [  started  ]
 sudo                                                                                                 [  started  ]
 qemu-guest-agent                                                                                     [  started  ]
 console-setup.sh                                                                                     [  started  ]
 ssh                                                                                                  [  started  ]
 dbus                                                                                                 [  started  ]
 bootlogs                                                                                             [  started  ]
 elogind                                                                                              [  started  ]
 rmnologin                                                                                            [  started  ]
 zfs-mount                                                                                            [  started  ]
 zfs-zed                                                                                              [  started  ]
 zfs-share                                                                                            [  started  ]
 stop-bootlogd                                                                                        [  started  ]
 rc.local                                                                                             [  started  ]
Dynamic Runlevel: hotplugged
Dynamic Runlevel: needed/wanted
 umountroot                                                                                           [  started  ]
 umountfs                                                                                             [  started  ]
 umountnfs.sh                                                                                         [  started  ]

rc-status zfs-import shows:

 runlevel `zfs-import' does not exist

Running /sbin/modprobe zfs manually after start works to load the zfs module and this can be made persistent by editing /etc/modulesand adding the line:

zfs

Interestingly, when installing openrc, it finds a dependency loop which it cleans up, I guess this is causing the zfs module not to be loaded on boot:

 * Found a solvable dependency loop: mountall-bootclean.sh p> mountall-bootclean u> zfs-import a> checkfs n> mounta
ll.sh p> mountall n> mountall-bootclean.sh.
 * Solving the loop by breaking mountall-bootclean u> zfs-import.
 * Found a solvable dependency loop: mountall.sh p> mountall u> zfs-import a> checkfs n> mountall.sh.
 * Solving the loop by breaking mountall u> zfs-import. 

I'm not sure how this can be solved, but in the meantime I wonder if it's worth updating the package to be more specific about the conflict, maybe Breaks: openrc (> 0.42-2.1) and adding a method for loading the zfs module?

It would be great to have better openrc compatibility

Supplementary info

package description:

Package: zfsutils-linux                  
Version: 2.0.3-9
State: installed
Automatically installed: no
Priority: optional
Section: contrib/admin
Maintainer: Debian ZFS on Linux maintainers <pkg-zfsonlinux-devel@alioth-lists.debian.net>
Architecture: amd64
Uncompressed Size: 1,533 k
Depends: libnvpair3linux (= 2.0.3-9), libuutil3linux (= 2.0.3-9), libzfs4linux (= 2.0.3-9), libzpool4linux (=
         2.0.3-9), python3, libblkid1 (>= 2.16), libc6 (>= 2.17), libuuid1 (>= 2.16)
PreDepends: init-system-helpers (>= 1.54~)
Recommends: lsb-base, zfs-modules | zfs-dkms, zfs-zed
Suggests: nfs-kernel-server, samba-common-bin (>= 3.0.23), zfs-initramfs | zfs-dracut
Conflicts: zfs, zfs-fuse
Breaks: openrc, spl (< 0.7.9-2), spl-dkms (< 0.8.0~rc1), zfs-dkms (> 2.0.3-9...), zfs-dkms (< 2.0.3-9)
Replaces: spl (< 0.7.9-2), spl-dkms
Provides: zfsutils
Description: command-line tools to manage OpenZFS filesystems
 OpenZFS is a storage platform that encompasses the functionality of traditional filesystems and volume managers.
 It supports data checksums, compression, encryption, snapshots, and more. 

 This package provides the zfs and zpool commands to create and administer OpenZFS filesystems.
Homepage: https://zfsonlinux.org/
Tags: admin::configuring, admin::filesystem, interface::commandline, role::program, scope::utility,
      use::configuring
uvok commented 2 months ago

According to https://salsa.debian.org/zfsonlinux-team/zfs/-/blob/debian/2.2.3-2/debian/changelog?ref_type=tags, this should be fixed (soon in backports as well?)