Существует ли собственный UEFI-диск / менеджер разделов?

2

UEFI имеет инфраструктуру для поддержки сложных приложений во время загрузки. Одной из самых неотложных задач на данный момент является приложение UEFI для управления дисками GPT.

Большая часть управления разделами не может быть осуществлена ​​ОС из-за того, как она связана с файлами на диске. Менеджер загрузки UEFI, который может существовать в ESP, будет иметь только одно требование, чтобы ESP не удалялся.

Кроме того, хранение его непосредственно в ESP является наиболее удобным способом решения проблем с дисками и разделами, в отличие от наличия загрузочного диска. Фактически, наличие двух отдельных жестких дисков со своими собственными ESP и одинаковыми копиями diskmgmt.efi(давайте назовем это так) сделает компьютер полностью гибким.

Есть ли такие проекты / продукты?

Milind R
источник

Ответы:

3

Он узкоспециализированный и ограниченный, но gptsyncработает как приложение EFI. Эта программа изначально была частью заброшенного проекта REFIt. Я обновил его для ссылки, хотя. Обратите внимание, что gptsyncон используется исключительно для создания гибридных MBR, которые уродливы, опасны и имеют ограниченную полезность, поэтому я не рекомендую gptsyncдля общего использования; но для определенных специализированных случаев использования (таких как двойная загрузка Windows и OS X на Mac), это может быть полезным инструментом.

MariusMatutiae предложила использовать my gdisk, но она не доступна в качестве нативного приложения EFI. Это, вероятно, не будет в ближайшем будущем, потому что gdiskнаписано на C ++, и я не знаю доступного компилятора C ++ для EFI. Большинство приложений EFI написаны на C, и можно создавать приложения C под Linux с помощью GCC и наборов инструментов GNU-EFI или Tianocore. C ++ теоретически может быть скомпилирован для EFI с GCC, но большая часть библиотеки C ++ не поддерживается и в gdiskзначительной степени опирается на библиотеку C ++. Есть компилятор Intel C ++ для EFI, но он смехотворно дорогой (примерно 1000 долларов США, IIRC), поэтому я не собираюсь его покупать. Если бы кто-нибудь, имеющий доступ к этому компилятору, попытался бы построить gdiskдля EFI, я был бы рад помочь или принять патчи, но на данный момент это победило.

Более простым решением может быть порт partedили fdiskEFI. (До недавнего времени fdiskне поддерживал GPT; но последние версии поддерживают.) Однако я не рассматривал эту возможность.

На данный момент создание разделов можно выполнить, загрузив флэш-накопитель CD / DVD / USB. Конечно, это не так быстро , как запуск инструмента разбиения из оболочки EFI или менеджер загрузки EFI, но это не так, что медленно вставать и бежать. Разбиение диска - это задача, которую не нужно выполнять очень часто, за исключением, возможно, лабораторной работы, в которой проводится тестирование конфигурации оборудования или ОС и т. П.


ОБНОВИТЬ:

Как упоминалось в комментариях, проект по переносу GPT fdisk на EFI принес свои плоды в виде проекта UEFI GPT fdisk. По сути, это дополнительная библиотека, которая предоставляет подмножество функций C ++ для EFI - достаточно для создания gdiskдвоичного файла для EFI.

Род Смит
источник
Ну, я просто думал о переносе gdisk в EFI ... Но с какой стати компилятор разрешил бы высокоуровневые вызовы библиотек для структур UEFI, даже если компилятор Intel был доступен? Я проверял diskpart.efiисходный код, и он сильно отличается по организации от любого кода C, который я видел, на самом деле он больше похож на код Win32 ..
Milind R
В основном, я взволнован возможностью создания разделов диска из оболочки UEFI.
Milind R
1
partedдействительно довольно большой. Мой комментарий о простоте портирования основывался главным образом на плохой доступности компилятора C ++ для EFI - для портирования gdiskвам сначала нужно будет перенести все библиотеки C ++ на EFI, и это будет делом, которое сделает перенос обоих fdiskи partedвыглядеть тривиально!
Род Смит
1
Не совсем все библиотеки C ++. Вы, кажется, используете только потоки и пару других кусочков. Вы, кажется, не используете общие указатели, фьючерсы, deques или локали, например. Я подозреваю, что трудной частью будут ваши собственные классы блочного ввода-вывода, а не стандартная библиотека C ++. Добавление цели EFI в компилятор OpenWatcom C ++ может показаться интересным. Но это отклоняется от территории StackOverflow.
JdeBP
1
FWIW, я переписывался с кем-то, кто работает над тем, чтобы получить достаточно библиотек C ++, портированных на EFI, для gdiskработы. На данный момент я не могу давать никаких обещаний, но если эти усилия принесут свои плоды, они gdiskмогут стать доступными в качестве собственного приложения EFI в недалеком будущем, поэтому следите за ним.
Род Смит
1

Если бы вы назвали это, у diskpart.efiвас было бы правильное имя. ☺

Конечно, есть ниша для лучшего инструмента. Я подозреваю, что будут приветствоваться версии EFI некоторых более способных инструментов разбиения. EFI делает графику. Они могут даже быть инструментами GUI.

JdeBP
источник
Да, я узнал об этом через несколько минут после публикации. Но где я найду это? Например, его нет в Windows 8 ISO.
Milind R
Ах, моя ошибка, нашел ее здесь
Milind R
Я попробовал это ... Это чрезвычайно примитивно, не то, что кто-то должен использовать в 21-м веке. Насколько сложно будет использовать этот исходный код, ТОЛЬКО для EFI и ТОЛЬКО для макетов, соответствующих спецификации? Я читаю ваши FGA о процессе загрузки и BPB, и я просто в ужасе ...
Milind R
Посмотрев на него еще раз внимательно, он кажется намного более изощренным, чем я считал. Возможно, я могу попытаться реализовать приятный интерфейс gdiskпостроения на этом коде.
Milind R
@MilindR, дайте нам знать, если вы это сделаете, мне было бы интересно попробовать.
CMCDragonkai
0

Есть конечно гдиск :

GPT fdisk (он же gdisk) - это программа с текстовым режимом для создания и управления таблицами разделов.

Его автор, Род Смит, часто отвечает на вопросы на этом форуме. Вы можете направить свои запросы на новые функции непосредственно к нему здесь.

Что именно вам не хватает в gdisk ?

MariusMatutiae
источник
Мне бы хотелось, чтобы это было собственное приложение / исполняемый файл EFI, чтобы я мог запускать его вне операционной системы, просто используя UEFI. В конце концов, большинство инструментов разбиения диска прибегают к операциям во время загрузки, когда диск заблокирован ОС.
Milind R