zfs service enablement and fstab generation support

merge-requests/260/head
Evan James 5 years ago
parent 70ba2e9d96
commit 12eca96205

@ -62,6 +62,23 @@ enable_services() {
echo "no display manager was installed"
sleep 2
fi
# if we are using a zfs root we should enable the zfs services
if [ $(findmnt -ln -o FSTYPE ${MOUNTPOINT}) == "zfs" ]; then
arch_chroot "systemctl enable zfs.target" 2>$ERR
check_for_error "enable zfs.target" "$?"
arch_chroot "systemctl enable zfs-import-cache" 2>$ERR
check_for_error "enable zfs-import-cache" "$?"
arch_chroot "systemctl enable zfs-mount" 2>$ERR
check_for_error "enable zfs-mount" "$?"
arch_chroot "systemctl enable zfs-import.target" 2>$ERR
check_for_error "enable zfs-import.target" "$?"
# we also need create the cachefile
zpool set cachefile=/etc/zfs/zpool.cache zpmain 2>$ERR
check_for_error "create zpool cache" "$?"
cp /etc/zfs/zpool.cache ${MOUNTPOINT}/etc/zfs/zpool.cache 2>$ERR
check_for_error "copy cache file" "$?"
fi
}
install_extra() {
@ -286,6 +303,24 @@ install_base() {
[[ $((LVM + LUKS + BTRFS_ROOT + ZFS_ROOT)) -gt 0 ]] && { arch_chroot "mkinitcpio -P" 2>$ERR; check_for_error "re-run mkinitcpio" $?; }
# if we are using a zfs root we should enable the zfs services
if [ $(findmnt -ln -o FSTYPE ${MOUNTPOINT}) == "zfs" ]; then
arch_chroot "systemctl enable zfs.target" 2>$ERR
check_for_error "enable zfs.target" "$?"
arch_chroot "systemctl enable zfs-import-cache" 2>$ERR
check_for_error "enable zfs-import-cache" "$?"
arch_chroot "systemctl enable zfs-mount" 2>$ERR
check_for_error "enable zfs-mount" "$?"
arch_chroot "systemctl enable zfs-import.target" 2>$ERR
check_for_error "enable zfs-import.target" "$?"
# we also need create the cachefile
zpool set cachefile=/etc/zfs/zpool.cache zpmain 2>$ERR
check_for_error "create zpool cache" "$?"
cp /etc/zfs/zpool.cache ${MOUNTPOINT}/etc/zfs/zpool.cache 2>$ERR
check_for_error "copy cache file" "$?"
fi
# If specified, copy over the pacman.conf file to the installation
if [[ $COPY_PACCONF -eq 1 ]]; then
cp -f /etc/pacman.conf ${MOUNTPOINT}/etc/pacman.conf
@ -375,9 +410,9 @@ install_grub_uefi() {
# temporary - we can remove this once we add support for mounting zfs
UEFI_MOUNT=/boot/efi
# there has to be a better way to do this
echo -e "# /bin/bash\nexport ZPOOL_VDEV_NAME_PATH=YES\ngrub-install --target=x86_64-efi --efi-directory=${UEFI_MOUNT} --bootloader-id=${bootid} --recheck" > ${MOUNTPOINT}/usr/bin/grub_installer.sh
echo -e "# "'!'"/bin/bash\nexport ZPOOL_VDEV_NAME_PATH=YES\ngrub-install --target=x86_64-efi --efi-directory=${UEFI_MOUNT} --bootloader-id=${bootid} --recheck" > ${MOUNTPOINT}/usr/bin/grub_installer.sh
else
echo -e "# /bin/bash\ngrub-install --target=x86_64-efi --efi-directory=${UEFI_MOUNT} --bootloader-id=${bootid} --recheck" > ${MOUNTPOINT}/usr/bin/grub_installer.sh
echo -e "# "'!'"/bin/bash\ngrub-install --target=x86_64-efi --efi-directory=${UEFI_MOUNT} --bootloader-id=${bootid} --recheck" > ${MOUNTPOINT}/usr/bin/grub_installer.sh
fi
chmod a+x ${MOUNTPOINT}/usr/bin/grub_installer.sh
@ -596,9 +631,9 @@ bios_bootloader() {
echo ZPOOL_VDEV_NAME_PATH=YES >> ${MOUNTPOINT}/etc/environment
export ZPOOL_VDEV_NAME_PATH=YES
# there has to be a better way to do this
echo -e "# /bin/bash\nexport ZPOOL_VDEV_NAME_PATH=YES\ngrub-install --target=i386-pc --recheck $DEVICE" > ${MOUNTPOINT}/usr/bin/grub_installer.sh
echo -e "# "'!'"/bin/bash\nexport ZPOOL_VDEV_NAME_PATH=YES\ngrub-install --target=i386-pc --recheck $DEVICE" > ${MOUNTPOINT}/usr/bin/grub_installer.sh
else
echo -e "# /bin/bash\ngrub-install --target=i386-pc --recheck $DEVICE" > ${MOUNTPOINT}/usr/bin/grub_installer.sh
echo -e "# "'!'"/bin/bash\ngrub-install --target=i386-pc --recheck $DEVICE" > ${MOUNTPOINT}/usr/bin/grub_installer.sh
fi
chmod a+x ${MOUNTPOINT}/usr/bin/grub_installer.sh
@ -758,6 +793,13 @@ generate_fstab() {
fi
# Edit fstab in case of btrfs subvolumes
sed -i "s/subvolid=.*,subvol=\/.*,//g" /mnt/etc/fstab
# remove any zfs datasets that are mounted by zfs
for MSOURCE in $(cat ${MOUNTPOINT}/etc/fstab | grep "^[a-z,A-Z]" | awk '{print $1}'); do
if [ $(zfs list -H -o mountpoint,name | grep "^/" | awk '{print $2}' | grep "^${MSOURCE}$") ]; then
sed -e "\|^${MSOURCE}[[:space:]]| s/^#*/#/" -i ${MOUNTPOINT}/etc/fstab
fi
done
}
# locale array generation code adapted from the Manjaro 0.8 installer

Loading…
Cancel
Save