I have a laptop with Xubuntu installed.
At install I chose the full disk encryption option.
But yesterday i accidentally dd-ed a DSL image to sda1 (/boot partition) instead to sdb1 (pendrive).
How can i repair my /boot ?
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It only takes a minute to sign up.Sign up to join this community
Hello I tested the following commands in my laptop - yeah I deleted everything in
/dev/sda1 and I got it working again - so here it is:
- First lets get a clean (this was due to "dd-ed a DSL image to sda1" in OP post)
open GParted; reformat
/dev/sda1 with ext2 and don't forget to confirm the changes and then set the "boot" flag (right click on the partition --> select "Manage Flags" --> check the box next to "boot" [this automatically causes the "esp" flag to be set to] --> click the "Close" button).
Now we will prepare everything to
chroot into the installed system and then we will switch into it (via
sudo cryptsetup luksOpen /dev/sda5 sda5_crypt sudo vgscan --mknodes sudo vgchange -ay sudo mount /dev/mapper/ubuntu--vg-root /mnt sudo mount /dev/sda1 /mnt/boot for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done sudo chroot /mnt
delete and reinstall GRUB:
apt purge grub-common (have your terminal in fullscreen-mode due to ncurses), this might ask you if it shall delete everything - select yes; now lets reinstall it with
apt install grub-pc here select
/dev/sda when asked.
Lastly we need to reinstall a kernel to get the needed initrd.img-* and vmlinuz-* images into "/boot/". We get currently-installed kernels with
apt list --installed linux-image-* and now we reinstall this kernel with
apt install linux-image-[version-numbers]-generic --reinstall - don't forget to exchange the brackets with an actual version number.
Almost done; exit chroot with Ctrl + d, or just type
exit, and then reboot (via GUI menus or with
I had to do this to rescue an encrypted Manjaro install, and I had to modify the other answer's commands slightly for them to work.
1️⃣ Instead of mounting the drive's boot partition to
/mnt/boot, I had to mount it to
/mnt/boot/efi. Otherwise, GRUB would complain that it can't find the EFI partition.
2️⃣ I had to add
/sys/firmware/efi/efivars to the for loop (credit to this answer). Without this, GRUB would not recognize the
chrooted system as being booted in UEFI mode, though it was:
# grub-install /dev/drive Installing for x86_64-efi platform. EFI variables are not supported on this system. EFI variables are not supported on this system. grub-install: error: efibootmgr failed to register the boot entry: No such file or directory.
The drive details:
# "drive" is the encrypted Manjaro drive we need to reinstall GRUB on $ lsblk -o NAME,UUID,SIZE,FSTYPE,MOUNTPOINT,MODEL,SERIAL drive 931.5G ├─drivep1 UUID1 300M vfat # EFI partition ├─drivep2 UUID2 922.4G crypto_LUKS # / └─drivep3 UUID3 8.8G crypto_LUKS # SWAP
cryptsetup luksOpen /dev/drivep2 drive_crypt vgscan --mknodes vgchange -ay mount /dev/mapper/drive_crypt /mnt mount /dev/drivep1 /mnt/boot/efi for i in /dev /dev/pts /proc /sys /sys/firmware/efi/efivars /run; do sudo mount -B $i /mnt$i; done chroot /mnt
chrooted in, run:
grub-install /dev/drive pacman -S linux?? # replace "??" with whatever kernel version already exists # or is desirable
chroot (press Ctrl + d or run
exit), reboot (
systemctl reboot), and try to boot in to the rescued drive by selecting its entry in the UEFI! 🤞