1

Некоторое время назад я решил изменить размер своего раздела EFI. Не спрашивай почему ... С тех пор я больше не могу нормально загружаться. Для изменения размера я использовал gparted и изменил размер раздела на 268MB. После того, как я не смог загрузиться, я безуспешно изменил его обратно на исходные 512 МБ. Я сейчас загружаю свою систему через Super Grub Disk.

У меня есть 2 диска в моей системе. 1 основной GTP-диск (Kingston) и один с MBR (WD) только для данных. Игнорировать MBR один. Вы также увидите USB-накопитель Transcend, на котором находится диск Super Grub.

Моя текущая раскладка для основного диска выглядит следующим образом:

sudo gdisk /dev/sda
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.

Disk /dev/sda: 234441648 sectors, 111.8 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): EA79EA21-C913-462F-9A23-9CD5D1E74496
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 234441614
Partitions will be aligned on 2048-sector boundaries
Total free space is 2925 sectors (1.4 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048         1050623   512.0 MiB   EF00  EFI System Partition
   2         1050624         1550335   244.0 MiB   8300  
   3         1550336       234440703   111.1 GiB   8E00  

Так что у меня явно есть ESP на /dev /sda. Это вывод parted. Чтобы дать вам некоторую информацию о деталях раздела:

(parted) print
\Model: ATA KINGSTON SH103S3 (scsi)
Disk /dev/sda: 120GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name                  Flags
 1      1049kB  538MB  537MB  fat32        EFI System Partition  boot, hidden, esp
 2      538MB   794MB  256MB  ext2
 3      794MB   120GB  119GB                                     lvm

Теперь к проблеме загрузки ... Когда я запускаю свой BIOS, я получаю следующие варианты загрузки: (извините за использование картинок ...) Параметры загрузки

Исходя из того, что тег "UEFI" отсутствует для диска Kingston, я думаю, что Asus не обнаружил этот диск как GPT/EFI. Конечно, так как он присутствует для моей флешки SuperGrubDisk (которая также является GPT с ESP).

В любом случае, при попытке загрузки с диска, у меня черный экран. Это заставляет меня предположить, что он пытается загрузиться с MBR, в котором нет ничего полезного.

Поэтому, когда я запускаю диск Super Grub, я получаю следующие параметры:Варианты Grub Похоже, что ESP прямо на HD1, GPT1, как и ожидалось, и отлично загружается.

Я уже прошил последнюю версию прошивки в надежде решить это. Моим последним средством является резервное копирование данных и полная переустановка, но сначала я хочу попытаться решить эту проблему правильно.

1 ответ1

5

Сначала несколько ключевых моментов о загрузке в EFI-режиме:

  • Микропрограмма EFI включает в себя менеджер загрузки, который поддерживает список загрузочных файлов и устройств в NVRAM, а также список приоритетов того, что должно быть загружено в первую очередь.
  • Загрузчики EFI, установленные ОС, - это файлы, хранящиеся в ESP. Таким образом, вы не "загружаете диск" или "загружаете раздел", как в BIOS; Вы загружаете файл.
  • Частичное исключение из вышеперечисленного: существует специальное запасное имя файла (EFI/BOOT/bootx64.efi для систем x86-64), которое можно запустить, если никакая другая запись недействительна. Это имя файла изначально предназначалось для использования на установочном носителе (компакт-диски, USB-устройства флэш-памяти и т.д.), Но также может использоваться на ESP на жестких дисках.
  • Многие (но не все) EFI автоматически удаляют загрузочные записи из встроенных менеджеров загрузки, когда обнаруживают, что записи больше не действительны.
  • По моему опыту, изменение размера разделов FAT ненадежно и иногда приводит к тому, что файловая система становится нечитаемой для некоторых или всех ОС. (Для целей данного пункта EFI является ОС.)
  • Даже если изменение размера прошло успешно, это может изменить значение GUID раздела, которое используется как часть пути к загрузчику в конфигурации менеджера загрузки EFI.

Собирая все вышеперечисленное вместе, я подозреваю, что когда вы изменили размер ESP, вы сделали загрузчик Ubuntu недоступным для прошивки, который затем удалил его из встроенного менеджера загрузки. Изменение размера раздела до его первоначального размера могло или не могло решить проблему доступа, но даже если файловая система теперь доступна, с отсутствующей загрузочной записью на основе NVRAM вы больше не можете загружать загрузчик - по крайней мере, не без прыжков через некоторые дополнительные обручи, как, например, с использованием Super GRUB Disk.

В качестве первого шага к решению вашей проблемы, я рекомендую вам запустить dosfsck (или другой аналогичный инструмент из другой ОС) на ESP. Это должно исправить любые проблемы с файловой системой.

После этого вам нужно создать новую запись NVRAM для загрузочной записи. Наименее навязчивый способ сделать это - использовать efibootmgr из Linux, bcfg из оболочки EFI, EasyUEFI или bcdedit из Windows, или какой-либо подобный инструмент. Поскольку вы можете загружаться в Ubuntu сейчас, следующая команда должна сделать свое дело:

efibootmgr -c -d /dev/sda -p 1 -l \\EFI\\ubuntu\\shimx64.efi -L ubuntu

Если вы загружаетесь с отключенной безопасной загрузкой, вы можете изменить shimx64.efi на grubx64.efi ; однако shimx64.efi должен работать с включенной безопасной загрузкой или без нее, поэтому лучше использовать ее, если она не работает. Обратите также внимание на двойную обратную косую черту (\\) в качестве разделителей каталогов; EFI использует обратную косую черту в стиле DOS/Windows (\), а не косую черту в стиле Unix/Linux (/) в качестве разделителей каталогов, а обратная косая черта должна быть удвоена или заключена в кавычки в Bash, поскольку они используются в качестве escape-символов в Bash. (Я слышал, что последние версии efibootmgr могут преобразовывать косые черты в обратную косую черту, но я не знаю версию, в которой появилось это изменение, поэтому безопаснее всего использовать двойную обратную косую черту.)

Предупреждение: если ваш диск Super GRUB загружается в BIOS/CSM/ устаревшем режиме, efibootmgr не будет работать. Если это так, вам нужно будет сделать это с помощью аварийного диска Linux, загруженного в режиме EFI/ UEFI. В качестве альтернативы вы можете использовать мой загрузочный менеджер rEFInd на флэш-диске USB или CD-R для загрузки Ubuntu в режиме EFI, а затем использовать efibootmgr для повторной активации GRUB.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .