Open3

x86_64 NuttX と QEMU

三輪晋三輪晋

環境

VirtualBox を使用

  • ホスト: Microsoft Windows 10
  • ゲスト: Ubuntu 20.04 LTS

NuttX ビルド

インストールとコンパイルまで進める

https://nuttx.apache.org/docs/latest/quickstart/install.html

https://nuttx.apache.org/docs/latest/quickstart/compiling.html

アーキテクチャは ./tools/configure.sh -L で表示されたやつをつかった。

$ ./tools/configure.sh -l qemu-intel64:nsh
$ make

生成されたもの。

$ file nuttx.elf
nuttx.elf: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
三輪晋三輪晋

iso を作る

作るらしい。

https://github.com/apache/incubator-nuttx/tree/master/boards/x86_64/intel64/qemu-intel64

ディスクを作る。iso というディレクトリの下にファイルを設置するらしい。nuttx.elf は NuttX を make して生成されたもの。

rin@shiori:~/work/OS/nuttx$ mkdir -p iso/boot/grub
rin@shiori:~/work/OS/nuttx$ cp ./nuttx/nuttx.elf iso/boot/
rin@shiori:~/work/OS/nuttx$ vim iso/boot/grub/grub.cfg
rin@shiori:~/work/OS/nuttx$ grub-mkrescue -o boot.iso iso 

QEMU

qemu をインストールする

$ sudo apt install qemu-kvm

qemu と NuttX で起動する

$ qemu-system-x86_64 -cpu host -enable-kvm -m 2G -cdrom boot.iso -nographic -serial mon:stdio

んだが、VirtualBox のゲストが死ぬ。

三輪晋三輪晋

grub-mkrescue

grub-mkrescue を実行するときに xorriso というのが必要らしいのでインストールしておく。

rin@shiori:~/work/OS/nuttx$ grub-mkrescue -o boot.iso iso 
grub-mkrescue: エラー: xorriso not found.
rin@shiori:~/work/OS/nuttx$ sudo apt install xorriso

QEMU KVM

よくあるエラー。

rin@shiori:~/work/OS/nuttx$ qemu-system-x86_64 -cpu host -enable-kvm -m 2G -cdrom boot.iso -nographic -serial mon:stdio
Could not access KVM kernel module: No such file or directory
qemu-system-x86_64: failed to initialize KVM: No such file or directory

以下のようにした。正解なのか分からん。

  • BIOS で VT-X を有効にする(Intel CPU の場合)
  • VirtualBox ゲスト OS の設定で VT-x を有効にする。準仮想化インターフェースを KVM を設定する。