Skip to content

Instantly share code, notes, and snippets.

@xavery
Created January 28, 2020 19:58
Show Gist options
  • Save xavery/856f9a6e0777c9a65db0dae5f3d7fa5f to your computer and use it in GitHub Desktop.
Save xavery/856f9a6e0777c9a65db0dae5f3d7fa5f to your computer and use it in GitHub Desktop.
Migrating an existing Ubuntu installation from MBR to UEFI+LVM-with-LUKS
# 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