* Let user know that SELinux will be re-enabled after reboot Signed-off-by: Maurice Zhou <jasper@apvc.uk> * compat with future releases: use zfs-dkms and newer repo Signed-off-by: Maurice Zhou <jasper@apvc.uk> * rm unused releasever option Signed-off-by: Maurice Zhou <jasper@apvc.uk> * let user aware of the ignorable errors Signed-off-by: Maurice Zhou <jasper@apvc.uk> * detailed explanations for errors during grub-menu generation Signed-off-by: Maurice Zhou <jasper@apvc.uk> * Build ZFS dkms module in installed system Signed-off-by: Maurice Zhou <jasper@apvc.uk> * switch to dkms package for better compatibility with kernels Signed-off-by: Maurice Zhou <jasper@apvc.uk> * add direct download links for live iso Signed-off-by: Maurice Zhou <jasper@apvc.uk> * rm zfs-fuse before install; mirrorlist Signed-off-by: Maurice Zhou <jasper@apvc.uk> * reformat notes Signed-off-by: Maurice Zhou <jasper@apvc.uk> * rm netconfig - networkmanager is enabled by default Signed-off-by: Maurice Zhou <jasper@apvc.uk> * load kernel module in live; Signed-off-by: Maurice Zhou <jasper@apvc.uk> * rm encrypted bpool: untested Signed-off-by: Maurice Zhou <jasper@apvc.uk> * use u=r,go= permission on key file Signed-off-by: Maurice Zhou <jasper@apvc.uk> * fix typo Signed-off-by: Maurice Zhou <jasper@apvc.uk> * use bash shell Signed-off-by: Maurice Zhou <jasper@apvc.uk> * suggest clean the disks Signed-off-by: Maurice Zhou <jasper@apvc.uk> * add grub-menu auto update Signed-off-by: Maurice Zhou <jasper@apvc.uk> * monitor kernel-core pkg Signed-off-by: Maurice Zhou <jasper@apvc.uk> * copyright 2021 Signed-off-by: Maurice Zhou <jasper@apvc.uk> * fix kernel var detection Signed-off-by: Maurice Zhou <jasper@apvc.uk> * read-only cache file Signed-off-by: Maurice Zhou <jasper@apvc.uk> * replace zfs-mount.service with zfs-mount-generator Signed-off-by: Maurice Zhou <jasper@apvc.uk> * notes for mount and POSIX-compliant Signed-off-by: Maurice Zhou <jasper@apvc.uk> * hard-code kernel version Signed-off-by: Maurice Zhou <jasper@apvc.uk> * fix chroot variable Signed-off-by: Maurice Zhou <jasper@apvc.uk> * fix grub cfg Signed-off-by: Maurice Zhou <jasper@apvc.uk> * fix grub Signed-off-by: Maurice Zhou <jasper@apvc.uk> * missing comment Signed-off-by: Maurice Zhou <jasper@apvc.uk> * comments Signed-off-by: Maurice Zhou <jasper@apvc.uk>
116 lines
3.7 KiB
ReStructuredText
116 lines
3.7 KiB
ReStructuredText
.. highlight:: sh
|
|
|
|
System Configuration
|
|
======================
|
|
|
|
.. contents:: Table of Contents
|
|
:local:
|
|
|
|
#. Generate list of datasets for `zfs-mount-generator
|
|
<https://manpages.ubuntu.com/manpages/focal/man8/zfs-mount-generator.8.html>`__ to mount them at boot::
|
|
|
|
# tab-separated zfs properties
|
|
# see /etc/zfs/zed.d/history_event-zfs-list-cacher.sh
|
|
export \
|
|
PROPS="name,mountpoint,canmount,atime,relatime,devices,exec\
|
|
,readonly,setuid,nbmand,encroot,keylocation"
|
|
mkdir -p /mnt/etc/zfs/zfs-list.cache
|
|
zfs list -H -t filesystem -o $PROPS -r rpool_$INST_UUID > /mnt/etc/zfs/zfs-list.cache/rpool_$INST_UUID
|
|
sed -Ei "s|/mnt/?|/|" /mnt/etc/zfs/zfs-list.cache/*
|
|
|
|
#. Generate fstab::
|
|
|
|
echo bpool_$INST_UUID/$INST_ID/BOOT/default /boot zfs rw,xattr,posixacl 0 0 >> /mnt/etc/fstab
|
|
for i in ${DISK}; do
|
|
echo UUID=$(blkid -s UUID -o value ${i}-part1) /boot/efis/${i##*/}-part1 vfat \
|
|
x-systemd.idle-timeout=1min,x-systemd.automount,noauto,umask=0022,fmask=0022,dmask=0022 0 1 >> /mnt/etc/fstab
|
|
done
|
|
echo UUID=$(blkid -s UUID -o value ${INST_PRIMARY_DISK}-part1) /boot/efi vfat \
|
|
x-systemd.idle-timeout=1min,x-systemd.automount,noauto,umask=0022,fmask=0022,dmask=0022 0 1 >> /mnt/etc/fstab
|
|
if [ "${INST_PARTSIZE_SWAP}" != "" ]; then
|
|
for i in ${DISK}; do
|
|
echo ${i##*/}-part4-swap ${i}-part4 /dev/urandom swap,cipher=aes-cbc-essiv:sha256,size=256,discard >> /mnt/etc/crypttab
|
|
echo /dev/mapper/${i##*/}-part4-swap none swap x-systemd.requires=cryptsetup.target,defaults 0 0 >> /mnt/etc/fstab
|
|
done
|
|
fi
|
|
|
|
By default, systemd will halt boot process if any entry in ``/etc/fstab`` fails
|
|
to mount. This is unnecessary for mirrored EFI boot partitions.
|
|
With the above mount options, systemd will skip mounting them at boot,
|
|
only mount them on demand when accessed.
|
|
|
|
#. Configure dracut::
|
|
|
|
echo 'add_dracutmodules+=" zfs "' > /mnt/etc/dracut.conf.d/zfs.conf
|
|
|
|
#. Interactively set locale, keymap, timezone, hostname and root password::
|
|
|
|
rm -f /mnt/etc/localtime
|
|
systemd-firstboot --root=/mnt --prompt --root-password=PASSWORD
|
|
|
|
This can be non-interactive, see man page for details::
|
|
|
|
rm -f /mnt/etc/localtime
|
|
systemd-firstboot --root=/mnt \
|
|
--locale="en_US.UTF-8" --locale-messages="en_US.UTF-8" \
|
|
--keymap=us --timezone="Europe/Berlin" --hostname=myHost \
|
|
--root-password=PASSWORD
|
|
|
|
``systemd-firstboot`` have bugs, root password is set below.
|
|
|
|
#. Generate host id::
|
|
|
|
zgenhostid -f -o /mnt/etc/hostid
|
|
|
|
#. Install locale package, example for English locale::
|
|
|
|
dnf --installroot=/mnt install -y glibc-minimal-langpack glibc-langpack-en
|
|
|
|
Program will show errors if not installed.
|
|
|
|
#. Enable ZFS services::
|
|
|
|
systemctl enable zfs-import-scan.service zfs-import.target zfs-zed zfs.target --root=/mnt
|
|
systemctl disable zfs-mount --root=/mnt
|
|
|
|
At boot, datasets on rpool are mounted with ``zfs-mount-generator``,
|
|
which can control the mounting process more precisely than ``zfs-mount.service``.
|
|
|
|
#. By default SSH server is enabled, allowing root login by password,
|
|
disable SSH server::
|
|
|
|
systemctl disable sshd --root=/mnt
|
|
systemctl enable firewalld --root=/mnt
|
|
|
|
#. Chroot::
|
|
|
|
echo "INST_PRIMARY_DISK=$INST_PRIMARY_DISK
|
|
INST_LINVAR=$INST_LINVAR
|
|
INST_UUID=$INST_UUID
|
|
INST_ID=$INST_ID
|
|
unalias -a
|
|
TERM=xterm
|
|
INST_VDEV=$INST_VDEV
|
|
INST_VDEV=$INST_VDEV
|
|
DISK=$DISK" > /mnt/root/chroot
|
|
arch-chroot /mnt bash --login
|
|
|
|
#. Source variables::
|
|
|
|
source /root/chroot
|
|
|
|
#. For SELinux, relabel filesystem on reboot::
|
|
|
|
fixfiles -F onboot
|
|
|
|
#. Set root password::
|
|
|
|
passwd
|
|
|
|
#. Build ZFS modules::
|
|
|
|
ls -1 /lib/modules \
|
|
| while read kernel_version; do
|
|
dkms autoinstall -k $kernel_version
|
|
done
|