1

I have 2 in my PC, a Samsung 970 EVO 500GB M.2 NVMe and a Samsung SATA SSD 860 EVO with 250 GB. Windows IS installed on my m.2 drive, and recently I installed Pop! _OS (an Ubuntu fork) on my SATA SSD.

I still cannot figure out how to get a displayed message at startup to choose between those two OS, unless I go to bios and manually pick from which drive should system boot.

Anyone have an idea how to do this?

I even CHECKED in Windows advanced options and in the "Default operating system" dropdown I see only Windows 10 listed. Why is Windows unable to see second operating system on another drive?

1

Windows's "Default operating system" lists only operating systems bootable using the Windows bootloader and registered to Windows BCD. This option exists mainly to allow booting older versions of Windows if you've installed a new version of Windows alongside an older one, instead of updating.

My guess is that your Windows installation uses native UEFI boot style, and your Pop!_OS is using legacy BIOS style.

Even if the BIOS compatibility support module (CSM) in modern UEFI firmware is enabled, it gets disabled for booting native UEFI bootloaders, and most of those bootloaders don't know how to switch CSM back on to transition into BIOS-style boot process. The CSM provides the support for the 16-bit legacy BIOS calls a legacy-style bootloader uses. So an UEFI bootloader usually cannot start a legacy BIOS-style bootloader.

On the other hand, when the CSM is starting a legacy BIOS-style bootloader, it needs to disable the native UEFI firmware interface for accessing the UEFI boot settings, because there is simply no equivalent for it in the 16-bit legacy BIOS environment. As a result, a legacy BIOS bootloader cannot start native UEFI bootloaders either. And because a part of that UEFI firmware interface, known as UEFI Runtime Services, is needed to properly install a native UEFI bootloader onto the system disk, an operating system that is booted using legacy BIOS methods won't even be able to fulfill all the steps required to install a native UEFI bootloader later.

Because of these restrictions, the way you boot the OS installer usually decides the boot method of the OS for you: if the OS installer is booted in legacy BIOS style, it installs a legacy BIOS bootloader. And if the installer is booted in UEFI style, it installs an UEFI bootloader, respectively.

The steps you would need to switch your Pop!_OS into using an UEFI-style bootloader would be roughly these:

  • first, in Pop!_OS, install the grub-efi-amd64 package, and also grub-efi-amd64-signed if it is available. This gives your OS the capability to install a native UEFI version of GRUB. You should also install the efibootmgr package, as you might need it later to adjust native UEFI boot settings.

  • second, boot in native UEFI style from an external media and gain access to your Pop!_OS installation. If the Pop!_OS installation media offers a rescue mode, it might do this automatically for you. If you need to use a live Linux media of some other type, you might have to do something like this:

    sudo mkdir /old_installation sudo mount /dev/ /old_installation sudo mount -t proc proc /old_installation/proc sudo mount -t sysfs sysfs /old_installation/sysfs sudo mount -o bind,rw /dev /old_installation/dev sudo mount -t efivarfs efivarfs /old_installation/sys/firmware/efi/efivars sudo mount /dev/ /old_installation/boot/efi sudo chroot /old_installation /bin/bash

(If your installation uses LVM, disk encryption or other complications, there will be additional steps required.) Now you should be running as root in the environment of your Pop!_OS installation.

First, run efibootmgr -v to see the native UEFI boot settings. It should mention the Windows Boot Manager, but no version of GRUB at this point.

grub-install --target=x86_64-efi /dev/<your NVMe disk>

This should automatically install an UEFI version of GRUB to coexist with the Windows bootloader. If you run efibootmgr -v again, you should see that GRUB has been added to UEFI boot settings and has been set as the first option in the boot order.

Then run update-grub to let it auto-detect all operating systems existing on your computer and build a GRUB boot menu for you. It should tell you that Windows has been detected.

0

You have to install Grub interface. It will let you choose between a default OS (that you can change in the bios) and other options. It will automaticly choose the default after a few seconds.

I am a beginner myself so i can't give you the code. Good luck !

0

Windows isn't loaded so it won't see anything before boot from it; your firmware looks for a boot manager, such as Windows System Manager, or GRUB, on the drive set as #1 boot priority.

You will only ger a menu if GRUB (or an equivalent) is installed on the drive you set in BIOS/Firmware.

Reinstall Linux to run alongside Windows 10 in the M.2 drive and GRUB will appear,, offering Windows 10 or Linux.

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.