ArchLinux предоставляет 2 варианта загрузки: "нормальный" и "резервный". Оба варианта загружают одно и то же ядро, но разные начальные RAM-диски. Однако я не могу создать соответствующие пункты меню в меню загрузки UEFI. Я добавляю пункты меню следующим скриптом.

#!/bin/python
import subprocess
import sys

def insert_menu_entry(label, initrd_rel, params):
    disk = "/dev/disk/by-id/ata-TS128GSSD370S_C698244747"
    command = ["efibootmgr", "--verbose", "--create",
        "--disk", disk,
        "--part", "2",
        "--loader", "\\EFI\\arch\\vmlinuz-linux",
        "--label", label,
        "--unicode", "initrd=\\EFI\\arch\\" + initrd_rel + " root=" + disk + "-part3 rw " + params]
    if not (subprocess.run(command).returncode == 0):
        sys.exit(20)

insert_menu_entry("Arch Linux SSD Fallback", "initramfs-linux-fallback.img", "nopat fbcon=map:0")
insert_menu_entry("Arch Linux SSD", "initramfs-linux.img", "fbcon=map:10")

Я вижу эти пункты меню с помощью efibootmgr --verbose следующим образом.

BootCurrent: 0002
Timeout: 1 seconds
BootOrder: 0002,0000,0001,0007,0005
Boot0000* Arch Linux SSD Fallback   HD(2,GPT,de5f4687-886d-4a95-a79b-d08ebc6a4fd8,0x80000,0x80000)/File(\EFI\arch\vmlinuz-linux)i.n.i.t.r.d.=.\.E.F.I.\.a.r.c.h.\.i.n.i.t.r.a.m.f.s.-.l.i.n.u.x.-.f.a.l.l.b.a.c.k...i.m.g. .r.o.o.t.=./.d.e.v./.d.i.s.k./.b.y.-.i.d./.a.t.a.-.T.S.1.2.8.G.S.S.D.3.7.0.S._.C.6.9.8.2.4.4.7.4.7.-.p.a.r.t.3. .r.w. .n.o.p.a.t. .f.b.c.o.n.=.m.a.p.:.0.
Boot0001* Linux Boot Manager    HD(2,GPT,de5f4687-886d-4a95-a79b-d08ebc6a4fd8,0x80000,0x80000)/File(\EFI\SYSTEMD\SYSTEMD-BOOTX64.EFI)
Boot0002* Arch Linux SSD    HD(2,GPT,de5f4687-886d-4a95-a79b-d08ebc6a4fd8,0x80000,0x80000)/File(\EFI\arch\vmlinuz-linux)i.n.i.t.r.d.=.\.E.F.I.\.a.r.c.h.\.i.n.i.t.r.a.m.f.s.-.l.i.n.u.x...i.m.g. .r.o.o.t.=./.d.e.v./.d.i.s.k./.b.y.-.i.d./.a.t.a.-.T.S.1.2.8.G.S.S.D.3.7.0.S._.C.6.9.8.2.4.4.7.4.7.-.p.a.r.t.3. .r.w. .f.b.c.o.n.=.m.a.p.:.1.0.
Boot0005  Hard Drive    BBS(HD,,0x0)/VenHw(5ce8128b-2cec-40f0-8372-80640e3dc858,0200)..GO..NO..........T.S.1.2.8.G.S.S.D.3.7.0.S...................\.,.@.r.d.=.X..........A.................................>..Gd-.;.A..MQ..L.6.C.8.9.4.2.7.4.7.4. . . . . . . . . . ........BO..NO..........S.A.M.S.U.N.G. .H.D.2.0.4.U.I...................\.,.@.r.d.=.X..........A.................................>..Gd-.;.A..MQ..L.2.S.7.H.D.J.B.2.2.2.0.8.1.9. . . . . . ........BO
Boot0007* UEFI OS   HD(2,GPT,de5f4687-886d-4a95-a79b-d08ebc6a4fd8,0x80000,0x80000)/File(\EFI\BOOT\BOOTX64.EFI)..BO

Но один из этих пунктов меню исчезает после перезагрузки. Пункт меню для «systemd-boot» не исчезает. Я полагаю, что прошивка материнской платы удаляет пункт меню, потому что загрузчики идентичны. Материнская плата MSI B450-A Pro.

Это нормальное поведение материнских плат UEFI или просто каприз этой материнской платы? Как я могу добавить эти пункты меню без установки дополнительных загрузчиков, таких как «systemd-boot»? Они добавляют сложности в меню загрузки.

0