Установка Arch Linux исчезла из systemd-boot.

Вопрос или проблема

Я действительно потерян в догадках о том, что произошло. Я загрузил Arch Linux, как обычно, но вместо приветствия с параметром загрузки для Arch, единственным вариантом была “Перезагрузка в интерфейс прошивки”.

Соответствующий вывод для lsblk:

sda      8:0    0 476.9G  0 disk 
├─sda1   8:1    0   512M  0 part /boot/efi  # ubuntu boot
├─sda2   8:2    0   175G  0 part /          # ubuntu root
├─sda3   8:3    0     1G  0 part            # что предполагалось как arch boot
└─sda4   8:4    0 300.4G  0 part            # что предполагалось как arch root

Через Ubuntu я могу получить доступ к файловой системе Arch с помощью sudo mount /dev/sda4 /mnt && sudo arch-chroot /mnt.

Оттуда ls /boot дает мне: initramfs-linux-fallback.img initramfs-linux.img vmlinuz-linux. Монтирование /dev/sda3 в /boot изнутри arch-chroot дает мне вывод tree:

/boot
├── EFI
│   ├── BOOT
│   │   └── BOOTX64.EFI
│   ├── Linux
│   └── systemd
│       └── systemd-bootx64.efi
├── intel-ucode.img
└── loader
    ├── entries
    │   ├── 2024-02-27_21-57-25_linux.conf
    │   └── 2024-02-27_21-57-25_linux-fallback.conf
    ├── entries.srel
    ├── keys
    ├── loader.conf
    └── random-seed

Содержимое /etc/fstab в arch-chroot следующее:

# Статическая информация о файловых системах.
# Подробности смотрите в fstab(5).

# <file system> <dir> <type> <options> <dump> <pass>
# /dev/sda4
UUID=e9c55d72-b37f-4fe0-bbc5-ea661dd7aa20   /           ext4        rw,relatime 0 1

# /dev/sda3
UUID=8D39-7378          /boot       vfat        rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro   0 2

Я не уверен, как поступить дальше.

Я это исправил!

Вот что я сделал (из Ubuntu):

~$ sudo mount /dev/sda4 /mnt
~$ sudo arch-chroot /mnt
/# mount /dev/sda3 /boot
/# mkinitcpio -p linux
/# umount /boot
exit
~$ sudo umount /mnt

Я пробовал mkinitcpio -p linux ранее, но забыл примонтировать /dev/sda3 в /boot. Похоже, это и сыграло решающую роль.

Удачи всем, кто столкнется с той же таинственной проблемой в будущем!

Ответ или решение

Теория

Исчезновение загрузочной записи Arch Linux из systemd-boot может быть вызвано рядом факторов, таких как неправильная конфигурация fstab, ошибка при обновлении компонентов или даже случайное удаление нужных файлов. Расскажем, как правильно проверить и исправить данную проблему, возвращая возможность загрузки в Arch Linux через systemd-boot.

Система загрузки, подобная systemd-boot, зависит от правильной конфигурации загрузчика и соответствующих файлов, чтобы корректно инициировать запуск операционной системы. Эти файлы обычно хранятся в разделе, отмеченном как /boot. Для Linux также важно наличие актуальных initramfs и ядра для успешно проведенной загрузки.

Пример

В вашем случае мы можем наблюдать, что Arch Linux присутствует в файловой системе, однако она не загружается из-за проблем с загрузочным разделом. При монтировании разделов и просмотре содержимого /boot стало ясно, что файлы initramfs и ядро находятся на своих местах, но загрузочная конфигурация systemd-boot не выполняет свою задачу. Это может быть связано с тем, что корень загрузочной записи не был корректно обновлен или отсутствуют необходимые файлы конфигурации.

Применение

  1. Проверка и монтирование файловой системы:

    Чтобы убедиться, что данные файла fstab верны, необходимо проверить, что все UUID соответствуют актуальным значениям ваших разделов. Убедитесь, что раздел /boot правильно смонтирован в Arch Linux, чтобы обеспечить доступность необходимых компонентов.

    sudo mount /dev/sda4 /mnt
    sudo arch-chroot /mnt
    mount /dev/sda3 /boot

    Этот процесс позволит получить доступ к файловой системе Arch Linux для дальнейшей диагностики и исправления.

  2. Обновление initramfs:

    Даже если были незначительные изменения в системе, использование команды mkinitcpio может восстановить работоспособность загрузочного процесса. Команда mkinitcpio -p linux деделает новую образ initramfs, необходимый для процесса загрузки.

    mkinitcpio -p linux

    Вам необходимо выполнить эту команду в среде arch-chroot, при этом предварительно смонтировав раздел /boot, чтобы правильно сбрасывать и обновлять образы initramfs.

  3. Проверка и настройка systemd-boot:

    Убедитесь, что все необходимые файлы конфигурации systemd-boot есть и правильно настроены. Если все остальные шаги не помогли, возможной причиной может быть повреждение конфигурации loader.conf или файлов в директории loader/entries.

    Проверьте содержимое /boot/EFI/systemd и наличие всех нужных EFI файлов. Если они отсутствуют, попробуйте переустановить systemd-boot:

    bootctl install

    Убедитесь, что в файле loader.conf содержатся корректные пути и настройки для загрузки Arch Linux.

  4. Финальные шаги:

    После выполнения всех вышеперечисленных рекомендаций, выйдите из среды chroot и размонтируйте все ранее смонтированные файловые системы:

    umount /boot
    exit
    sudo umount /mnt

    Перезагрузка системы теперь должна показать Arch Linux в меню загрузчика systemd-boot.

Проблемы загрузки могут быть неочевидными и часто требуют тщательных шагов диагностики для выявления и решения, как это было показано в ваших действиях. Always remember, maintaining a backup and clear documentation of system changes could help mitigate such issues in the future.

Оцените материал
Добавить комментарий

Капча загружается...