Skip to content

Can't parse default entry from efibootmgr? #51

Description

@AngryLoki

Hi, it looks like efiboots fails to parse/display "Boot Next":

Image

Maybe this is somehow related to garbled parameters for "Windows Boot Manager" (that's what Windows saved).

Here is the output of efibootmgr-18:

BootNext: 0001
BootCurrent: 0002
Timeout: 1 seconds
BootOrder: 0002,0000,0004
Boot0000* Windows Boot Manager  HD(1,GPT,4f397bab-a928-4586-b33f-22866340cf69,0x800,0x208000)/\EFI\Microsoft\Boot\bootmgfw.efi57494e444f5753000100000088000000780000004200430044004f0042004a004500430054003d007b00390064006500610038003600320063002d0035006300640064002d0034006500370030002d0061006300630031002d006600330032006200330034003400640034003700390035007d00000000000100000010000000040000007fff0400
Boot0001* Gentoo Linux 6.17.2-gentoo-dist (UKI) on EFI system partition HD(1,GPT,4f397bab-a928-4586-b33f-22866340cf69,0x800,0x208000)/\EFI\Linux\af06cf44681c41b4a835b1826d936b6e-6.17.2-gentoo-dist.efi
Boot0002* Gentoo Linux 6.17.1-gentoo-dist (UKI) on EFI system partition HD(1,GPT,4f397bab-a928-4586-b33f-22866340cf69,0x800,0x208000)/\EFI\Linux\af06cf44681c41b4a835b1826d936b6e-6.17.1-gentoo-dist.efi
Boot0004* rEFInd Boot Manager   HD(1,GPT,4f397bab-a928-4586-b33f-22866340cf69,0x800,0x208000)/\EFI\refind\refind_x64.efi

(with --unicode it indeed turns into 䥗䑎坏S + null terminator + lost data - looks like a common thing - https://www.google.com/search?q=%E4%A5%97%E4%91%8E%E5%9D%8F)

Here is the output of latest efiboots:

INFO:root:Welcome to Efiboots 3.0.0
DEBUG:root:resource base path: /ovh/elinvention/Efiboots
DEBUG:root:app-menu: <Gio.Menu object at 0x7f39c7b3a440 (GMenu at 0x55c138f17510)>
DEBUG:root:Running: findmnt --noheadings --output SOURCE,FSTYPE --mountpoint /efi
DEBUG:root:Device path /dev/nvme0n1p1 split into /dev/nvme0n1 and 1
INFO:root:Detected ESP on disk /dev/nvme0n1 part 1
DEBUG:root:Running: efibootmgr --version
INFO:Efibootmgr:efibootmgr version 18 detected
DEBUG:root:Running: efibootmgr --unicode
DEBUG:root:['BootNext: 0001', 'BootCurrent: 0002', 'Timeout: 1 seconds', 'BootOrder: 0002,0000,0004', 'Boot0000* Windows Boot Manager\tHD(1,GPT,4f397bab-a928-4586-b33f-22866340cf69,0x800,0x208000)/\\EFI\\Microsoft\\Boot\\bootmgfw.efi䥗䑎坏S\x01', 'Boot0001* Gentoo Linux 6.17.2-gentoo-dist (UKI) on EFI system partition\tHD(1,GPT,4f397bab-a928-4586-b33f-22866340cf69,0x800,0x208000)/\\EFI\\Linux\\af06cf44681c41b4a835b1826d936b6e-6.17.2-gentoo-dist.efi', 'Boot0002* Gentoo Linux 6.17.1-gentoo-dist (UKI) on EFI system partition\tHD(1,GPT,4f397bab-a928-4586-b33f-22866340cf69,0x800,0x208000)/\\EFI\\Linux\\af06cf44681c41b4a835b1826d936b6e-6.17.1-gentoo-dist.efi', 'Boot0004* rEFInd Boot Manager\tHD(1,GPT,4f397bab-a928-4586-b33f-22866340cf69,0x800,0x208000)/\\EFI\\refind\\refind_x64.efi']
DEBUG:parser:BootNext: 0001
DEBUG:parser:BootCurrent: 0002
DEBUG:parser:Timeout: 1
DEBUG:parser:BootOrder: ['0002', '0000', '0004']
DEBUG:parser:ParsedEfibootmgrEntry(num='0000', active=True, name='Windows Boot Manager', path='', parameters='/\\EFI\\Microsoft\\Boot\\bootmgfw.efi䥗䑎坏S\x01')
DEBUG:parser:ParsedEfibootmgrEntry(num='0001', active=True, name='Gentoo Linux 6.17.2-gentoo-dist (UKI) on EFI system partition', path='', parameters='/\\EFI\\Linux\\af06cf44681c41b4a835b1826d936b6e-6.17.2-gentoo-dist.efi')
DEBUG:parser:ParsedEfibootmgrEntry(num='0002', active=True, name='Gentoo Linux 6.17.1-gentoo-dist (UKI) on EFI system partition', path='', parameters='/\\EFI\\Linux\\af06cf44681c41b4a835b1826d936b6e-6.17.1-gentoo-dist.efi')
DEBUG:parser:ParsedEfibootmgrEntry(num='0004', active=True, name='rEFInd Boot Manager', path='', parameters='/\\EFI\\refind\\refind_x64.efi')
Traceback (most recent call last):
  File "/usr/lib/python3.13/site-packages/gi/overrides/__init__.py", line 345, in wrap
    return func(a, b, *user_data)
  File "/usr/share/efiboots/efiboots/window.py", line 288, in sort_by_boot_order
    row2_index = self.boot_order.index(row2.num)
ValueError: '0001' is not in list
Traceback (most recent call last):
  File "/usr/lib/python3.13/site-packages/gi/overrides/__init__.py", line 345, in wrap
    return func(a, b, *user_data)
  File "/usr/share/efiboots/efiboots/window.py", line 287, in sort_by_boot_order
    row1_index = self.boot_order.index(row1.num)
ValueError: '0001' is not in list

But 0001 is in the list.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions