diff --git a/modules/40-basesystem/config b/modules/40-basesystem/config index 3f651ff..29d46b6 100644 --- a/modules/40-basesystem/config +++ b/modules/40-basesystem/config @@ -12,7 +12,7 @@ setconf add "lang_console" "de-latin1-nodeadkeys" setconf add "timezone" "Europe/Berlin" -addpkg void-repo-multilib void-repo-multilib-nonfree void-repo-nonfree lvm2 cronie socklog-void ntp xtools wireguard-tools gnupg2 progress pwgen net-tools ncdu nmap mtr iotop hdparm smartmontools htop git neovim btrbk croc +addpkg void-repo-multilib void-repo-multilib-nonfree void-repo-nonfree lvm2 cronie socklog-void ntp xtools wireguard-tools gnupg2 progress pwgen net-tools ncdu nmap mtr iotop hdparm smartmontools htop git neovim btrbk croc grub-btrfs ignorepkg nvi gnupg servicesenable acpid cronie socklog-unix nanoklogd uuidd agetty-tty1 agetty-tty2 agetty-tty3 agetty-tty4 servicesdisable agetty-tty6 agetty-tty5 diff --git a/modules/40-basesystem/install b/modules/40-basesystem/install index 91e26be..e1bd83c 100644 --- a/modules/40-basesystem/install +++ b/modules/40-basesystem/install @@ -25,12 +25,14 @@ sed -i 's/locale.conf/locale-user.conf/' /etc/profile.d/zz-locale-user.sh sed -i '/^if/i [ "$(id -u)" -eq 0 ] && return' /etc/profile.d/zz-locale-user.sh { echo "tmpfs /tmp tmpfs defaults,nosuid,nodev 0 0"; -echo "/dev/mapper/voidvg.${diskid}-root / btrfs defaults,subvol=void-rootfs 0 0"; -echo "/dev/mapper/voidvg.${diskid}-root /home btrfs defaults,subvol=home 0 0"; +echo "/dev/mapper/voidvg.${diskid}-root / btrfs defaults,subvol=rootfs 0 0"; +echo "/dev/mapper/voidvg.${diskid}-root /home btrfs defaults,subvol=homefs 0 0"; echo "/dev/mapper/voidvg.${diskid}-swap swap swap defaults 0 0"; -echo "/dev/mapper/voidvg.${diskid}-root /var/lib/backup/quelle btrfs defaults 0 0"; } > /etc/fstab -[[ "${cfg[fde_key_store]}" == "once" ]] && echo "UUID=${cfg[bootuuid]} /boot btrfs defaults 0 0" >> /etc/fstab - +echo "/dev/mapper/voidvg.${diskid}-root /var/lib/backup/quelle/rootfs btrfs defaults 0 0"; } > /etc/fstab +if [[ "${cfg[fde_key_store]}" == "once" ]]; then + { echo "UUID=${cfg[bootuuid]} /boot btrfs defaults,subvol=boots 0 0"; + echo "UUID=${cfg[bootuuid]} /var/lib/backup/quelle/bootfs btrfs defaults 0 0"; } >> /etc/fstab +fi mkdir -p /etc/sudoers.d { echo 'Defaults timestamp_timeout=15'; @@ -41,6 +43,7 @@ echo '%wheel ALL=(ALL) ALL'; echo 'Defaults editor = /usr/bin/nvim'; echo 'Defaults env_keep += "EDITOR"'; echo 'Defaults env_keep += "SSH_CONNECTION"'; } > /etc/sudoers.d/10-common + mkdir -p /etc/udev/rules.d/ echo 'ENV{ID_FS_USAGE}=="filesystem|other|crypto", ENV{UDISKS_FILESYSTEM_SHARED}="1"' > /etc/udev/rules.d/mount-media.rules echo 'ACTION=="add|change", KERNEL=="sd[a-z]|mmcblk[0-9]*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline"' > /etc/udev/rules.d/60-ioschedulers.rules @@ -55,7 +58,6 @@ echo 'echo "xu = sudo voidupdate zum updaten"'; echo 'echo "xi = sudo xbps-install -S zum installieren"'; echo 'echo "xr = sudo xbps-install -R zum deinstallieren"'; echo 'echo "xs = xbps-query -Rs zum suchen"'; -echo 'echo "xk = sudo vkpurge rm all zum kernel entfernen"'; } > /etc/bash/bashrc.d/xbps-aliase.sh echo "${cfg[hostname]}" > "${dest}/etc/hostname" ln -sf "/usr/share/zoneinfo/${cfg[timezone]}" "${dest}/etc/localtime" @@ -82,55 +84,397 @@ if [[ ! ${cfg[fde_key_store]} == "none" ]]; then echo "fi" >> /etc/runit/core-services/99-changepwuser.sh fi -{ echo "transaction_log /var/log/btrbk.log"; +{echo "transaction_syslog daemon"; echo "lockfile /tmp/btrbk.lock"; echo "incremental yes"; echo "btrfs_commit_delete after"; echo "timestamp_format long"; -echo "noauto yes"; } > /etc/btrbk/btrbk.conf -if [[ ! ${cfg[fde_key_store]} == "once" ]]; then - { echo "volume /var/lib/backup/quelle/boot"; - echo " group snapshot all"; - echo " snapshot_dir snapshot"; - echo " snapshot_preserve_min 4h"; - echo " snapshot_preserve no"; - echo " subvolume void"; } >> /etc/btrbk/btrbk.conf -fi -{ echo "volume /var/lib/backup/quelle/rootfs"; -echo " group snapshot all"; +echo "noauto yes"; +echo "backend btrfs-progs-sudo"; +echo ""; +echo "volume /var/lib/backup/quelle/rootfs"; +echo " group snapshotrootfs"; echo " snapshot_dir snapshot"; echo " snapshot_preserve_min 4h"; echo " snapshot_preserve no "; -echo " subvolume void-rootfs"; -echo " subvolume home"; } >> /etc/btrbk/btrbk.conf +echo " subvolume rootfs"; +echo " subvolume homefs"; +echo ""; +echo "volume /var/lib/backup/quelle/rootfs"; +echo " group backuprootfs"; +echo " snapshot_dir backup"; +echo " snapshot_preserve_min 4h"; +echo " snapshot_preserve no"; +echo " target_preserve_min latest"; +echo " target_preserve no"; +echo " subvolume rootfs"; +echo " target send-receive /var/lib/backup/ziel/void/rootfs"; +echo " subvolume homefs"; +echo " target send-receive /var/lib/backup/ziel/void/homefs"; +echo "";} > /etc/btrbk/btrbk.conf if [[ ! ${cfg[fde_key_store]} == "once" ]]; then - { echo "volume /var/lib/backup/quelle/boot"; - echo " group backup all"; - echo " snapshot_dir backup"; - echo " snapshot_preserve_min 4h"; - echo " snapshot_preserve no"; - echo " target_preserve_min latest"; - echo " target_preserve 20d 10w 2m"; - echo " subvolume void"; - echo " target send-receive /var/lib/backup/ziel/void/boot"; } >> /etc/btrbk/btrbk.conf + {echo "volume /var/lib/backup/quelle/bootfs"; + echo " group snapshotboot"; + echo " snapshot_dir snapshot"; + echo " snapshot_preserve_min 4h"; + echo " snapshot_preserve no"; + echo " subvolume bootfs"; + echo ""; + echo "volume /var/lib/backup/quelle/bootfs"; + echo " group backupboot"; + echo " snapshot_dir backup"; + echo " snapshot_preserve_min 4h"; + echo " snapshot_preserve no"; + echo " target_preserve_min latest"; + echo " target_preserve 20d 10w 2m"; + echo " subvolume bootfs"; + echo " target send-receive /var/lib/backup/ziel/void/bootfs"; + echo "";} >> /etc/btrbk/btrbk.conf fi -{ echo "volume /var/lib/backup/quelle/rootfs"; -echo " group backup all"; -echo " snapshot_dir backup"; -echo " snapshot_preserve_min 4h"; -echo " snapshot_preserve no"; -echo " target_preserve_min latest"; -echo " target_preserve 20d 10w 2m"; -echo " subvolume rootfs"; -echo " target send-receive /var/lib/backup/ziel/void/rootfs"; -echo " subvolume home"; -echo " target send-receive /var/lib/backup/ziel/void/homefs"; } >> /etc/btrbk/btrbk.conf -mkdir -p /var/spool/cron/ -echo "0 */2 * * * /usr/bin/btrbk -q run snapshot" >> /var/spool/cron/root - -cat << 'EOF' > /usr/local/bin/voidupdate +cat <<'EOF' > /usr/bin/joinvpn #!/bin/bash +basewgfolder="/etc/wireguard" + +if [ $UID -ne 0 ]; then + echo "Keine Rootrechte" + exit 1 +fi +umask 0077 +mkdir -p "${basewgfolder}/wg0" +cd "${basewgfolder}/wg0" + + +if [[ -f "${basewgfolder}/wg0/privkey" ]]; then + read -p "Address: " ADDRESS + read -p "PublicKey: " PUBKEY_SERVER + read -p "Endpoint: " ENDPOINT + read -p "Port: " PORT + { echo "[Interface]"; + echo "Address = ${ADDRESS}"; + echo "PostUp = wg set %i private-key /etc/wireguard/wg0/wg0.key <(cat /etc/wireguard/wg0/privkey)"; + echo "[Peer]"; + echo "PublicKey = ${PUBKEY_SERVER}"; + echo "Endpoint = ${ENDPOINT}:${PORT}"; + echo "AllowedIPs = fd23::23:0:0/96"; + echo "PresharedKey = $(cat psk)"; + echo "PersistentKeepalive = 25"; } > "${basewgfolder}/wg0.conf" +else + test -f privkey || wg genkey > privkey + test -f pubkey || wg pubkey < privkey > pubkey + test -f psk || wg genpsk > psk + echo "Frage O nach den den folgenden Daten und wenn du sie hast, starte das hier nochmal" + echo "Address" + echo "PublicKey" + echo "Endpoint" + echo "Port" + echo "" + echo "Schicke ihm verschlüsselt (Jabber oder Email) folgende Daten:" + echo "PublicKey = $(cat pubkey)" + echo "PresharedKey = $(cat psk)" + echo "Hostname = ${HOSTNAME}" +fi + +EOF + +cat <<'EOF' > /usr/bin/void-backup +#!/bin/bash +export LANG="en_US.UTF-8" +backupcfg="/etc/backup.cfg" +ziel="/var/lib/backup/ziel" +cfg="/etc/btrbk/btrbk.conf.system" + +if [ $UID -ne 0 ]; then + echo "Keine Rootrechte." + exit 1 +fi + +if [[ ! -f "${backupcfg}" ]] && [[ ! -f /etc/btrbk/btrbk.conf ]]; then + echo "Eine USB-Festplatte einrichten?" + while read -p "[Y/n] " answer; do + test -z "${answer}" && answer="y" + case "${answer}" in + n*|N*) + echo "Entweder eine Konfigurationsdatei anlegen. (${backupcfg})" + echo "(Diese Datei wird normalerweise durch \`void-createbackupcontainer\` erstellt)" + echo "UUID=\"uuid\"" + echo "Oder eine Backupfestplatte einrichten. \`void-createbackupcontainer\`" + exit 0 + ;; + y*|Y*|j*|J*) + echo "Schliesse nun eine leere oder zu leerende USB-Festplatte an und starte dieses Programm nochmal, wenn es beendet ist" + exec /usr/bin/void-createbackupcontainer + ;; + esac + done +elif [[ -f "${backupcfg}" ]] && [[ ! -f /etc/btrbk/btrbk.conf ]]; then + source "${backupcfg}" +elif [[ -f /etc/btrbk/btrbk.conf ]]; then + cfg="/etc/btrbk/btrbk.conf" +fi + +if [ -z "${UUID}" ]; then + echo "Keine Backupplatte angegeben." + exit 1 +fi + +fhelp() { + echo "Nutze es so:" + echo "sudo backup" + echo "sudo backup poweroff (um den Rechner nach dem Backup herunterzufahren.)" + #echo "sudo backup update (um den Rechner nach dem Backup up zu daten.)" + #echo "update und poweroff sind mixbar" + echo "sudo backup passwd (um das Passwort für die Backupfestplatte zu ändern.)" +} + +if [ ! -e "/dev/disk/by-uuid/${UUID}" ]; then + echo "Bitte Backupfestplatte anschliessen." + exit 1 +fi + +for argval in "$@" +do + case "${argval}" in + power|poweroff|p) + poweroff=y + ;; + help|-h|--help|h) + fhelp + exit + ;; + update) + update=y + ;; + passwd) + passwd=y + ;; + esac +done + +if [ -e /tmp/backup ]; then + echo "Es läuft schon ein Backupvorgang oder wurde nicht richtig beendet." + echo "Bei letzterem: 'sudo rm -rf /tmp/backup'" + exit 1 +fi +touch /tmp/backup + +if [[ "${passwd}" == "y" ]]; then + cryptsetup luksChangeKey "/dev/disk/by-uuid/${UUID}" + rm -rf /tmp/backup + exit 0 +fi + +function finish { + sync + if [ "${poweroff}" = "y" ]; then + shutdown -h now + fi + sleep 4 + umount "${ziel}" + echo " " + echo " " + if [[ "${MOUNTEDBY}" == "script" ]]; then + cryptsetup close "luks-${UUID}" + echo "Festplatte kann nun sicher entfernt werden." + elif [[ "${MOUNTEDBY}" == "gnome" ]]; then + echo "Festplatte bitte mit der grafischen Oberflaeche auswerfen (wie ein USB-Stick)" + echo "" + echo "oder:" + echo "sudo umount /dev/mapper/luks-${UUID}" + echo "sudo cryptsetup close luks-${UUID}" + echo "" + fi + rm -rf /tmp/backup + echo "FERTIG" + +} +trap finish EXIT + +if [ ! $(mountpoint -q -x "/dev/mapper/luks-${UUID}") ]; then + if ! cryptsetup open UUID="${UUID}" "luks-${UUID}"; then + echo "Konnte /dev/disk/by-uuid/${UUID} nicht öffnen." + exit + fi + MOUNTEDBY="script" +else + MOUNTEDBY="gnome" +fi + +if ! mount "/dev/mapper/luks-${UUID}" "${ziel}"; then + echo "Konnte /dev/mapper/luks-${UUID} in ${ziel} nicht mounten." + exit +fi + +if mountpoint -q /var/lib/backup/quelle/boot; then + mkdir -p "/var/lib/backup/ziel/void/boot" + if ! btrbk --config="${cfg}" --progress --quiet run backupboot; then + btrbk --config="${cfg}" --progress --quiet clean + echo "Wegen Fehler nicht herunterfahren." + poweroff=n + fi +fi + +mkdir -p "/var/lib/backup/ziel/void/{rootfs,home}" +if ! btrbk --config="${cfg}" --progress --quiet run backuprootfs; then + btrbk --config="${cfg}" --progress --quiet clean + echo "Wegen Fehler nicht herunterfahren." + poweroff=n +fi + + +#if [[ "${update}" = "y" ]]; then +# if command -v voidupdate >/dev/null; then +# if ! voidupdate; then +# echo "UPDATE FAILED, nicht runterfahren" +# poweroff=n +# fi +# else +# if ! apt-get -y -q upgrade; then +# echo "UPDATE FAILED, nicht runterfahren" +# poweroff=n +# fi +# fi +#fi + +EOF + +cat <<'EOF' > /usr/bin/void-createbackupcontainer +#!/bin/bash +backupcfg="/etc/backup.cfg" + +if [ $UID -ne 0 ]; then + echo "Keine Rootrechte." + exit 1 +fi + +#test -f "${backupcfg}" && echo "${backupcfg} existiert" && exit 1 + +# find all disks +declare -A disk_tmp=() +declare -A disk=() +index=0 +for i in $(find /dev/disk/by-id/ -type l -printf "%P\n" | grep usb | grep -v part | tac ); do + name="$(readlink -f /dev/disk/by-id/"${i}")" + if [[ "${name}" =~ *"^[0-9]+$"* ]]; then + continue + fi + if [[ "${name}" == *"dm"* ]]; then + continue + fi + if [[ "${name}" == *"/dev/sr"* ]]; then + continue + fi + if blkid "${name}"|grep -q UUID; then + size="$(fdisk -l "${name}" | head -n1 | awk '{print $3}')" + else + continue + fi + size=$(awk "BEGIN { printf(\"%.0f\n\", ${size}); }") + uuid=$(blkid -o value -s UUID ${name}) + index=$(( index + 1 )) + disk_tmp+=( [${index}.id]="${i}" [${index}.name]="${name}" [${index}.uuid]="${uuid}" [${index}.size]="${size}" ) +done +disk_tmp+=( [count]="${index}" ) + +if [[ "${disk_tmp[count]}" -eq 0 ]]; then + echo "No Disk attached." + exit 1 +fi +# show devices +echo "Devices:" +for i in $(seq 1 "${disk_tmp[count]}"); do + echo "${disk_tmp[${i}.id]}" + echo " - uuid: ${disk_tmp[${i}.uuid]}" + echo " - name: ${disk_tmp[${i}.name]}" + echo " - size: ${disk_tmp[${i}.size]}" +done + +# choose device +found= +while read -p "Which Device? [${disk_tmp[1.uuid]}]: " output; do + test -z "${output}" && output="${disk_tmp[1.uuid]}" + for i in $(seq 1 "${disk_tmp[count]}"); do + if [[ "${disk_tmp[${i}.id]}" == "${output}" ]] || [[ "${disk_tmp[${i}.name]}" == "${output}" ]] || [[ "${disk_tmp[${i}.uuid]}" == "${output}" ]]; then + found=1 + id="${disk_tmp[${i}.id]}" + break + fi + done + [[ "${found}" ]] && break + echo "${output} not found" +done + +echo "g +n +1 + + +w +q" | fdisk "/dev/disk/by-id/${id}" + +UUID=$(blkid -o value -s UUID "/dev/disk/by-id/${id}-part1") + +if ! cryptsetup luksFormat UUID="${UUID}"; then + echo "Konnte /dev/disk/by-uuid/${UUID} nicht verschluesseln." + exit 1 +else + if ! cryptsetup open UUID="${UUID}" "luks-${UUID}"; then + echo "Konnte /dev/disk/by-uuid/${UUID} nicht verschluesseln." + exit 1 + fi +fi + +if ! mkfs.btrfs -f "/dev/mapper/luks-${UUID}"; then + echo "Konnte /dev/mapper/luks-${UUID} nicht formatieren" + exit 1 +fi + +if ! mount "/dev/mapper/luks-${UUID}" "/var/lib/backup/ziel"; then + echo "Konnte /dev/mapper/luks-${UUID} nicht nach /var/lib/backup/ziel mounten" + exit 1 +fi + +if mountpoint -q /boot; then + mkdir -p "/var/lib/backup/ziel/${HOSTNAME}/boot" +fi +mkdir -p "/var/lib/backup/ziel/${HOSTNAME}/{rootfs,home}" + +umount "/var/lib/backup/ziel" +cryptsetup close "luks-${UUID}" + +echo "UUID=\"${UUID}\"" > "${backupcfg}" + +echo "Erstellen des Containers fertig." + +EOF + +cat <<'EOF' > /usr/bin/void-snapshot +#!/bin/sh +if [ -f /etc/btrbk/btrbk.conf ]; then + cfg="/etc/btrbk/btrbk.conf" +else + cfg="/etc/btrbk/btrbk.conf.system" +fi + +if mountpoint -q /var/lib/backup/quelle/boot; then + btrbk --config="${cfg}" --quiet run snapshotboot +fi + +btrbk --config="${cfg}" --quiet run snapshotrootfs + +if ! update-grub 2> /dev/null; then + echo update-grub failed +fi + +EOF + +cat <<'EOF' > /usr/bin/void-update +#!/bin/bash + +if [ $UID -ne 0 ]; then + echo "Keine Rootrechte." + exit 1 +fi RESTART= echo "Synchronisiere Repositorys" @@ -140,35 +484,56 @@ mapfile -t updatedpkgs < <(xbps-install -un|awk '{print $1}') if [[ "${#updatedpkgs[@]}" -eq 0 ]]; then echo "Keine Updates" exit +else + echo "Es sind Updates da!" + while read -p "Installieren? [Y/n] " answer; do + test -z "${answer}" && answer="y" + case "${answer}" in + n*|N*|*o|*O) + exit + ;; + y*|Y*|j*|J*) + break + ;; + esac + done fi +echo "Lege Snapshot an" +void-snapshot + echo "Entferne nicht benutzte Pakete" xbps-remove -oy > /dev/null + echo "Räume den Cache auf" xbps-remove -Oy > /dev/null -echo "Installiere Updates" -xbps-install -u +echo "Installiere Updates" +if ! xbps-install -uy; then + echo "Update failed." + exit +fi if [[ "$(xcheckrestart)" ]]; then RESTART=1 fi for i in "${updatedpkgs[@]}"; do - if grep "^linux-" <<< "${i}"; then + if grep -q "^linux" <<< "${i}"; then vkpurge list | head -n -1 | xargs -r vkpurge rm RESTART=1 fi done - if [[ "${RESTART}" ]]; then echo ""; echo "Bitte den Computer neu starten." fi echo "" echo "Update fertig." + EOF -chmod 755 /usr/local/bin/voidupdate + + module end diff --git a/modules/disk/bios/postconfig b/modules/disk/bios/postconfig index 82308a6..517fbc1 100644 --- a/modules/disk/bios/postconfig +++ b/modules/disk/bios/postconfig @@ -95,22 +95,22 @@ lvcreate -q -y --name root -l 100%FREE "voidvg.${diskid}" mkfs.btrfs -q -f "/dev/mapper/voidvg.${diskid}-root" mkswap "/dev/mapper/voidvg.${diskid}-swap" mount "/dev/mapper/voidvg.${diskid}-root" "${dest}" -btrfs subvol create "${dest}/void-rootfs" -btrfs subvol create "${dest}/home" +btrfs subvol create "${dest}/rootfs" +btrfs subvol create "${dest}/homefs" mkdir -p "${dest}/snapshot" "${dest}/backup" umount "${dest}" -mount "/dev/mapper/voidvg.${diskid}-root" "${dest}" -o subvol=void-rootfs +mount "/dev/mapper/voidvg.${diskid}-root" "${dest}" -o subvol=rootfs for i in boot home dev proc sys tmp etc var/lib/backup/quelle/rootfs var/lib/backup/ziel var/db; do mkdir -p "${dest}/${i}"; done -mount "/dev/mapper/voidvg.${diskid}-root" "${dest}"/home -o subvol=home +mount "/dev/mapper/voidvg.${diskid}-root" "${dest}"/home -o subvol=homefs if [[ "${cfg[fde_key_store]}" == "once" ]]; then - mkdir -p "${dest}/var/lib/backup/quelle/boot" + mkdir -p "${dest}/var/lib/backup/quelle/bootfs" mkfs.btrfs -q -f "${target_boot}" mount "${target_boot}" "${dest}/boot" - btrfs subvol create "${dest}/boot/void" + btrfs subvol create "${dest}/boot/bootfs" mkdir -p "${dest}/boot/snapshot" "${dest}/boot/backup" umount "${dest}/boot" - mount "${target_boot}" "${dest}/boot" -o subvol=void + mount "${target_boot}" "${dest}/boot" -o subvol=bootfs fi for dir in dev proc sys run; do mkdir -p "${dest}"/$dir ; mount --rbind /$dir "${dest}"/$dir ; mount --make-rslave "${dest}"/$dir ; done diff --git a/modules/disk/uefi/postconfig b/modules/disk/uefi/postconfig index c152591..b244c77 100644 --- a/modules/disk/uefi/postconfig +++ b/modules/disk/uefi/postconfig @@ -95,22 +95,22 @@ lvcreate -q -y --name root -l 100%FREE "voidvg.${diskid}" mkfs.btrfs -q -f "/dev/mapper/voidvg.${diskid}-root" mkswap "/dev/mapper/voidvg.${diskid}-swap" mount "/dev/mapper/voidvg.${diskid}-root" "${dest}" -btrfs subvol create "${dest}/void-rootfs" -btrfs subvol create "${dest}/home" +btrfs subvol create "${dest}/rootfs" +btrfs subvol create "${dest}/homefs" mkdir -p "${dest}/snapshot" "${dest}/backup" umount "${dest}" -mount "/dev/mapper/voidvg.${diskid}-root" "${dest}" -o subvol=void-rootfs +mount "/dev/mapper/voidvg.${diskid}-root" "${dest}" -o subvol=rootfs for i in boot home dev proc sys tmp etc var/lib/backup/quelle/rootfs var/lib/backup/ziel var/db; do mkdir -p "${dest}/${i}"; done -mount "/dev/mapper/voidvg.${diskid}-root" "${dest}"/home -o subvol=home +mount "/dev/mapper/voidvg.${diskid}-root" "${dest}"/home -o subvol=homefs if [[ "${cfg[fde_key_store]}" == "once" ]]; then - mkdir -p "${dest}/var/lib/backup/quelle/boot" + mkdir -p "${dest}/var/lib/backup/quelle/bootfs" mkfs.btrfs -q -f "${target_boot}" mount "${target_boot}" "${dest}/boot" - btrfs subvol create "${dest}/boot/void" + btrfs subvol create "${dest}/boot/bootfs" mkdir -p "${dest}/boot/snapshot" "${dest}/boot/backup" umount "${dest}/boot" - mount "${target_boot}" "${dest}/boot" -o subvol=void + mount "${target_boot}" "${dest}/boot" -o subvol=bootfs fi for dir in dev proc sys run; do mkdir -p "${dest}"/$dir ; mount --rbind /$dir "${dest}"/$dir ; mount --make-rslave "${dest}"/$dir ; done