LINUX.ORG.RU

Не смог найти edk2 (из TianoCore) в debian 13

 ,


1

1

В генте нашел, а в дебиане не нашел.

Искал так (debian.org)

Есть какой-то другой пакет (с исходниками):
https://packages.debian.org/trixie/source/edk2
но мне непонятно, почему он не нашелся сразу

https://packages.debian.org/trixie/efi-shell-x64
что с этим пакетом делать? Установить, а дальше?

dpkg -L efi-shell-x64
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/efi-shell-x64
/usr/share/doc/efi-shell-x64/changelog.Debian.gz
/usr/share/doc/efi-shell-x64/copyright
/usr/share/efi-shell-x64
/usr/share/efi-shell-x64/shellx64.efi

и это не то, что мне надо. Обещали-то библиотеки, хидеры, утилиты…

apt source edk2
извлекает всё в текущую директорию,
и это не как в Gentoo

«в соответствии с FHS чаще выбирают один из трёх мест:

  • /usr/src — для системных исходников и модулей ядра (только root). Подходит, если хотите хранить исходники пакетов, относящихся к системе.
  • /var/cache/apt/archives или /var/tmp — временные файлы сборки; /var/tmp для долгоживущих временных данных, /tmp для кратковременных.
  • /usr/local/src или ~/src — для локально собранных пакетов пользователем (рекомендуется для пользовательских сборок).»

Ну, допустим, /usr/local/src/edk2

Но я не собирался его компилировать руками!
https://github.com/tianocore/tianocore.github.io/wiki/Build-Instructions/
https://github.com/tianocore/tianocore.github.io/wiki/Using-EDK-II-with-Native-GCC
https://github.com/tianocore/tianocore.github.io/wiki/Common-instructions

. edksetup.sh
Loading previous configuration from /usr/local/src/edk2/edk2-2025.02/Conf/BuildEnv.sh
WORKSPACE: /usr/local/src/edk2/edk2-2025.02
EDK_TOOLS_PATH: /usr/local/src/edk2/edk2-2025.02/BaseTools
CONF_PATH: /usr/local/src/edk2/edk2-2025.02/Conf

И для сборки ему чего-то нехватает:

"gcc" -MMD -MF /usr/local/src/edk2/edk2-2025.02/Build/EmulatorX64/DEBUG_GCC/X64/CryptoPkg/Library/OpensslLib/OpensslLibCrypto/OUTPUT/openssl/crypto/bio/bss_core.obj.deps @/usr/local/src/edk2/edk2-2025.02/Build/EmulatorX64/DEBUG_GCC/X64/CryptoPkg/Library/OpensslLib/OpensslLibCrypto/OUTPUT/cc_resp.txt -c -o /usr/local/src/edk2/edk2-2025.02/Build/EmulatorX64/DEBUG_GCC/X64/CryptoPkg/Library/OpensslLib/OpensslLibCrypto/OUTPUT/openssl/crypto/bio/bss_core.obj  /usr/local/src/edk2/edk2-2025.02/CryptoPkg/Library/OpensslLib/openssl/crypto/bio/bss_core.c
/usr/local/src/edk2/edk2-2025.02/EmulatorPkg/Unix/Host/X11GraphicsWindow.c:18:10: fatal error: X11/extensions/XShm.h: Нет такого файла или каталога
   18 | #include <X11/extensions/XShm.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [GNUmakefile:379: /usr/local/src/edk2/edk2-2025.02/Build/EmulatorX64/DEBUG_GCC/X64/EmulatorPkg/Unix/Host/Host/OUTPUT/X11GraphicsWindow.obj] Ошибка 1


build.py...
 : error 7000: Failed to execute command
        make tbuild [/usr/local/src/edk2/edk2-2025.02/Build/EmulatorX64/DEBUG_GCC/X64/EmulatorPkg/Unix/Host/Host]


build.py...
 : error F002: Failed to build module
        /usr/local/src/edk2/edk2-2025.02/EmulatorPkg/Unix/Host/Host.inf [X64, GCC, DEBUG]

- Failed -
Build end time: 08:28:58, Nov.03 2025
Build total time: 00:00:24

Допустим я доустановил что-то и собирал EDK II, вот
find /usr/local/src/edk2/edk2-2025.02/Build/EmulatorX64/DEBUG_GCC/X64 -maxdepth 1 -iname ‘*.efi’

...
./EbcDxe.efi
...
./UefiPxeBcDxe.efi
...

Последние установленные пакеты:
grep "status installed" /var/log/dpkg.log | grep "$(date +%Y-%m-%d)"

2025-11-03 05:03:48 status installed efi-shell-x64:all 2025.02-8
2025-11-03 08:19:03 status installed acpica-tools:amd64 20250404-1
2025-11-03 08:19:03 status installed nasm:amd64 2.16.03-1
2025-11-03 08:19:03 status installed python-is-python3:all 3.13.3-1
2025-11-03 08:19:03 status installed man-db:amd64 2.13.1-1
2025-11-03 08:30:51 status installed libxfixes-dev:amd64 1:6.0.0-2+b4
2025-11-03 08:30:51 status installed libxext-dev:amd64 2:1.3.4-1+b3
2025-11-03 08:30:51 status installed libxrender-dev:amd64 1:0.9.12-1
2025-11-03 08:30:51 status installed libxrandr-dev:amd64 2:1.5.4-1+b3
2025-11-03 08:30:53 status installed man-db:amd64 2.13.1-1

find . -iname HelloWorld.efi

./Build/EmulatorX64/DEBUG_GCC/X64/HelloWorld.efi
./Build/EmulatorX64/DEBUG_GCC/X64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.efi
./Build/EmulatorX64/DEBUG_GCC/X64/MdeModulePkg/Application/HelloWorld/HelloWorld/DEBUG/HelloWorld.efi

/usr/local/src/edk2/edk2-2025.02/Build/EmulatorX64/DEBUG_GCC/X64/MdeModulePkg/Application/HelloWorld/HelloWorld/OUTPUT/HelloWorld.efi

«Если для сборки укажешь целевую архитектуру EBC, то вместо HelloWorld.efi под X64 получишь HelloWorldEbc.efi.»

Ранее на сайте:
2025-10-05, @lesopilorama, Читал про UEFI, много думал.
2018, @ncrmnt, tianocore

В интернете: 2013-11-13, icbook, Теория и практика EFI Byte Code, https://habr.com/ru/articles/201954/
(используют FASM для получения EBC и патчат файл-результат)

Про EBC:
https://github.com/tianocore/tianocore.github.io/wiki/EBC-FAQ
https://github.com/tianocore/tianocore.github.io/wiki/Tasks-Build-a-C-compiler-for-EBC
«EBC has a unique feature that is not found in other intermediate languages, natural indexing. Natural indexing has made compiler development for EBC notoriously difficult.»
«The original EBC compiler is the Intel C Compiler for EFI Byte Code. This compiler is very expensive ($955)»
https://github.com/yabits/llvm/tree/retrage/ebc
«LLVM backend for EFI Byte Code»
«Since LLVM 9.0, the LLVM linker now supports PE/COFF output»
«Rebasing his work up to the latest LLVM is the recommended starting point for any future work»
«Getting the compiler stable on Linux should be the first goal»

★

Последнее исправление: Saakx (всего исправлений: 27)

efi-shell это только efi shell, запускается как обычный efi бинарник, напоминает досовский command или виндовый cmd, только под efi. Больше там ничего не должно быть

mittorn ★★★★★
()
Ответ на: комментарий от mittorn

Нет, должен быть пакет с названием edk2-devel или как-то так, который мне установит всё остальное из репозитория „EFI development toolkit”

Saakx ★
() автор топика

Вероятно, там только в таком виде собрали: https://packages.debian.org/trixie/ovmf

apt source edk2 извлекает всё в текущую директорию, и это не как в Gentoo
«в соответствии с FHS чаще выбирают один из трёх мест:

apt source это не «потребительская» команда для пересборки системы, это если ты разработчик и собираешься у себя в $HOME его дорабатывать и потом опакетить со своими патчами.

firkax ★★★★★
()
Ответ на: комментарий от firkax

это не «потребительская» команда

А если мне надо при помощи того пакета свою программу компилировать?
Он должен быть установлен в системе как зависимость времени сборки.

Build-Depends field in debian/control:
This field in the source package's debian/control file explicitly lists the packages needed for building. These often include development libraries (ending in -dev), compilers (like gcc), build systems (like make, cmake), and other tools.

Иначе я не смогу свою программу в виде пакета поставлять. Только через сборку у себя, а это риск для воспроизводимости. Debian же больше всех гордится своей политикой «reproducible builds»…

Saakx ★
() автор топика
Последнее исправление: Saakx (всего исправлений: 2)
apt install apt-file -y
apt update
apt-file search XShm.h
emscripten: /usr/share/emscripten/cache/sysroot/include/X11/extensions/XShm.h
emscripten: /usr/share/emscripten/system/include/X11/extensions/XShm.h
libxext-dev: /usr/include/X11/extensions/XShm.h
kostik87 ★★★★★
()

В пакете в Gentoo содержатся следующие файлы:

30-edk2-ovmf-4m-qcow2-x64-sb-enrolled.json 	/usr/share/qemu/firmware/30-edk2-ovmf-4m-qcow2-x64-sb-enrolled.json
31-edk2-ovmf-2m-raw-x64-sb-enrolled.json 	/usr/share/qemu/firmware/31-edk2-ovmf-2m-raw-x64-sb-enrolled.json
40-edk2-ovmf-4m-qcow2-x64-sb.json 	/usr/share/qemu/firmware/40-edk2-ovmf-4m-qcow2-x64-sb.json
41-edk2-ovmf-2m-raw-x64-sb.json 	/usr/share/qemu/firmware/41-edk2-ovmf-2m-raw-x64-sb.json
50-edk2-ovmf-4m-qcow2-x64-nosb.json 	/usr/share/qemu/firmware/50-edk2-ovmf-4m-qcow2-x64-nosb.json
51-edk2-ovmf-2m-raw-x64-nosb.json 	/usr/share/qemu/firmware/51-edk2-ovmf-2m-raw-x64-nosb.json
edk2-ovmf 	/usr/share/edk2-ovmf
OVMF_CODE_4M.qcow2 	/usr/share/edk2/OvmfX64/OVMF_CODE_4M.qcow2
OVMF_CODE_4M.secboot.qcow2 	/usr/share/edk2/OvmfX64/OVMF_CODE_4M.secboot.qcow2
OVMF_CODE.fd 	/usr/share/edk2/OvmfX64/OVMF_CODE.fd
OVMF_CODE.secboot.fd 	/usr/share/edk2/OvmfX64/OVMF_CODE.secboot.fd
OVMF_VARS_4M.qcow2 	/usr/share/edk2/OvmfX64/OVMF_VARS_4M.qcow2
OVMF_VARS_4M.secboot.qcow2 	/usr/share/edk2/OvmfX64/OVMF_VARS_4M.secboot.qcow2
OVMF_VARS.fd 	/usr/share/edk2/OvmfX64/OVMF_VARS.fd
OVMF_VARS.secboot.fd 	/usr/share/edk2/OvmfX64/OVMF_VARS.secboot.fd
README.gentoo.bz2 	/usr/share/doc/edk2-202502-r1/README.gentoo.bz2
Shell.efi 	/usr/share/edk2/OvmfX64/Shell.efi

https://www.portagefilelist.de/index.php?p=package&id=7099d25eefd940ee407d21b6b39ea59c

Если тебе надо - поищи аналогично по apt-file где они.

Если их нет - смотри как они получаются в Gentoo, сравни с тем как собран пакет в Debian, пересобери, если нужно.

Но я не вижу в списке пакета в Gentoo каких-либо include.

kostik87 ★★★★★
()
Ответ на: комментарий от Saakx

build-depends ставятся через apt-get install (например, apt-get install gcc или чаще всего apt-get install build-essential это метапакет в котором комплект нужного для компиляции чего попало).

firkax ★★★★★
()
Ответ на: комментарий от firkax

Ну а у меня программа, написанная для UEFI (планируется), поэтому для её сборки требуется EFI SDK, логично? Значит должна быть команда apt-get install edk2-dev или как-то так.

Saakx ★
() автор топика

Если Вам нужен SDK для написания EFI-приложений, попробуйте установить пакет gnu-efi.

AITap ★★★★★
()
Ответ на: комментарий от Saakx

Я говорю о пакете efi-shell, а не о том, какой должен быть

mittorn ★★★★★
()
Ответ на: комментарий от Saakx

Верно, не существует. Учитывая, что там, как и в EDK2, рекомендуется пользоваться своей системой сборки, пользы от системного пакета с исходниками в /usr/src получилось бы не очень много.

Считайте, что программирование под EFI - это как разработка под встраиваемые системы. Нужно быть готовым компилировать взятые чёрт знает откуда исходники, стоя на голове в акваланге. Вон, SDK ни для различных моделей STM32, ни ESP32, ни Raspberry Pi Pico через APT всё равно не достать (хотя gcc-avr в своё время завезли, и спасибо за это).

AITap ★★★★★
()
Ответ на: комментарий от AITap

как разработка под встраиваемые системы

Неофициальные репозитории же для Debian есть?

«From Debian 11 (or 10 with backports), a vastly superior solution is available in the form of the Debian package extrepo»

https://salsa.debian.org/extrepo-team/extrepo

И есть их список?

https://salsa.debian.org/extrepo-team/extrepo-data

«To add metadata for your own external repository, please open a merge request to add a file called repos/debian/<your-repo.yaml>»

Но пока не вижу поисковика по их пакетам (аналогичного gpo.zugaina.org)

Saakx ★
() автор топика
Последнее исправление: Saakx (всего исправлений: 2)
Ответ на: комментарий от AITap

Стойка на голове в акваланге это то, чем пытается заниматься автор темы. А надо просто скачать архив, распаковать куда хочешь и, опционально, подправить PATH.

vbr ★★★★★
()

Я когда последний раз собирал dxe драйверок чтобы впатчить в бивис тупо брал все из гита, в deb’ках не смотрел даже.

С шеллом там прикол был, что гитовый у меня с бивисом не стартовал даже, надо было откатиться и методом тыка найти старый релиз, который заработал. (Stable API Nonsense, бгг).

ncrmnt ★★★★★
()
Последнее исправление: ncrmnt (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.