diff options
Diffstat (limited to 'zfs.install')
-rw-r--r-- | zfs.install | 45 |
1 files changed, 36 insertions, 9 deletions
diff --git a/zfs.install b/zfs.install index f406c47..b8d2f40 100644 --- a/zfs.install +++ b/zfs.install @@ -1,17 +1,44 @@ post_install() { - check_initramfs + dkms add zfs/${1%%[-_]*} + cat << EOF +==> To build and install your modules run: dkms install zfs/${1%%[_-]*} -k [KERNEL] +==> To do this automatically at startup run: systemctl enable dkms.service +EOF + check_initramfs "install" +} + +pre_upgrade() { + pre_remove "$2" } post_upgrade() { - check_initramfs + post_install "$1" } -check_initramfs() { - echo " >>> To build the module for the current kernel use this command: - # dkms install zfs/0.6.5.2 -k _KERNEL_VERSION_HERE_ - or just boot to kernel you want to build and do - # dkms install zfs/0.6.5.2 -k \$(uname -r) +pre_remove() { + [ -n "${1%%[-_]*}" ] && dkms remove zfs/${1%%[-_]*} --all &>/dev/null || true +} + +post_remove() { + check_initramfs "remove" +} - >>> Always remember to install kernel headers! -" +check_initramfs() { + if grep -v '#' /etc/mkinitcpio.conf | grep zfs >/dev/null; then + if [[ $1 == 'remove' ]]; then + echo '==> The ZFS packages have been removed, but "zfs" remains in the "hooks"' + echo '==> list in mkinitcpio.conf! You will need to remove "zfs" from the ' + echo '==> "hooks" list and then regenerate the initial ramdisk.' + elif grep -v '#' /etc/mkinitcpio.conf | grep dkms >/dev/null; then + echo '==> Generating initial ramdisk automatically (mkinitcpio-dkms found)' + for preset in /etc/mkinitcpio.d/*.preset; do + mkinitcpio -p "$(basename "$preset" .preset)" + done + else + echo '==> The ZFS packages are installed/updated, you need to (re)generate initial ramdisk yourself' + echo '==> After modules are built and installed, run: mkinitcpio -p [PRESET]' + echo '==> To do it automatically, you can also install mkinitcpio-dkms package' + echo '==> and add "dkms" to HOOKSs (before zfs)' + fi + fi } |