ПО, ЭВМ и АСУ из Таможенного Союза

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » Проект "Виртуальные машины" » EFI Byte Code - чем он вас не устраивает?


EFI Byte Code - чем он вас не устраивает?

Сообщений 1 страница 5 из 5

1

Ранее по теме - Сандро за коммунизм

Суть идеи:
1) виртуальная машина со всякими спецификациями уже есть;
2) работа с графикой, работа с сетью и многоядерность в ней есть;
2) эмулятор к ней тоже есть;
4) можно, возможно, просто брать и использовать.
(ну или делать русскоязычную по аналогии,
можно, для разнообразия, реализовать спецификацию UEFI на JavaScript и WASM (многопоточность эмулировать),
не спрашивайте, как такие идеи приходят в голову...)

[html]
<a href="https://firmwaresecurity.com/2018/10/07/ebcvm-efi-byte-code-virtual-machine/">https://firmwaresecurity.com/2018/10/07/ebcvm-efi-byte-code-virtual-machine/</a>
[/html]

EFI Byte Code Virtual Machine
https://github.com/retrage/ebcvm

EFI Byte Code (EBC) Virtual Machine that can provide platform- and processor-independent mechanisms for loading and executing EFI device drivers.

Отредактировано Лис (2022-06-27 22:52:21)

0

2

https://habr.com/ru/post/338264/

«OVMF – портированная Интелом виртуалка qemu для отладки UEFI Firmware»

«UEFI Shell. Как в нем работать – написана куча руководств»

https://www.bootdev.ru/2018/05/EFI-Shell.html

>    - Исходящее перенаправление вывода.
<    - Входящее перенаправление вывода.
пробел    - Используется для отделения аргументов выполняемой команды.
Кавычки (") предназначены для объединение нескольких слов в единую строку.
^    - Предназначен для экранирования специальных символов.

https://www.happyassassin.net/posts/201 … work-then/

USEFI Forum = http://uefi.org/

«when booting permanent installed OSes, the firmware doesn't care if the bootloader is on an 'ESP' or not; it just reads the boot manager entry and tries to access the specified partition and run the specified executable (see here). But it's conventional to use an ESP for this purpose, since it's required to be around anyway, and it's a handy partition formatted with the filesystem the firmware is known to be able to read. Technically speaking, an 'ESP' is only an 'ESP' when the firmware is doing a removable media/fallback path boot.»

«В теории Вы сами можете собрать себе coreboot»
https://3dnews.ru/assets/external/illustrations/2019/09/03/993479/Coreboot_menuconfig.png
«и залить через аппаратный программатор, если микросхема BIOS у Вас в «кроватке»,
либо через flashrom напрямую в микросхему.
Только в начале сдёрните свою работающую прошивку и держите как референсную на всякий пожарный, если что пойдёт совсем не так. Сдёргивать надо прошивку в любом случае, что с внешним программатором, что с софтом.»

см. также UEFI и его требования к загрузочному устройству

«Никаких процессов, никаких объектов синхронизации, общая память системы/драйверов/приложений которую может попортить кто угодно.»
«Отладка только по печати на экран.»

https://stackoverflow.com/questions/529 … deprecated
«use UEFI's Graphics Output Protocol to switch video modes»
пример такого кода:
http://git.savannah.gnu.org/cgit/grub.g … /efi_gop.c

https://edk2-docs.gitbook.io/edk-ii-uef … ementation
EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE
    Содержит параметры текущего установленного видео режима
EFI_GRAPHICS_OUTPUT_PROTOCOL_QUERY_MODE
    Обеспечивает получение списка поддерживаемых видео режимов
EFI_GRAPHICS_OUTPUT_PROTOCOL_SET_MODE
    Позволяет установить заданный видео режим
EFI_GRAPHICS_OUTPUT_PROTOCOL_BLT
    Выполняет копирование блока графических данных из системной памяти в видео память и обратно

«Продвинутая функция BLT или Block Transfer, реализованная в рамках GOP, потенциально дает возможность использовать видео акселератор. Блок данных, находящийся в системной памяти и предназначенный для переноса в видео память может быть обработан графическим процессором, взаимодействующим с оперативной памятью в режиме Bus Master. Чтобы это стало возможным, поддержка протокола GOP должна быть адаптирована к архитектуре заданного графического процессора и интегрирована в firmware видео адаптера.»

https://wiki.osdev.org/GOP
«Reading from the video memory is slooow! Use double buffering instead. »
https://wiki.osdev.org/Drawing_In_Protected_Mode

Утилита для замера скорости работы графики:
https://habr.com/ru/post/212363/

Пример графического приложения:
https://habr.com/ru/company/ruvds/blog/571624/
«Видел на гитхабе Doom для UEFI»

Ещё там можно найти сетевые карты:
What you need is EFI_PCI_IO_PROTOCOL.
Refer to UEFI spec 2.6 "13.4 EFI PCI I/O Protocol".
    Get all PCI devices handles by calling gBS->LocateHandleBuffer().
    Get EFI_PCI_IO_PROTOCOL attached on PCI device handle. (gBS->HandleProtocol)
    Call EFI_PCI_IO_PROTOCOL.Pci() to load the PCI configuration space. Everything you need (Device id, Vendor id, Subsystem, Revision) can be found in PCI configuration space.
«Version 2.5 of the UEFI specification introduces the UEFI HTTP Boot feature.»

https://stackoverflow.com/questions/659 … k-packages

Simple Network Protocol gives you raw access to a packet interface if you want to handle things yourself.
   «The EFI_SIMPLE_NETWORK_PROTOCOL provides services to initialize a network interface, transmit packets, receive packets, and close a network interface.»

Managed Network Protocol has the firmware trying to autoconfigure your network and download files as appropriate via TFTP/PXE or HTTPS.

Отредактировано Лис (2022-06-27 22:04:28)

0

3

Что тут с многопоточностью?

https://stackoverflow.com/questions/279 … ad-in-uefi
«there is a MpService protocol, that can be used for performing tasks on CPU cores»
«it is possible to run code on the other processor in the systems»

https://www.mail-archive.com/edk2-devel … 00132.html
«System calls in EFI are called Boot Services and Runtime Services.
Protocols are C structure with member functions that are named by GUID (UUID) and this is how a driver publishes services.»

«non of the EFI services work on the other processors»

«What EFI does have is timer events»

2015-10-30, на русском:
https://habr.com/ru/post/269851/
на английском
https://sudonull.com/post/93806-Is-mult … le-in-UEFI
«однопотоковая идеология UEFI и, как следствие, нереентерабельность сервисных процедур UEFI API.»

https://github.com/Openwide-Ingenierie/ … reads-UEFI
«Most of the functions given in EDK II library are NOT thread-safe.
Therefore, you should treat those function calls as a critical section and so use a Mutex to protect them.»

«запустить произвольную процедуру на заданном логическом процессоре мультипроцессорной платформы. Объектом управления являются логические процессоры, например, в системе с двумя 8-ядерными процессорами, поддерживающими технологию Hyper-Threading, количество логических процессоров будет равно 2*8*2 = 32. Для запроса количества процессоров используется функция GetNumberOfProcessors»

«UEFI firmware существенно упрощает задачу системного программиста при инициализации мультипроцессорной платформы. Передача межпроцессорных прерываний, известных как IPI или Inter Processor Interrupts, а также перевод процессора AP в режим, совместимый с контекстом UEFI, можно осуществить не прямым программированием аппаратуры, а с использованием сервисных функций.»

https://uefi.org/sites/default/files/re … Daniel.pdf
2010-06-15, Daryl McDaniel, Multiprocessing with UEFI

https://patents.google.com/patent/US7310724B2/en

https://forum.osdev.org/viewtopic.php?f=1&t=36332

Отредактировано Лис (2022-06-27 22:29:27)

0

4

Про зловредов через UEFI:
https://securelist.com/moonbounce-the-d … re/105468/

0

5

Про асинхронность
https://edk2-docs.gitbook.io/edk-ii-uef … t_services

0


Вы здесь » ПО, ЭВМ и АСУ из Таможенного Союза » Проект "Виртуальные машины" » EFI Byte Code - чем он вас не устраивает?