0

I dual boot Windows and Pop_OS!, and recently, Windows updated and screwed things up :(

I have two EFI partitions on one drive, one small (old) one that I previously used for Ubuntu/Windows, and a new larger one that contains systemd. I need to boot into systemd by default. I am able to access systemd by manually selecting it through UEFI, but even after setting the boot flag on the larger partition, my machine still boots into the old (wrong) partition.

I'm at a loss at how to fix this, since the internet seems to suggest that setting the boot flag should have solved the issue. I suppose deleting the old partition is an option, but that sounds scary and I don't want to mess things up further. It should be noted that the default boot location in my BiOS doesn't offer much, it seems to just be offering the current incorrect partition. Also, I would like to fix this in such a way that Windows doesn't decide to cause this issue again.

Any ideas?


Edit: output of sudo blkid

enter image description here

The partition with systemd is /dev/nvme0n1p6

Also, output of gparted might be useful:

enter image description here


Edit 2:

Output of tree -L 3 /boot/efi/: enter image description here

Mounted /dev/nvme0n1p1: enter image description here

I don't know if this helps, but I've discovered that Windows will only boot from partition 1, and Pop_OS! only from partition 6, even though the systemd operating system select screen has an option for both Pop_OS! and Windows

6
  • Sounds weird. Can you show sudo blkid (without loop devices)?
    – Hermann
    Apr 22 at 21:14
  • (Not sure what you mean about loop devices) Output of sudo blkid is added to the question
    – Joe Finn
    Apr 22 at 21:42
  • Indeed, you ended up with two ESP-like partitions. Windows and Linux seem to disagree which one to use. I am not entirely sure what you mean by "the ESP contains systemd". Can you also add the output of tree -L 3 /boot/efi/ to the question? Please also mount /dev/nvmen0n1p1 and show the tree of that.
    – Hermann
    Apr 22 at 22:44
  • > I am not entirely sure what you mean by "the ESP contains systemd" I'm not too sure about the terminology, but the systemd operating system select screen is on partition 6 > Can you also add the output of... I've updated the question with screenshots. Thank you so much for looking into this
    – Joe Finn
    Apr 22 at 23:03
  • 1
    Please don't post images of text. Copy and paste the text itself into your question and format it as code by selecting it and pressing Ctrl-K or by using the editor's {} icon.
    – cas
    Apr 23 at 9:46
0

As far as I understood, this describes the current state:

  • /dev/nvmen0n1p1 is mounted on /tmp/mnt – boots Windows, not Pop_OS
  • /dev/nvmen0n1p6 is mounted on /boot/efi – boots Pop_OS, not Windows

I came up with course of action:

  1. du -sh /boot/efi get "Linux ESP" size
  2. du -sh /tmp/mnt get "Windows ESP" size
  3. check if Windows ESP big enough for Linux ESP
  4. umount /boot/efi unmount "Linux ESP"
  5. dd if=/dev/nvmen0n1p6 of=p6.backup.vfat create a backup just in case
  6. mount /boot/efi re-mount "Linux ESP"
  7. rm -r /tmp/mnt/EFI/ubuntu it looks like you once had an Ubuntu installation. this stale boot-loader can go now.
  8. cp -r /tmp/mnt/* /boot/efi merge "Windows ESP" with "Linux ESP" (this will "heal" the Windows boot – but in the wrong ESP)`
  9. cp -r /boot/efi* /tmp/mnt/ copy the merged ESP to the "Windows ESP"
  10. umount /boot/efi unmount "Linux ESP" again
  11. dd if=/dev/zero of=/dev/nvmen0n1p6 kill the "Linux ESP" (this can be undone by dd'ing using the backup back to /dev/nvmen0n1p6). Now the UEFI has no other choice but to select the only remaining ESP
  12. edit /etc/fstab so /dev/nvmen0n1p1 will be mounted on /boot/efi
  13. Optional: mount /boot/efi mount "merged ESP"
  14. ???
  15. reboot and keep fingers crossed

Optional: You should be able to run grub-install /dev/nvmen0n1 and update-grub after mounting re merged ESP.

I am not familiar with the Pop_OS! boot style. I have never heard of systemd-bootx64.efi. I recommend preparing a USB thumbdrive with Super GRUB2 Disk – this can usually boot anyting.

2
  • Wow, thank you so much for this. I am going to back up data before trying, then I will let you know the results. Before I try it though: The answer on this thread might be relevant. Particularly, efibootmgr --create --disk /dev/sda --loader <your bootloader pathname here> --label "Arch Linux Bootloader" --verbose Are you familiar with efibootmgr? Do you think that this is worth a shot?
    – Joe Finn
    Apr 22 at 23:34
  • Indeed, efibootmgr can also set the ESP the system is supposed to boot from. However, it should not make a difference if you use efibootmgr or the UEFI integrated menu.
    – Hermann
    Apr 23 at 8:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.