Есть компьютер, на котором установлены Ubuntu и Parrot Security OS. Все в порядке, и он работает без проблем с Grub. Он может правильно загрузиться.
Когда мы устанавливали Ubuntu, мы отформатировали все HDD и забыли установить EFI. Когда мы попытались установить rEFInd, он показал, что EFI полностью отсутствует на компьютере.
Вопрос в следующем: как мы можем установить EFI после того, как мы установили все операционные системы. Мне нужно переустановить Ubuntu снова, чтобы получить его?
решение1
Конечно, это возможно, но вопрос в том, будет ли это менее хлопотно.
ЭСПэто просто небольшой раздел (512 Мб — хороший размер) с большой файловой системой и специальным типом.
Поскольку вам нужно его создать, вам необходимо иметь для него свободное место, а для этого вам, возможно, придется изменить размер одного из разделов.и файловая система на немс помощью такого инструмента, как
gparted
.Если у вас уже есть необходимое пространство, то вам нужно создать новый раздел с соответствующим типом. В
gparted
вы ищете "esp flag", который будет "EFI System" типомfdisk
(или что-то похожее, если вы работаете на MBR). Это то, что делает раздел EFI разделом EFI.Создайте файловую систему с помощью
mkfs.fat -F32 /dev/sdx
Получить UUID раздела с помощью
blkid
, установить его метку или что-то подобноеСоздайте новую запись в /etc/fstab для нового раздела следующим образом (и убедитесь, что точка монтирования существует):
UUID=xxxx-xxxx /boot/efi vfat defaults 0 2
В качестве альтернативы вы можете использовать /efi или, возможно, привязать монтирование к /boot, чтобы избежать пути /efi/EFI
- Установите rEFInd или GRUB для EFI на этот раздел. Вам может понадобиться создать каталог /EFI на этом разделе
Этотдолжендать вам работающий ESP.
Вы можете прочитать больше и лучше на:https://wiki.archlinux.org/index.php/EFI_system_partition#Создать_раздел
решение2
Я однажды сделал что-то похожее. Я не записал точные шаги, но это было не так уж и сложно исправить. (Мне также понадобился rEFInd, но это должно работать и без него.) Это было примерно так:
- «Правильно» установите ту же версию Ubuntu на временный диск, отформатированный в формате GPT, или виртуальную машину, настроенную как система UEFI с виртуальным диском GPT, в качестве «донорской» фиктивной ОС.
- Если ваша основная ОС была обновлена после установки, то также обновите фиктивную установку.
- Завершите работу фиктивной ОС.
- Используя загрузочный носитель для восстановления или другую загружаемую ОС, скопируйте раздел EFI с фиктивной машины на свою настоящую машину.
- Для этого можно использовать загрузочный DVD-диск Ubuntu, так как он поставляется с GParted.
- Если вы делаете это через VM, загрузите VM в ISO-образ для восстановления или установочный ISO-файл Ubuntu, смонтированный как виртуальный диск. Обратите внимание, что вы также можете смонтировать свой реальный диск ОС в VM как сырой VMDK (если вы используете VirtualBox, вам нужно будет использовать
vboxmanage
CLI для его создания, и не забывайте, что сопоставление недействительно при перезагрузках ОС хоста). Это позволит вам напрямую скопировать ваш «фиктивный» раздел EFI непосредственно на ваш реальный диск, что является реальной экономией времени, если вы делаете это в VM. (Вы даже можете загрузить свою реальную ОС в VM таким образом. Linux достаточно умен, чтобы не загружать драйверы для оборудования, которое временно не существует, даже проприетарные драйверы дисплея. Ядро уже имеет — и будет автоматически загружать — базовые драйверы с открытым исходным кодом для интеграции VirtualBox и VMware. На самом деле, я обычно устанавливаю Ubuntu на реальные диски таким образом, для последующей пересадки на другие машины, все через VM.)
- Перед копированием раздела EFI освободите место для него в качестве первого раздела, сначала уменьшив и/или переместив существующий раздел в сторону. (Это легко сделать с помощью GParted.) Новый раздел EFI не будет sda1 (как это было бы при правильной установке в первый раз), но, если я правильно помню, EFI, Grub, rEFInd и т. д. с этим справятся.
- Сопоставьте раздел с /boot/efi в установочном файле /etc/fstab.
- Теперь у вас есть два варианта получения загрузочной системы (опять же, вы можете сделать это на «голом железе» или через виртуальную машину с реальным диском, сопоставленным с помощью VMDK):
- Используйте инструмент для ремонта багажника, такой какРемонт багажникачтобы перевести все в состояние загрузки, обычно просто нажав одну кнопку.
- Обратите внимание, что запускать Boot Repair необходимо из ОС в режиме UEFI, независимо от того, работает ли она на «голом железе» или в режиме виртуальной машины.
- rEFInd также должен уметь работать с этой конфигурацией. Но если нет, и вам действительно нужен rEFInd, вам может потребоваться сначала выполнить предыдущий шаг.
- Используйте инструмент для ремонта багажника, такой какРемонт багажникачтобы перевести все в состояние загрузки, обычно просто нажав одну кнопку.
- Если вы хотите пропустить Grub и перейти на «чистый EFI», то и это можно обойти, но это выходит за рамки этого ответа (и моей памяти).
Мне любопытно, почему вы хотите использовать rEFInd? Это удивительный кусок кода, и он практически необходим для навигации по двойной или тройной загрузке с MacOS, но если это просто двойная загрузка с Linux/Windows, я часто обнаруживал, что Grub проще, хотя и уродливее. С ним меньше возни. Кроме того, rEFInd не «установил и забыл», он иногда перезаписывается и требует переустановки, что может быть небольшой проблемой, потому что типичные навыки системного администратора *nix/Windows не соответствуют rEFInd, и это происходит достаточно редко, так что вы обнаруживаете себя заново ищущим, как это сделать каждый раз. (Или запишите это и затем попытайтесь вспомнить, где эта заметка.) Кроме того, он иногда «полезно» создает значки для определенных версий ядра, которые, как правило, быстро становятся неактуальными. Я считаю, что есть задокументированный способ предотвратить такое поведение или, по крайней мере, удалить их постфактум, но я перестал им пользоваться, поэтому не помню. Но это всего лишь мой опыт.
Удачи!