Created
January 28, 2020 19:58
-
-
Save lighterowl/856f9a6e0777c9a65db0dae5f3d7fa5f to your computer and use it in GitHub Desktop.
Migrating an existing Ubuntu installation from MBR to UEFI+LVM-with-LUKS
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# install these before the migration in the source system | |
apt install cryptsetup-initramfs lvm2 | |
# assumed partition layout : sda1 - efi, sda2 - boot, sda3 - lvm | |
mkfs.vfat -F 32 /dev/sda1 | |
mkfs.ext4 /dev/sda2 | |
cryptsetup luksFormat /dev/sda3 | |
cryptsetup open /dev/sda3 sda3_crypt | |
pvcreate /dev/mapper/sda3_crypt | |
vgcreate xubuntu /dev/mapper/sda3_crypt | |
lvcreate -L 1G xubuntu -n swap | |
lvcreate -l 100%FREE xubuntu -n root | |
mkswap /dev/mapper/xubuntu-swap | |
mkfs.ext4 /dev/mapper/xubuntu-root | |
mkdir /mnt/src /mnt/target | |
mount -o ro /dev/sdb1 /mnt/src | |
mount /dev/mapper/xubuntu-root /mnt/target | |
cd /mnt/target | |
mkdir boot | |
mount /dev/sda2 boot | |
mkdir boot/efi | |
mount /dev/sda1 boot/efi | |
rsync -aAXH /mnt/src/ . | |
mount --bind /dev /mnt/target/dev | |
mount --bind /dev/pts /mnt/target/dev/pts | |
mount --bind /proc /mnt/target/proc | |
mount --bind /sys /mnt/target/sys | |
cp /etc/resolv.conf /mnt/target/etc/resolv.conf | |
# solve grub-config hang when querying lvm partitions | |
# https://wiki.gentoo.org/wiki/GRUB2#os-prober_and_UEFI_in_chroot | |
mkdir -p /mnt/target/run/udev | |
mount -o bind /run/udev /mnt/target/run/udev | |
mount --make-rslave /mnt/target/run/udev | |
chroot /mnt/target /bin/bash | |
# answer yes when asked about whether to delete configuration from /boot/grub | |
apt purge grub*-common grub-common:i386 shim-signed | |
rm -fR /boot/grub | |
# update logical volume paths and partition UUIDs in /etc/fstab | |
# update /etc/crypttab : sda3_crypt UUID=x none luks,discard | |
apt install grub-efi | |
grub-install --target=x86_64-efi --efi-directory=/boot/efi | |
grub-mkconfig -o /boot/grub/grub.cfg | |
update-initramfs -u -k all |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment