#!/bin/bash LogPrint "Start system layout restoration." mkdir -p /mnt/local if create_component "vgchange" "rear" ; then lvm vgchange -a n >/dev/null component_created "vgchange" "rear" fi set -e set -x if create_component "/dev/mapper/360060e8007e39e000030e39e00000776" "multipath" ; then # Create /dev/mapper/360060e8007e39e000030e39e00000776 (multipath) # # Code handling Multipath Device '/dev/mapper/360060e8007e39e000030e39e00000776' # Log "Erasing MBR of device /dev/mapper/360060e8007e39e000030e39e00000776" dd if=/dev/zero of=/dev/mapper/360060e8007e39e000030e39e00000776 bs=512 count=1 sync create_disk_label /dev/mapper/360060e8007e39e000030e39e00000776 msdos create_disk_partition "/dev/mapper/360060e8007e39e000030e39e00000776" "primary" 1 1048576 34360786943 sleep 1 if ! partprobe -s /dev/mapper/360060e8007e39e000030e39e00000776 >&2 ; then LogPrint 'retrying partprobe /dev/mapper/360060e8007e39e000030e39e00000776 after 10 seconds' sleep 10 if ! partprobe -s /dev/mapper/360060e8007e39e000030e39e00000776 >&2 ; then LogPrint 'retrying partprobe /dev/mapper/360060e8007e39e000030e39e00000776 after 1 minute' sleep 60 if ! partprobe -s /dev/mapper/360060e8007e39e000030e39e00000776 >&2 ; then LogPrint 'partprobe /dev/mapper/360060e8007e39e000030e39e00000776 failed, proceeding bona fide' fi fi fi # Make sure device nodes are visible (eg. in RHEL4) my_udevtrigger my_udevsettle # Clean up transient partitions and resize shrinked ones delete_dummy_partitions_and_resize_real_ones # # End of code handling Multipath Device '/dev/mapper/360060e8007e39e000030e39e00000776' # component_created "/dev/mapper/360060e8007e39e000030e39e00000776" "multipath" else LogPrint "Skipping /dev/mapper/360060e8007e39e000030e39e00000776 (multipath) as it has already been created." fi if create_component "/dev/mapper/360060e8007e39e000030e39e00000776-part1" "part" ; then # Create /dev/mapper/360060e8007e39e000030e39e00000776-part1 (part) component_created "/dev/mapper/360060e8007e39e000030e39e00000776-part1" "part" else LogPrint "Skipping /dev/mapper/360060e8007e39e000030e39e00000776-part1 (part) as it has already been created." fi if create_component "swap:/dev/mapper/360060e8007e39e000030e39e00000776-part1" "swap" ; then # Create swap:/dev/mapper/360060e8007e39e000030e39e00000776-part1 (swap) LogPrint "Creating swap on /dev/mapper/360060e8007e39e000030e39e00000776-part1" mkswap -U a3fcbb3b-d490-4d1e-b556-5bfb632c3536 /dev/mapper/360060e8007e39e000030e39e00000776-part1 >&2 component_created "swap:/dev/mapper/360060e8007e39e000030e39e00000776-part1" "swap" else LogPrint "Skipping swap:/dev/mapper/360060e8007e39e000030e39e00000776-part1 (swap) as it has already been created." fi if create_component "/dev/mapper/360060e8007e39e000030e39e00000775" "multipath" ; then # Create /dev/mapper/360060e8007e39e000030e39e00000775 (multipath) # # Code handling Multipath Device '/dev/mapper/360060e8007e39e000030e39e00000775' # Log "Erasing MBR of device /dev/mapper/360060e8007e39e000030e39e00000775" dd if=/dev/zero of=/dev/mapper/360060e8007e39e000030e39e00000775 bs=512 count=1 sync create_disk_label /dev/mapper/360060e8007e39e000030e39e00000775 msdos create_disk_partition "/dev/mapper/360060e8007e39e000030e39e00000775" "primary" 1 1048576 8388607 my_udevsettle parted -s /dev/mapper/360060e8007e39e000030e39e00000775 set 1 boot on >&2 my_udevsettle my_udevsettle parted -s /dev/mapper/360060e8007e39e000030e39e00000775 set 1 prep on >&2 my_udevsettle create_disk_partition "/dev/mapper/360060e8007e39e000030e39e00000775" "primary" 2 8388608 64437092351 sleep 1 if ! partprobe -s /dev/mapper/360060e8007e39e000030e39e00000775 >&2 ; then LogPrint 'retrying partprobe /dev/mapper/360060e8007e39e000030e39e00000775 after 10 seconds' sleep 10 if ! partprobe -s /dev/mapper/360060e8007e39e000030e39e00000775 >&2 ; then LogPrint 'retrying partprobe /dev/mapper/360060e8007e39e000030e39e00000775 after 1 minute' sleep 60 if ! partprobe -s /dev/mapper/360060e8007e39e000030e39e00000775 >&2 ; then LogPrint 'partprobe /dev/mapper/360060e8007e39e000030e39e00000775 failed, proceeding bona fide' fi fi fi # Make sure device nodes are visible (eg. in RHEL4) my_udevtrigger my_udevsettle # Clean up transient partitions and resize shrinked ones delete_dummy_partitions_and_resize_real_ones # # End of code handling Multipath Device '/dev/mapper/360060e8007e39e000030e39e00000775' # component_created "/dev/mapper/360060e8007e39e000030e39e00000775" "multipath" else LogPrint "Skipping /dev/mapper/360060e8007e39e000030e39e00000775 (multipath) as it has already been created." fi if create_component "/dev/mapper/360060e8007e39e000030e39e00000775-part1" "part" ; then # Create /dev/mapper/360060e8007e39e000030e39e00000775-part1 (part) component_created "/dev/mapper/360060e8007e39e000030e39e00000775-part1" "part" else LogPrint "Skipping /dev/mapper/360060e8007e39e000030e39e00000775-part1 (part) as it has already been created." fi if create_component "/dev/mapper/360060e8007e39e000030e39e00000775-part2" "part" ; then # Create /dev/mapper/360060e8007e39e000030e39e00000775-part2 (part) component_created "/dev/mapper/360060e8007e39e000030e39e00000775-part2" "part" else LogPrint "Skipping /dev/mapper/360060e8007e39e000030e39e00000775-part2 (part) as it has already been created." fi if create_component "fs:/" "fs" ; then # Create fs:/ (fs) # Wait until udev had created '/dev/mapper/360060e8007e39e000030e39e00000775-part2' before creating a filesystem there: my_udevsettle LogPrint 'Creating filesystem of type 'btrfs' with mount point '/' on '/dev/mapper/360060e8007e39e000030e39e00000775-part2'.' # Using wipefs to cleanup '/dev/mapper/360060e8007e39e000030e39e00000775-part2' before creating filesystem. mount | grep -q /dev/mapper/360060e8007e39e000030e39e00000775-part2 || wipefs --all --force /dev/mapper/360060e8007e39e000030e39e00000775-part2 || wipefs --all /dev/mapper/360060e8007e39e000030e39e00000775-part2 || dd if=/dev/zero of=/dev/mapper/360060e8007e39e000030e39e00000775-part2 bs=512 count=1 || true # if /dev/mapper/360060e8007e39e000030e39e00000775-part2 is already mounted, skip # force overwriting existing btrfs when the disk was already used before if ! mount | grep -q /dev/mapper/360060e8007e39e000030e39e00000775-part2 >&2 ; then # Try to create btrfs with UUID if ! mkfs -t btrfs -U a28968b6-791e-4992-bc53-2a00094df822 -f /dev/mapper/360060e8007e39e000030e39e00000775-part2 >&2 ; then mkfs -t btrfs -f /dev/mapper/360060e8007e39e000030e39e00000775-part2 >&2 new_uuid=$( btrfs filesystem show /dev/mapper/360060e8007e39e000030e39e00000775-part2 2>/dev/null | grep -o 'uuid: .*' | cut -d ':' -f 2 | tr -d '[:space:]' ) if [ a28968b6-791e-4992-bc53-2a00094df822 != $new_uuid ] ; then # The following grep command intentionally also # fails when there is not yet a FS_UUID_MAP file # and then the FS_UUID_MAP file will be created: if ! grep -q a28968b6-791e-4992-bc53-2a00094df822 "/var/lib/rear/layout/fs_uuid_mapping" ; then echo "a28968b6-791e-4992-bc53-2a00094df822 $new_uuid /dev/mapper/360060e8007e39e000030e39e00000775-part2" >> /var/lib/rear/layout/fs_uuid_mapping else # Required when we restart rear recover (via menu) - UUID changed again. old_uuid=$(grep a28968b6-791e-4992-bc53-2a00094df822 /var/lib/rear/layout/fs_uuid_mapping | tail -1 | awk '{print $2}') SED_SCRIPT=";/a28968b6-791e-4992-bc53-2a00094df822/s/${old_uuid}/${new_uuid}/g" sed -i "$SED_SCRIPT" "/var/lib/rear/layout/fs_uuid_mapping" fi fi # end of [ a28968b6-791e-4992-bc53-2a00094df822 != ] fi fi LogPrint "Mounting filesystem /" mkdir -p /mnt/local/ mount -t btrfs -o rw,relatime,space_cache /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/ # SLES12-SP1 (and later) btrfs subvolumes setup needed for /dev/mapper/360060e8007e39e000030e39e00000775-part2 (default subvolume path contains '@/.snapshots/') # Creating normal btrfs subvolume @ on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / btrfs subvolume create /mnt/local//@ # Creating normal btrfs subvolume @/boot/grub2/powerpc-ieee1275 on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@/boot/grub2 ; then mkdir -p /mnt/local//@/boot/grub2 fi btrfs subvolume create /mnt/local//@/boot/grub2/powerpc-ieee1275 # Creating normal btrfs subvolume @/etc/salt on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@/etc ; then mkdir -p /mnt/local//@/etc fi btrfs subvolume create /mnt/local//@/etc/salt # Creating normal btrfs subvolume @/opt on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@ ; then mkdir -p /mnt/local//@ fi btrfs subvolume create /mnt/local//@/opt # Creating normal btrfs subvolume @/opt/ctm on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@/opt ; then mkdir -p /mnt/local//@/opt fi btrfs subvolume create /mnt/local//@/opt/ctm # Creating normal btrfs subvolume @/opt/patrol on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@/opt ; then mkdir -p /mnt/local//@/opt fi btrfs subvolume create /mnt/local//@/opt/patrol # Creating normal btrfs subvolume @/opt/teamquest on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@/opt ; then mkdir -p /mnt/local//@/opt fi btrfs subvolume create /mnt/local//@/opt/teamquest # Creating normal btrfs subvolume @/root on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@ ; then mkdir -p /mnt/local//@ fi btrfs subvolume create /mnt/local//@/root # Creating normal btrfs subvolume @/srv on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@ ; then mkdir -p /mnt/local//@ fi btrfs subvolume create /mnt/local//@/srv # Creating normal btrfs subvolume @/tmp on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@ ; then mkdir -p /mnt/local//@ fi btrfs subvolume create /mnt/local//@/tmp # Creating normal btrfs subvolume @/usr/local on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@/usr ; then mkdir -p /mnt/local//@/usr fi btrfs subvolume create /mnt/local//@/usr/local # Creating normal btrfs subvolume @/var/crash on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@/var ; then mkdir -p /mnt/local//@/var fi btrfs subvolume create /mnt/local//@/var/crash # Creating normal btrfs subvolume @/var/patrol on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@/var ; then mkdir -p /mnt/local//@/var fi btrfs subvolume create /mnt/local//@/var/patrol # Creating normal btrfs subvolume @/var/lib/libvirt/images on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@/var/lib/libvirt ; then mkdir -p /mnt/local//@/var/lib/libvirt fi btrfs subvolume create /mnt/local//@/var/lib/libvirt/images # Creating normal btrfs subvolume @/var/lib/mailman on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@/var/lib ; then mkdir -p /mnt/local//@/var/lib fi btrfs subvolume create /mnt/local//@/var/lib/mailman # Creating normal btrfs subvolume @/var/lib/mariadb on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@/var/lib ; then mkdir -p /mnt/local//@/var/lib fi btrfs subvolume create /mnt/local//@/var/lib/mariadb # Creating normal btrfs subvolume @/var/lib/mysql on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@/var/lib ; then mkdir -p /mnt/local//@/var/lib fi btrfs subvolume create /mnt/local//@/var/lib/mysql # Creating normal btrfs subvolume @/var/lib/named on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@/var/lib ; then mkdir -p /mnt/local//@/var/lib fi btrfs subvolume create /mnt/local//@/var/lib/named # Creating normal btrfs subvolume @/var/lib/pgsql on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@/var/lib ; then mkdir -p /mnt/local//@/var/lib fi btrfs subvolume create /mnt/local//@/var/lib/pgsql # Creating normal btrfs subvolume @/var/log on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@/var ; then mkdir -p /mnt/local//@/var fi btrfs subvolume create /mnt/local//@/var/log # Creating normal btrfs subvolume @/var/opt on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@/var ; then mkdir -p /mnt/local//@/var fi btrfs subvolume create /mnt/local//@/var/opt # Creating normal btrfs subvolume @/var/spool on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@/var ; then mkdir -p /mnt/local//@/var fi btrfs subvolume create /mnt/local//@/var/spool # Creating normal btrfs subvolume @/var/tmp on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@/var ; then mkdir -p /mnt/local//@/var fi btrfs subvolume create /mnt/local//@/var/tmp # Creating normal btrfs subvolume @/var/lib/machines on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / if ! test -d /mnt/local//@/var/lib ; then mkdir -p /mnt/local//@/var/lib fi btrfs subvolume create /mnt/local//@/var/lib/machines # Begin btrfs default subvolume setup on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / # Doing special SLES 12 SP1 btrfs default snapper snapshot subvolume setup # because the default subvolume path '@/.snapshots/1/snapshot' contains '@/.snapshots/' # Making the @ subvolume the initial default subvolume # Get the ID of the subvolume subvolumeID=$( btrfs subvolume list -a /mnt/local/ | sed -e 's/\///' | grep ' @$' | tr -s '[:blank:]' ' ' | cut -d ' ' -f 2 ) # Set the @ subvolume as initial default subvolume using its subvolume ID btrfs subvolume set-default $subvolumeID /mnt/local/ # Begin step 1 of special SLES 12 SP1 btrfs default snapper snapshot subvolume setup umount /mnt/local/ # Configuring snapper for root filesystem - step 1: # - temporarily mounting device # - copying/modifying config-file # - creating filesystem config # - creating snapshot of first root filesystem # - setting default subvolume if test -x /usr/lib/snapper/installation-helper then LogPrint 'Running snapper/installation-helper' /usr/lib/snapper/installation-helper --step 1 --device /dev/mapper/360060e8007e39e000030e39e00000775-part2 --description 'first root filesystem' else LogPrintError '/usr/lib/snapper/installation-helper not executable may indicate an error with btrfs default subvolume setup for @/.snapshots/1/snapshot on /dev/mapper/360060e8007e39e000030e39e00000775-part2' fi mount -t btrfs -o subvolid=0 -o rw,relatime,space_cache /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/ # End step 1 of special SLES 12 SP1 btrfs default snapper snapshot subvolume setup # Remounting the @/.snapshots/1/snapshot default subvolume at /mnt/local/ umount /mnt/local/ mount -t btrfs -o rw,relatime,space_cache /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/ # End btrfs default subvolume setup on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / # It is not possible to recreate btrfs snapshot subvolumes, skipping mounting @/.snapshots/1/snapshot on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at / # Mounting btrfs normal subvolume @/var/lib/named on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/var/lib/named (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/var/lib/named ' ; then if ! test -d /mnt/local/var/lib/named ; then mkdir -p /mnt/local/var/lib/named fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/var/lib/named /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/var/lib/named fi # Mounting btrfs normal subvolume @/var/tmp on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/var/tmp (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/var/tmp ' ; then if ! test -d /mnt/local/var/tmp ; then mkdir -p /mnt/local/var/tmp fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/var/tmp /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/var/tmp fi # Mounting btrfs normal subvolume @/var/lib/pgsql on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/var/lib/pgsql (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/var/lib/pgsql ' ; then if ! test -d /mnt/local/var/lib/pgsql ; then mkdir -p /mnt/local/var/lib/pgsql fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/var/lib/pgsql /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/var/lib/pgsql fi # Mounting btrfs normal subvolume @/tmp on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/tmp (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/tmp ' ; then if ! test -d /mnt/local/tmp ; then mkdir -p /mnt/local/tmp fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/tmp /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/tmp fi # Mounting btrfs normal subvolume @/var/patrol on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/var/patrol (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/var/patrol ' ; then if ! test -d /mnt/local/var/patrol ; then mkdir -p /mnt/local/var/patrol fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/var/patrol /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/var/patrol fi # Mounting btrfs normal subvolume @/boot/grub2/powerpc-ieee1275 on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/boot/grub2/powerpc-ieee1275 (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/boot/grub2/powerpc-ieee1275 ' ; then if ! test -d /mnt/local/boot/grub2/powerpc-ieee1275 ; then mkdir -p /mnt/local/boot/grub2/powerpc-ieee1275 fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/boot/grub2/powerpc-ieee1275 /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/boot/grub2/powerpc-ieee1275 fi # Mounting btrfs normal subvolume @/usr/local on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/usr/local (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/usr/local ' ; then if ! test -d /mnt/local/usr/local ; then mkdir -p /mnt/local/usr/local fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/usr/local /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/usr/local fi # Mounting btrfs normal subvolume @/var/opt on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/var/opt (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/var/opt ' ; then if ! test -d /mnt/local/var/opt ; then mkdir -p /mnt/local/var/opt fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/var/opt /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/var/opt fi # Mounting btrfs normal subvolume @/var/lib/machines on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/var/lib/machines (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/var/lib/machines ' ; then if ! test -d /mnt/local/var/lib/machines ; then mkdir -p /mnt/local/var/lib/machines fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/var/lib/machines /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/var/lib/machines fi # Mounting btrfs normal subvolume @/var/lib/libvirt/images on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/var/lib/libvirt/images (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/var/lib/libvirt/images ' ; then if ! test -d /mnt/local/var/lib/libvirt/images ; then mkdir -p /mnt/local/var/lib/libvirt/images fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/var/lib/libvirt/images /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/var/lib/libvirt/images fi # Mounting btrfs normal subvolume @/.snapshots on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/.snapshots (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/.snapshots ' ; then if ! test -d /mnt/local/.snapshots ; then mkdir -p /mnt/local/.snapshots fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/.snapshots /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/.snapshots fi # Mounting btrfs normal subvolume @/var/crash on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/var/crash (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/var/crash ' ; then if ! test -d /mnt/local/var/crash ; then mkdir -p /mnt/local/var/crash fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/var/crash /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/var/crash fi # Mounting btrfs normal subvolume @/var/log on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/var/log (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/var/log ' ; then if ! test -d /mnt/local/var/log ; then mkdir -p /mnt/local/var/log fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/var/log /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/var/log fi # Mounting btrfs normal subvolume @/opt on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/opt (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/opt ' ; then if ! test -d /mnt/local/opt ; then mkdir -p /mnt/local/opt fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/opt /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/opt fi # Mounting btrfs normal subvolume @/var/lib/mariadb on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/var/lib/mariadb (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/var/lib/mariadb ' ; then if ! test -d /mnt/local/var/lib/mariadb ; then mkdir -p /mnt/local/var/lib/mariadb fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/var/lib/mariadb /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/var/lib/mariadb fi # Mounting btrfs normal subvolume @/var/lib/mysql on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/var/lib/mysql (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/var/lib/mysql ' ; then if ! test -d /mnt/local/var/lib/mysql ; then mkdir -p /mnt/local/var/lib/mysql fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/var/lib/mysql /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/var/lib/mysql fi # Mounting btrfs normal subvolume @/etc/salt on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/etc/salt (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/etc/salt ' ; then if ! test -d /mnt/local/etc/salt ; then mkdir -p /mnt/local/etc/salt fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/etc/salt /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/etc/salt fi # Mounting btrfs normal subvolume @/var/lib/mailman on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/var/lib/mailman (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/var/lib/mailman ' ; then if ! test -d /mnt/local/var/lib/mailman ; then mkdir -p /mnt/local/var/lib/mailman fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/var/lib/mailman /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/var/lib/mailman fi # Mounting btrfs normal subvolume @/srv on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/srv (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/srv ' ; then if ! test -d /mnt/local/srv ; then mkdir -p /mnt/local/srv fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/srv /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/srv fi # Mounting btrfs normal subvolume @/root on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/root (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/root ' ; then if ! test -d /mnt/local/root ; then mkdir -p /mnt/local/root fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/root /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/root fi # Mounting btrfs normal subvolume @/var/spool on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/var/spool (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/var/spool ' ; then if ! test -d /mnt/local/var/spool ; then mkdir -p /mnt/local/var/spool fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/var/spool /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/var/spool fi # Mounting btrfs normal subvolume @/opt/ctm on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/opt/ctm (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/opt/ctm ' ; then if ! test -d /mnt/local/opt/ctm ; then mkdir -p /mnt/local/opt/ctm fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/opt/ctm /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/opt/ctm fi # Mounting btrfs normal subvolume @/opt/teamquest on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/opt/teamquest (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/opt/teamquest ' ; then if ! test -d /mnt/local/opt/teamquest ; then mkdir -p /mnt/local/opt/teamquest fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/opt/teamquest /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/opt/teamquest fi # Mounting btrfs normal subvolume @/opt/patrol on /dev/mapper/360060e8007e39e000030e39e00000775-part2 at /mnt/local/opt/patrol (if not something is already mounted there): if ! mount -t btrfs | tr -s '[:blank:]' ' ' | grep -q ' on /mnt/local/opt/patrol ' ; then if ! test -d /mnt/local/opt/patrol ; then mkdir -p /mnt/local/opt/patrol fi mount -t btrfs -o rw,relatime,space_cache -o subvol=@/opt/patrol /dev/mapper/360060e8007e39e000030e39e00000775-part2 /mnt/local/opt/patrol fi component_created "fs:/" "fs" else LogPrint "Skipping fs:/ (fs) as it has already been created." fi if create_component "btrfsmountedsubvol:/" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/ (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/ (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/var/lib/named" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/var/lib/named (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/var/lib/named" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/var/lib/named (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/var/tmp" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/var/tmp (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/var/tmp" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/var/tmp (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/var/lib/pgsql" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/var/lib/pgsql (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/var/lib/pgsql" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/var/lib/pgsql (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/tmp" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/tmp (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/tmp" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/tmp (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/var/patrol" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/var/patrol (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/var/patrol" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/var/patrol (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/boot/grub2/powerpc-ieee1275" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/boot/grub2/powerpc-ieee1275 (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/boot/grub2/powerpc-ieee1275" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/boot/grub2/powerpc-ieee1275 (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/usr/local" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/usr/local (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/usr/local" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/usr/local (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/var/opt" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/var/opt (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/var/opt" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/var/opt (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/var/lib/machines" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/var/lib/machines (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/var/lib/machines" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/var/lib/machines (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/var/lib/libvirt/images" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/var/lib/libvirt/images (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/var/lib/libvirt/images" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/var/lib/libvirt/images (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/.snapshots" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/.snapshots (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/.snapshots" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/.snapshots (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/var/crash" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/var/crash (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/var/crash" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/var/crash (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/var/log" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/var/log (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/var/log" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/var/log (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/opt" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/opt (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/opt" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/opt (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/var/lib/mariadb" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/var/lib/mariadb (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/var/lib/mariadb" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/var/lib/mariadb (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/var/lib/mysql" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/var/lib/mysql (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/var/lib/mysql" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/var/lib/mysql (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/etc/salt" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/etc/salt (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/etc/salt" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/etc/salt (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/var/lib/mailman" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/var/lib/mailman (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/var/lib/mailman" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/var/lib/mailman (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/srv" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/srv (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/srv" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/srv (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/root" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/root (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/root" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/root (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/var/spool" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/var/spool (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/var/spool" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/var/spool (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/opt/ctm" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/opt/ctm (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/opt/ctm" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/opt/ctm (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/opt/teamquest" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/opt/teamquest (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/opt/teamquest" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/opt/teamquest (btrfsmountedsubvol) as it has already been created." fi if create_component "btrfsmountedsubvol:/opt/patrol" "btrfsmountedsubvol" ; then # Create btrfsmountedsubvol:/opt/patrol (btrfsmountedsubvol) component_created "btrfsmountedsubvol:/opt/patrol" "btrfsmountedsubvol" else LogPrint "Skipping btrfsmountedsubvol:/opt/patrol (btrfsmountedsubvol) as it has already been created." fi set +x set +e LogPrint "Disk layout created."