Почему моё UEFI-приложение, написанное на языке Rust, не работает?

Заинтересовался темой разработки ОС. Решил начать с написания UEFI-программы, которая просто выведет на экран "Hello, World!". Читал два туториала: клац и клац. У меня есть следующий код:

#![no_std] 
#![no_main] 
#![feature(asm)] 
#![feature(abi_efiapi)] 
 
extern crate uefi; 
extern crate uefi_services; 
 
use log::info; 
use uefi::prelude::*; 
 
#[entry] 
fn main(_image_handler: uefi::Handle, mut system_table: SystemTable<Boot>) -> Status { 
    uefi_services::init(&mut system_table).expect("Failed to initialize the environment"); 
    info!("Hello, World!"); 
    system_table.boot_services().stall(10_000_000); 
    Status::SUCCESS 
}

Я собрал приложение efi с помощью cargo build --target x86_64-unknown-uefi Потом я пытался создать загружаемый файл ISO, у меня ничего не получалось: виртуальная машина VMWare выдавала ошибку "ОС не найдена".

Тогда я просто взял образ Windows 11, убрал из него все файлы, кроме /boot/efi/bootx64.efi и заменил этот файл на своё приложение. Теперь-то ошибка не найденной ОС исчезла и при запуске появляется Press any key to boot from CD or DVD... Я жму кнопку, но "Hello, World!" не выводится на экран. VMWare просто запускает какой-то EFI Network.

Что я делаю не так?

P.S. Если файл bootx64.efi поставить тот, что был в дистрибутиве Windows, он будет загружаться! А мой - нет...


Ответы (0 шт):