12
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

バージョンアップしたRustでUEFIと遊ぼうとしたら1年間詰んだ話

Last updated at Posted at 2018-07-25

はじめに

RustでUEFIを叩くアプリをね1年くらい前にいろいろいじってました。
これ(GitHub:rust-uefi-sample)

昨年の自作OSアドベントカレンダーに書いたやつだね。そうだね。
Rustでベアメタル(UEFI)するときにprintfデバッグできなくて半年たった話

Rustのバージョンが1.24に上がったくらいからビルドができなくなった。
控えめに申し上げてFuck
そうだよ、このアドベントカレンダーの記事書いてから、数か月後にはもうビルドできない体になってたんだよ!ビルドできる喜びを知りやがって!!

まぁそれは置いといて原因が分かったので書いていく。

原因

  1. こちらのカスタムターゲットファイルの仕様が変更されていた
  2. lang_itemsの#[lang = "panic_fmt"]が#[panic_implementation]に変更されていた。そのおかげで、結構な変更が入った。

ビルドには、プロジェクトディレクトリ直下で

export RUST_TARGET_PATH=`pwd`

これを打つ必要がある。

何とかビルドできた

が、次はQemuがうまいこと動いてくれなかったので

$ make run
xargo build --target x86_64-unknown-efi
    Finished dev [unoptimized + debuginfo] target(s) in 0.08s
cd target/x86_64-unknown-efi/debug && x86_64-efi-pe-ar x *.a
x86_64-efi-pe-ld --gc-sections --oformat pei-x86-64 --subsystem 10 -pie -e efi_main -o build/bootx64.efi target/x86_64-unknown-efi/debug/*.o
cp -fp build/bootx64.efi build/EFI/BOOT/
1440+0 records in
1440+0 records out
1474560 bytes (1.5 MB, 1.4 MiB) copied, 0.017609 s, 83.7 MB/s
qemu-system-x86_64.exe -m 1024 -bios ovmf.fd -usb -usbdevice disk::build/boot.img
D:\ProgramFiles\qemu\qemu-system-x86_64.exe: -usbdevice disk::build/boot.img: '-usbdevice' is deprecated, please use '-device usb-...' instead
D:\ProgramFiles\qemu\qemu-system-x86_64.exe: -usbdevice disk::build/boot.img: could not add USB device 'disk::build/boot.img'
Makefile:56: recipe for target 'run' failed
make: *** [run] Error 1

こんな感じでvvfatを使うようにしたらうごいた

xargo build --target x86_64-unknown-efi
    Finished dev [unoptimized + debuginfo] target(s) in 0.04s
cd target/x86_64-unknown-efi/debug && x86_64-efi-pe-ar x *.a
x86_64-efi-pe-ld --gc-sections --oformat pei-x86-64 --subsystem 10 -pie -e efi_main -o build/bootx64.efi target/x86_64-unknown-efi/debug/*.o
cp -fp build/bootx64.efi build/EFI/BOOT/
qemu-system-x86_64.exe -m 1024 -bios ovmf.fd -hda fat:build/
vvfat build/ chs 1024,16,63
D:\ProgramFiles\qemu\qemu-system-x86_64.exe: -hda fat:build/: Opening non-rw vvfat images without an explicit read-only=on option is deprecated. Future versions will refuse to open the image instead of automatically marking the image read-only.
WARNING: Image format was not specified for 'json:{"fat-type": 0, "dir": "build/", "driver": "vvfat", "floppy": false, "rw": false}' and probing guessed raw.
         Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
         Specify the 'raw' format explicitly to remove the restrictions.

Rustちゃんの仕様変更に追いつくの大変。
特にこういう泥臭いところは結構激しい。

一緒にウォッチしてくれる人おらんかね・・・俺はもう疲れたよ・・・

きょうはここまで。

12
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?