Загрузка данных


Да. В `grub>` больше ничего не вводим. Всё восстановление делаем из Live USB и повторно входим в `chroot`.

Наиболее вероятно, что при прошлой попытке настоящий раздел `/boot` не был смонтирован, поэтому BLS-файл создался в пустом каталоге `/boot` корневой системы, а не на загрузочном разделе. Fedora читает BLS-записи из `loader/entries` относительно загрузочной файловой системы GRUB. ([fedoraproject.org][1])

## 1. Загрузитесь с флешки

В Boot Menu выберите вариант:

```text
UEFI: название флешки
```

Запустите Live Fedora, но не установщик. Откройте терминал:

```bash
sudo -i
```

Проверьте UEFI:

```bash
[ -d /sys/firmware/efi ] && echo "UEFI OK" || echo "Загружено в Legacy"
```

Должно быть `UEFI OK`. Fedora должна ремонтироваться в том же режиме UEFI, в котором была установлена. ([docs.fedoraproject.org][2])

## 2. Найдите и смонтируйте корневую Fedora

```bash
lsblk -f
```

Найдите устройство по уже известному UUID:

```bash
ROOT=$(findfs UUID=b6776460-1449-44dd-9ef5-daf8a04dc889)
echo "$ROOT"
```

Создайте точку монтирования:

```bash
mkdir -p /mnt/fedora
mount -o subvol=root "$ROOT" /mnt/fedora
```

Проверка:

```bash
cat /mnt/fedora/etc/fedora-release
ls /mnt/fedora/etc /mnt/fedora/usr /mnt/fedora/var
```

Если `mount -o subvol=root` сообщит об ошибке, остановитесь и покажите её — не подбирайте другие подтома наугад.

## 3. Сначала определите правильную схему `/boot`

Пока не входите в `chroot`. Выполните:

```bash
cat /mnt/fedora/etc/fstab
```

И отдельно:

```bash
grep -vE '^[[:space:]]*(#|$)' /mnt/fedora/etc/fstab
```

Нас особенно интересуют строки с:

```text
/
/boot
/boot/efi
```

Проверьте, где в `fstab` указан известный FAT32-раздел:

```bash
grep -iE '03C7-F581|/boot' /mnt/fedora/etc/fstab
```

### Если UUID `03C7-F581` назначен точке `/boot`

Выполните:

```bash
mount UUID=03C7-F581 /mnt/fedora/boot
```

Проверка:

```bash
ls -la /mnt/fedora/boot
```

Там должны находиться хотя бы некоторые из этих элементов:

```text
vmlinuz-6.17.1-300.fc43.x86_64
initramfs-6.17.1-300.fc43.x86_64.img
grub2
loader
EFI
```

### Если UUID `03C7-F581` назначен точке `/boot/efi`

Выполните:

```bash
mkdir -p /mnt/fedora/boot/efi
mount UUID=03C7-F581 /mnt/fedora/boot/efi
```

Проверьте:

```bash
ls -la /mnt/fedora/boot
ls -la /mnt/fedora/boot/efi/EFI/fedora
```

Не продолжайте, пока расположение раздела не будет совпадать с `/etc/fstab`.

## 4. Подготовьте `chroot`

```bash
for dir in dev proc sys run; do
    mount --rbind "/$dir" "/mnt/fedora/$dir"
    mount --make-rslave "/mnt/fedora/$dir"
done
```

Войдите в систему:

```bash
chroot /mnt/fedora /bin/bash
```

Проверьте:

```bash
source /etc/os-release
echo "$PRETTY_NAME"
```

Fedora rescue-среда официально предназначена для подключения установленной системы и входа в неё через `chroot`. ([docs.fedoraproject.org][3])

## 5. Убедитесь, что открыт настоящий `/boot`

Внутри `chroot`:

```bash
findmnt /boot
findmnt /boot/efi 2>/dev/null
df -hT /boot
```

Затем:

```bash
ls -lah /boot
ls -lah /boot/loader
ls -lah /boot/loader/entries
ls -lah /boot/grub2
```

Проверьте ядро:

```bash
KVER=6.17.1-300.fc43.x86_64

test -f "/boot/vmlinuz-$KVER" && echo "Ядро найдено"
test -f "/boot/initramfs-$KVER.img" && echo "initramfs найден"
```

Обе проверки должны быть успешны.

## 6. Сделайте резервную копию загрузочной конфигурации

```bash
BACKUP="/root/boot-backup-$(date +%F-%H%M%S)"
mkdir -p "$BACKUP"

cp -a /boot/loader "$BACKUP/" 2>/dev/null || true
cp -a /boot/grub2 "$BACKUP/" 2>/dev/null || true
```

Найдите EFI-конфигурацию:

```bash
EFI_CFG=$(find /boot -path '*/EFI/fedora/grub.cfg' -print -quit)
echo "$EFI_CFG"
```

Если путь найден:

```bash
cp -a "$EFI_CFG" "$BACKUP/efi-grub.cfg"
```

## 7. Создайте BLS-запись на настоящем `/boot`

Удалять другие файлы не нужно.

```bash
mkdir -p /boot/loader/entries

MID=$(cat /etc/machine-id)
ENTRY="/boot/loader/entries/${MID}-${KVER}.conf"

cat > "$ENTRY" <<EOF
title Fedora Linux ($KVER)
version $KVER
linux /vmlinuz-$KVER
initrd /initramfs-$KVER.img
options root=UUID=b6776460-1449-44dd-9ef5-daf8a04dc889 ro rootflags=subvol=root
grub_users \$grub_users
grub_arg --unrestricted
grub_class fedora
EOF
```

Проверьте результат:

```bash
cat "$ENTRY"
```

И убедитесь, что файлы, указанные в записи, существуют:

```bash
ls -lh "/boot/vmlinuz-$KVER" "/boot/initramfs-$KVER.img"
```

Такой формат соответствует BLS-записям Fedora: пути `linux` и `initrd` задаются относительно загрузочной файловой системы. ([fedoraproject.org][1])

## 8. Уберите возможное неверное перенаправление `blsdir`

Сначала посмотрите содержимое окружения GRUB:

```bash
grub2-editenv /boot/grub2/grubenv list 2>/dev/null
```

Если присутствует строка, начинающаяся с:

```text
blsdir=
```

сбросьте только её:

```bash
grub2-editenv /boot/grub2/grubenv unset blsdir
```

Без переменной `blsdir` Fedora ищет записи в стандартном каталоге `loader/entries` относительно `$boot`. ([fedoraproject.org][1])

## 9. Включите BLS и пересоздайте основной `grub.cfg`

```bash
if grep -q '^GRUB_ENABLE_BLSCFG=' /etc/default/grub; then
    sed -i 's/^GRUB_ENABLE_BLSCFG=.*/GRUB_ENABLE_BLSCFG=true/' /etc/default/grub
else
    echo 'GRUB_ENABLE_BLSCFG=true' >> /etc/default/grub
fi
```

Создайте главный конфигурационный файл:

```bash
grub2-mkconfig -o /boot/grub2/grub.cfg
```

Проверьте:

```bash
grep -n blscfg /boot/grub2/grub.cfg
ls -lah /boot/loader/entries
```

На современных Fedora основной конфигурацией является `/boot/grub2/grub.cfg`; EFI-файл Fedora служит небольшим перенаправляющим конфигом. ([fedoraproject.org][4])

## 10. Исправьте маленький EFI-конфиг только после проверки схемы

Посмотрите:

```bash
echo "EFI config: $EFI_CFG"
cat "$EFI_CFG"
```

### Когда `/boot` — отдельный раздел

Это подтверждается отдельной строкой `/boot` в `/etc/fstab`. Получите его UUID:

```bash
BOOTDEV=$(findmnt -nro SOURCE /boot)
BOOTUUID=$(blkid -s UUID -o value "$BOOTDEV")

echo "$BOOTDEV"
echo "$BOOTUUID"
```

Он, вероятно, окажется:

```text
03C7-F581
```

Пересоздайте перенаправляющий файл:

```bash
cat > "$EFI_CFG" <<EOF
search --no-floppy --fs-uuid --set=dev $BOOTUUID
set prefix=(\$dev)/grub2
export \$prefix
configfile \$prefix/grub.cfg
EOF
```

Проверка:

```bash
cat "$EFI_CFG"
```

### Когда отдельного `/boot` нет, а отдельным является только `/boot/efi`

Оставьте EFI-конфиг в таком виде:

```bash
cat > "$EFI_CFG" <<'EOF'
search --no-floppy --root-dev-only --fs-uuid --set=dev b6776460-1449-44dd-9ef5-daf8a04dc889
set prefix=($dev)/boot/grub2
export $prefix
configfile $prefix/grub.cfg
EOF
```

Главное различие:

```text
Отдельный /boot:     UUID раздела /boot + /grub2
/boot внутри root:   UUID корня + /boot/grub2
```

## 11. Финальная проверка

```bash
test -s /boot/grub2/grub.cfg && echo "Основной grub.cfg существует"
test -s "$ENTRY" && echo "BLS-запись существует"
test -s "/boot/vmlinuz-$KVER" && echo "Ядро существует"
test -s "/boot/initramfs-$KVER.img" && echo "initramfs существует"
test -s "$EFI_CFG" && echo "EFI grub.cfg существует"
```

Дополнительно:

```bash
grep -E '^(title|linux|initrd|options)' "$ENTRY"
grep -n blscfg /boot/grub2/grub.cfg
```

## 12. Выход и перезагрузка

```bash
sync
exit
```

Теперь вы снова в Live-среде:

```bash
umount -R /mnt/fedora
reboot
```

Извлеките флешку после начала перезагрузки.

Не выполняйте:

```text
grub2-install
mkfs
wipefs
fdisk
parted
dnf reinstall
```

EFI-программы у вас уже запускаются; восстанавливаются только правильное монтирование `/boot`, BLS-запись и цепочка к `/boot/grub2/grub.cfg`. На UEFI-системах Fedora отдельно предупреждает не применять `grub2-install`. ([fedoraproject.org][4])

[1]: https://fedoraproject.org/wiki/Changes/BootLoaderSpecByDefault?utm_source=chatgpt.com "Changes/BootLoaderSpecByDefault - Fedora Project Wiki"
[2]: https://docs.fedoraproject.org/ka/fedora/f34/install-guide/install/Booting_the_Installation/?utm_source=chatgpt.com "Booting the Installation :: Fedora Docs"
[3]: https://docs.fedoraproject.org/kab/fedora/f32/install-guide/advanced/Boot_Options/?utm_source=chatgpt.com "Boot Options :: Fedora Docs"
[4]: https://fedoraproject.org/wiki/GRUB_2?utm_source=chatgpt.com "GRUB 2 - Fedora Project Wiki"