user@homelab:~/docs$ cat dual-boot.md

Dual boot and GRUB

Boot chain, GRUB menu with Windows, and recovery paths

# contents

Overview

GoalUbuntu boots by default; Windows selectable from GRUB
Result5-second GRUB menu: Ubuntu (default), Windows Boot Manager
text
UEFI firmware ─▶ \EFI\ubuntu\shimx64.efi ─▶ GRUB ─┬─▶ Ubuntu (default, 5 s)
                                                    └─▶ \EFI\Microsoft\Boot\bootmgfw.efi

Steps

Ubuntu Server hides the GRUB menu by default (timeout 0). Enable it:

shell @ server
sudo sed -i 's/^GRUB_TIMEOUT_STYLE=.*/GRUB_TIMEOUT_STYLE=menu/' /etc/default/grub
sudo sed -i 's/^GRUB_TIMEOUT=.*/GRUB_TIMEOUT=5/' /etc/default/grub
sudo update-grub

update-grub runs os-prober, which detects Windows and adds the Windows Boot Manager entry automatically.

Verify

shell @ server
grep -E "^menuentry|^submenu" /boot/grub/grub.cfg

Exactly one Ubuntu entry, the Advanced options submenu and one Windows entry.

Notes

  • Ubuntu stays the default, so the server comes back on its own after a power outage.
  • A major Windows update can move Windows Boot Manager to the top of the UEFI boot order. Fix in Novo → BIOS Setup → Boot: move ubuntu up (Fn + F6), save (Fn + F10).
  • Fallback when GRUB fails: Novo → Boot Menu selects any boot loader directly.