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 communityI 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 ?
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)/dev/sda1
-
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 chroot
):
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
Okay let's delete and reinstall GRUB:
grub-install /dev/sda
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 sudo reboot
)!
sudo grub-install /dev/sda
instead of purging grub-common and reinstalling grub-pc.
Oct 2, 2019 at 13:27
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 chroot
ed 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
Once chroot
ed in, run:
grub-install /dev/drive
pacman -S linux?? # replace "??" with whatever kernel version already exists
# or is desirable
Exit 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! 🤞