DEV Community

loading...

Rustで自作OS 2日目

YT
・1 min read

今日は文字を表示する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;
}
Enter fullscreen mode Exit fullscreen mode

これを元ブログの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が動いた。

Screen Shot 2021-07-03 at 14.27.16

次は文字を表示させる。

log crateを入れてinfo!マクロでログを表示できるようになった。
Screen Shot 2021-07-03 at 16.07.53

Discussion (1)

Collapse
gil0mendes profile image
Gil Mendes

Thanks for referencing my work 😍