Привет.
Для каждого ядра отдельно для каждого соответствующего ему образа создаётся директория в $ESP/EFI – и загрузочные переменные создаются в соответствии с этой структурой.
$ESP/EFI/ ├── [root 4.0K] kfxlaptop-linux │ ├── [root 9.1M] initramfs.img │ └── [root 4.2M] vmlinuz └── [root 4.0K] kfxlaptop-linux-fallback ├── [root 19M] initramfs.img └── [root 4.3M] vmlinuz
– одно и то же ядро, разные образы. initramfs задаётся в initrd=
в парамметрах ядра, а само ядро в --loader
в парамметрах efibootmgr‐а.
И это работает. И это было бы лишнией информацией, если бы у меня не получилось воспроизвести описанную в $subj‐е ситуацию. Собственно, в чём разница?
Если раньше загрузочная переменная создавалась так:
exec efibootmgr \
-l '/EFI/@LABEL@/vmlinuz' \
"initrd=/EFI/@LABEL@/initramfs.img"
То теперь так:
exec efibootmgr \
-l '/vmlinuz-@PRESET@' \
"initrd=/initramfs-@PRESET@.img"
И вот второй вариант как раз проблемный: он работает только для обычного initramfs, но не fallback. В первом ничего такого нет.
Ошибок никаких нет. Картина efibootmgr
до перезагрузки выглядит так:
Boot0000* kfxlaptop-kalterfx Boot0005 kfxlaptop-linux Boot0006* kfxlaptop-kalterfx-fallback Boot0007 kfxlaptop-linux-fallback
А после перезагрузки Boot0006 и Boot007 исчезают.