#!/bin/bash # 2024.0419 kneutron # Mod for proxmox LVM+ext4 root # EFI version if [ "$1" = "help" ]; then (cat < $efidev [ -e boot-efi.dd ] && time dd if=boot-efi.dd of=$efidev bs=1M status=progress > $efidev # debugg #read -n 1 -p "PK" echo "`date` - RESTORING root filesystem to $rootdev" # PROBLEM with long filenames in UDF - gets cut off, use $1 #time fsarchiver restfs *.fsa id=0,dest=$rootdev time fsarchiver restfs -v "$1" id=0,dest=$rootdev || failexit 400 "Restore to $rootdev failed!"; date # boojumtastic! tune2fs -m2 $rootdev mount $rootdev $rootdir -onoatime,rw # Comment out any existing swap partitions in restored fstab # REF: https://unix.stackexchange.com/questions/295537/how-do-i-comment-lines-in-fstab-using-sed #sed -e '/[/]/common s/^/#/' /etc/fstab /bin/cp -v $rootdir/etc/fstab $rootdir/etc/fstab--bkp && \ sed -i '/swap/s/^/#/' $rootdir/etc/fstab; grep swap $rootdir/etc/fstab # Detect swap partition(s) in restore environ - print /dev/sdXX w/o ":" #for p in `blkid |grep TYPE=\"swap\" |awk -F: '{ print $1 }'`; do # pmod=${p##*/} # strip off beginning /dev/, leave sdXX # swapuuid=`ls -l /dev/disk/by-uuid |grep $pmod |awk '{ print $9 }'` # check have we already done this? # [ `grep -c $swapuuid $rootdir/etc/fstab` -gt 0 ] || \ # echo "UUID=$swapuuid swap swap defaults,pri=2 0 0" |tee -a $rootdir/etc/fstab # echo "UUID=$swapuuid swap swap defaults,pri=2 0 0" >> $rootdir/etc/fstab #done # /dev/sdb5 #ls -l /dev/disk/by-uuid |grep sdb5 # 1 2 3 4 5 6 7 8 9 #lrwxrwxrwx 1 root root 10 Aug 27 11:09 dfc46f8f-bcfa-4e73-b62f-b24dd0bf60cf -> ../../sdb5 # Make sure we can boot! echo "$(date) - Installing grub" grub-install --root-directory=$rootdir $rtdevonly mount -o bind /dev $rootdir/dev; mount -o bind /proc $rootdir/proc; mount -o bind /sys $rootdir/sys #mount -o bind $efidev $rootdir/boot/efi # not work? # FIXED myres2=$rootdir/$myres touch $myres2 || failexit 298 "Check if R/O filesystem?" echo "#!/bin/bash" > $myres2 || failexit 299 "Cannot update $myres2 injection script - Check R/O filesystem?" echo "mount /boot/efi" >>$myres2 echo "grub-install $rtdevonly" >> $myres2 # from chroot echo "update-grub" >> $myres2 echo "exit;" >> $myres2 #^D # inject script here! chroot $rootdir /bin/bash /$myres # Leave chroot mounted in case we need it #umount -a $rootdir/* #umount -a $rootdir/{dev,proc,sys} #umount $rootdir/* 2>/dev/null #umount $rootdir 2>/dev/null df -hT echo "DON'T FORGET TO COPY /home and adjust fstab for swap / home / squid BEFORE booting new drive!" echo "+ also adjust etc/network/interfaces , getdrives-byid , etc/rc.local , etc/hostname , etc/hosts ," echo "+ etc/init/tty11 port (home/cloudssh/.bash_login" echo '=====' echo "If restoring to VM and a zpool on the host does not exist:" echo " systemctl disable zfs-import@zpoolnamehere " echo "...and it should not hold up the reboot anymore" echo "- Also remove anything from /etc/fstab that exists on the host but not in-vm" exit; # 2024.0419 kneutron ======================================= 2024.0508 Added help screen 2024.0419 Tested, works OK with proxmox lvm 2017.0827 Tested, works OK