Версия пакета: systemd-260.4-alt2 --- На EFI-системе с GRUB команда `bootctl status` выводит сведения о загрузке, но завершается с кодом 1, если на EFI System Partition (ESP) отсутствует `loader/random-seed`. В секции Random Seed выводится `Exists: no`, без сообщения об ошибке доступа к этому файлу. Это регрессия относительно `systemd-257.9-alt1` из p11: при таком же отсутствии файла команда возвращает 0. `loader/random-seed` на ESP используется механизмом передачи случайных данных загрузчика systemd-boot. На исследованных системах используется GRUB, а systemd-boot не установлен, поэтому отсутствие этого файла штатно. --- Шаги воспроизведения: # rpm -q systemd # test -d /sys/firmware/efi && echo 'EFI boot' # findmnt /boot/efi # stat /boot/efi/loader/random-seed # LC_ALL=C SYSTEMD_COLORS=0 bootctl --no-pager status # printf 'exit status: %s\n' "$?" --- Фактический результат: Random Seed: System Token: not set Exists: no ... Boot Loader Entry Locations: ESP: /boot/efi (..., $BOOT) config: /boot/efi//loader/loader.conf: No such file or directory token: altlinux 0 entries, no entry could be determined as default. exit status: 1 --- Поведение вызвано коммитом https://github.com/systemd/systemd/commit/f90efd2d13aac38417b2e0e08068fc0fba2da72a. В src/bootctl/bootctl-status.c, verb_status(), строки 590–594: ``` r = access(p, F_OK); if (r < 0 && errno != ENOENT) printf(" Exists: Can't access %s (%m)\n", p); else printf(" Exists: %s\n", yes_no(r >= 0)); ``` Переменная r используется для итогового результата команды. При отсутствии файла access() возвращает -1 с errno=ENOENT. Ошибка считается обычным отсутствием файла при формировании вывода, но отрицательное значение остаётся в r. Последующие вызовы через RET_GATHER сохраняют уже отрицательный результат; в строке 621 функция возвращает r.
Я не знаю зачем запускать bootctl на системах с grub. Все равно ничего полезного он не покажет.