Change the boot order with no option in UEFI settings

In Ubuntu you can use efibootmgr to achieve this.

  1. Open the Terminal.

  2. Type efibootmgr Enter. You'll see a list of available boot options. Each option will have a number. Numbers may not be sequential - don't worry, it's normal. Here's an example output:

    BootCurrent: 0000
    Timeout: 2 seconds
    BootOrder: 0001,0000
    Boot0000* ubuntu
    Boot0001* Windows Boot Manager
    
  3. Figure out the boot order you'd like to use. For the example above, it would be 0,1 (because Ubuntu is 0 and Windows is 1). Most of the time only first number matters. The second one would be used if first one is unavailable.

  4. Update boot order: sudo efibootmgr --bootorder 0,1


The solution described in my first answer is valid in general cases, but it seems that InsydeH2O UEFIs may ignore boot order. Many laptop manufacturers use Insyde firmware, so many models are affected by this issue. Yours uses Insyde UEFI too, as indicated by the presence of EFI/Insyde directory on the EFI System Partition (ESP, mounted as /boot/efi under Linux).

A question about similar issue was asked on AskUbuntu. Its OP analysed how this UEFI looks for boot candidates on ESP. The order is:

  1. EFI/Microsoft/Boot/fwbootmgr.efi
  2. EFI/*/grubx64.efi
  3. EFI/Boot/bootx64.efi

They have described their experiments and final setup in their self-answer, so I won't repeat that knowledge here.

Keep in mind that Windows may not be able to properly restore from hibernation/hybrid shutdown after messing with its boot files, as noted by another user in a comment.

Note that you can access the ESP under Windows too by mounting it using the diskpart tool:

  1. Launch diskpart by typing its name in the Start menu.
  2. List partitions and find ESP: list partition Enter. Look at partition labels and sizes, ESP will typically be under 600 MB.
  3. Select ESP: select partition <x> (<x> is number from the previous list)
  4. Mount the partition: assign letter=Z. A new drive Z: will appear.