Вопрос или проблема
Я надеюсь, кто-то сможет помочь мне с следующим. Я пытался скомпилировать fdisk для UEFI shell, файлы предоставлены по адресу
https://sourceforge.net/projects/uefi-fdisk/
согласно инструкциям в readme я выполняю команду ‘make’
Но я получаю следующую ошибку
./configure: не найдено
Я не специалист по Linux, буду признателен за любую помощь в этом вопросе.
Если кто-то из вас сможет скомпилировать это, пожалуйста, дайте ссылку, чтобы я мог скачать. Спасибо
Обратите внимание, что https://sourceforge.net/projects/uefi-fdisk/ в последний раз обновлялся 2020-04-10, и util-linux
стабильно разрабатывается с тех пор. Поэтому новейшие версии могут быть несовместимы, и лучше использовать точную версию, указанную в файле README: она может быть найдена по адресу https://github.com/util-linux/util-linux/archive/refs/tags/v2.34.tar.gz.
Итак, сначала распакуем util-linux
:
tar xf v2.34.tar.gz
cd util-linux-2.34
На этом этапе я посмотрел в корневую директорию исходного кода util-linux
. Действительно, там не было configure
скрипта… но были configure.ac
и autogen.sh
. С некоторым опытом работы с autoconf
я знаю, что autogen.sh
— это скрипт, который обычно производит ./configure
из configure.ac
.
Итак, на этом этапе может быть полезно отклониться от инструкций в README uefi-fdisk и запустить ./autogen.sh
:
./autogen.sh
[... много текста ...]
Теперь введите './configure' и 'make' для компиляции.
И теперь у нас есть ожидаемый ./configure
в директории util-linux-2.34
. Теперь мы можем продолжить с остальными инструкциями в README:
(все еще в директории util-linux-2.34)
tar xf ~/uefifdisk-0.6.tar.gz # или где-то, куда вы скачали
cd uefi-0.6
README утверждает, что любая версия GNU-EFI 3.x должна работать, так что давайте попробуем самую новую:
tar xf ~/gnu-efi-3.0.18.tar.bz2 # или где-то, куда вы скачали
Примечание: кажется, важно не оставлять пакет gnu-efi-3.0.18.tar.bz2
в директории uefi-0.6
. Это вызовет ошибку в процессе сборки. Просто оставьте сжатые файлы где-нибудь в другом месте или удалите их после распаковки.
Теперь наконец-то настало время запустить:
make
[... много текста, заканчивающегося на ...]
strip -s -o fdisk.so.s fdisk.so
objcopy -j .reloc -j .dynamic -j .rela -j .dynsym -j .text \
-j .rdata -j .data -j .bss \
--set-section-flags .dynamic=alloc,load,readonly,data \
--target=efi-app-x86_64 fdisk.so.s fdisk.efi
rm fdisk.so.s fdisk.so
Выглядит хорошо.
ls -l fdisk.efi
-rwxr-xr-x 1 username username 348160 Mar 3 11:19 fdisk.efi
Эй, это сработало!
Обратите внимание, что если у вашей целевой системы включен Secure Boot, вам нужно будет подписать бинарный файл fdisk.efi
, прежде чем вы сможете его запустить. Попытка запустить неподписанный файл *.efi
в системе с включенным Secure Boot может вызвать сообщение об ошибке или система может просто притвориться, что файл не существует или не исполняемый.
Если вы не хотите отключать Secure Boot, вам нужно будет запустить fdisk.efi
под shimx64.efi
, настроенным с Machine Owner’s Key (MOK), и подписать свой fdisk.efi
с помощью приватного ключа MOK.
Другой альтернативой может быть взятие управления иерархией ключей Secure Boot и добавление публичной части вашего подписи ключа в переменную Secure Boot db
. Если в вашем меню “BIOS settings” нет способа вставить ключ напрямую, возможно, вам придется удалить главный ключ Secure Boot (PK
), что должно включить режим настройки Secure Boot, в котором вы должны иметь возможность изменять любые переменные Secure Boot без ограничений. Если вы пойдете по этому пути, не забудьте добавить ваш публичный ключ Secure Boot как новый PK
после завершения, чтобы снова обезопасить систему.
Ответ или решение
Чтобы скомпилировать fdisk для UEFI Shell, необходимо выполнить несколько шагов. Прежде всего, важно понимать, что данная задача требует определенного уровня знаний в области работы с инструментами сборки и компиляции программного обеспечения. Поскольку вы уже сталкиваетесь с ошибкой "configure: not found", это может означать, что отсутствует необходимый скрипт configure
для начала процесса компиляции. Давайте разберемся в этом подробно.
Теоретическое обоснование
Компиляция программного обеспечения с открытым исходным кодом чаще всего включает использование системы сборки, такой как autoconf
и make
. Эти инструменты позволяют разработчикам автоматизировать процесс компиляции, делая его более стандартным и менее склонным к ошибкам. В случае, если отсутствует скрипт configure
, это может означать, что скрипт не был создан автоматически или не был включен в дистрибутив. Однако, наличие файла configure.ac
и скрипта autogen.sh
предполагает, что можно создать скрипт configure
самостоятельно, запустив autogen.sh
.
Пример
Рассмотрим конкретный пример для компиляции fdisk для UEFI Shell:
-
Скачивание исходных кодов. Перейдите по ссылке uefi-fdisk на SourceForge и скачайте необходимые архивы с исходными кодами. Также скачайте версию
util-linux
, указанную в README, с GitHub. -
Распаковка и подготовка. Распакуйте скачанные архивы с помощью команд:
tar xf v2.34.tar.gz cd util-linux-2.34
-
Создание скрипта configure. Поскольку в корневом каталоге
util-linux
отсутствуетconfigure
, но присутствуютconfigure.ac
иautogen.sh
, выполните:./autogen.sh
Это создаст скрипт
configure
. -
Продолжение процесса по инструкции. Вернитесь к инструкции в README:
tar xf ~/uefifdisk-0.6.tar.gz # Примените путь к вашему загруженному файлу cd uefi-0.6
-
Распаковка GNU-EFI. Используйте последнюю доступную версию GNU-EFI:
tar xf ~/gnu-efi-3.0.18.tar.bz2 # Примените путь к загруженному файлу
Обратите внимание, что архива GNU-EFI не должно быть в каталоге
uefi-0.6
, чтобы избежать ошибок в процессе сборки. -
Запуск make. Завершите процесс:
make
Если все выполнено корректно, вы получите файл
fdisk.efi
.
Применение
После успешной компиляции вы получите исполняемый файл fdisk.efi
, который может быть загружен в UEFI Shell. Пожалуйста, учтите, что если на целевой системе включена Secure Boot, необходимо будет подпись этого файла до его запуска. Это можно сделать либо с помощью shimx64.efi
с настроенным ключом владельца машины (MOK), либо путем контроля и настройки вашей иерархии ключей Secure Boot.
Заключение
Сборка fdisk для UEFI требует точного соблюдения всех шагов и внимательного выполнения инструкций, особенно если вы не имеете большого опыта работы с системами сборки в Linux. Если у вас возникнут проблемы при выполнении любого из этапов, не стесняйтесь обращаться в специализированные IT-форумы или сообщества, где можно найти помощь экспертов.