今日は文字を表示するUEFIアプリを作るところから。自作OS本ではまだ1日目。
https://gil0mendes.io/blog/an-efi-app-a-bit-rusty/#the-app-itself を進めていく。
Hello Worldに手を加えるところから。
#![...]
はattribute
のようで、#![no_std] is a crate-level attribute that indicates that the crate will link to the core-crate instead of the std-crate.
とのこと。ベアメタル環境ではつける必要がある。
#![feature(asm)]
でインラインアセンブリを書けるようにする(The Rust Unstable Book)。
#![feature(abi_efapi)]
のページはタイトルだけで中身からっぽだった。
#![no_std] // std libを使わない
#![no_main] // UEFI向けエントリポイントに変更する
#![feature(asm)] // inline assemblyを呼べる
#![feature(abi_efiapi)] // よくわからないがABIを揃えるような名前
extern crate uefi;
extern crate uefi_services;
use uefi::prelude::*;
#[entry]
fn uefi_start(_image_handler: uefi::Handle, system_table: SystemTable<Boot>) -> Status {
loop{};
Status::SUCCESS;
}
これを元ブログのPythonスクリプトでbuild & run
するんだけど、OVMFのファイルが生成されなくて失敗した。
OFMFについて調べる。
元ブログを読み返すと、見落としがあることがわかった。
QEMU doesn’t come with OVMF, so it requires to installing it on your PC or get a pre-built image from the Internet, it’s possible to download it from my test repository.
元リポジトリからダウンロードしてくるとrunコマンドでQEMUが動いた。
次は文字を表示させる。
log crateを入れてinfo!
マクロでログを表示できるようになった。
Top comments (1)
Thanks for referencing my work 😍