Вопрос или проблема
Я действительно потерян в догадках о том, что произошло. Я загрузил 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 не выполняет свою задачу. Это может быть связано с тем, что корень загрузочной записи не был корректно обновлен или отсутствуют необходимые файлы конфигурации.
Применение
-
Проверка и монтирование файловой системы:
Чтобы убедиться, что данные файла fstab верны, необходимо проверить, что все UUID соответствуют актуальным значениям ваших разделов. Убедитесь, что раздел /boot правильно смонтирован в Arch Linux, чтобы обеспечить доступность необходимых компонентов.
sudo mount /dev/sda4 /mnt sudo arch-chroot /mnt mount /dev/sda3 /boot
Этот процесс позволит получить доступ к файловой системе Arch Linux для дальнейшей диагностики и исправления.
-
Обновление initramfs:
Даже если были незначительные изменения в системе, использование команды mkinitcpio может восстановить работоспособность загрузочного процесса. Команда
mkinitcpio -p linux
деделает новую образ initramfs, необходимый для процесса загрузки.mkinitcpio -p linux
Вам необходимо выполнить эту команду в среде
arch-chroot
, при этом предварительно смонтировав раздел /boot, чтобы правильно сбрасывать и обновлять образы initramfs. -
Проверка и настройка systemd-boot:
Убедитесь, что все необходимые файлы конфигурации systemd-boot есть и правильно настроены. Если все остальные шаги не помогли, возможной причиной может быть повреждение конфигурации loader.conf или файлов в директории loader/entries.
Проверьте содержимое /boot/EFI/systemd и наличие всех нужных EFI файлов. Если они отсутствуют, попробуйте переустановить systemd-boot:
bootctl install
Убедитесь, что в файле loader.conf содержатся корректные пути и настройки для загрузки Arch Linux.
-
Финальные шаги:
После выполнения всех вышеперечисленных рекомендаций, выйдите из среды 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.