Почему моё 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, он будет загружаться! А мой - нет...