コードネームWARos
は日本発の超軽量カーネルとして開発中の実験的プロジェクトです。アプリケーションをOSとして構築でき、超軽量な組み込み開発を可能とします。
このプロジェクトには以下の特徴があります。
- Linuxなどの既存OSをベースとしておらず、ほぼ完全にフルスクラッチで構築されています。
- 必要な機能のみを取捨選択することによりバイナリサイズ・実行速度を極限まで最適化できます。
- 実際にRaspberry Pi B+のような貧弱な環境においても起動は一瞬です。
- Rust言語の採用により実行速度と安全性を保ったまま高効率な開発が可能です。
クロスコンパイルのため、コンパイルするターゲット環境のbinutilsが必須です。
具体的にはi686-elf-ldといったコマンドが必要となります。
Rustのコンパイラです。
一部のunstableな機能を利用するためにRustのNightlyビルドが必要です。
現在ビルドを確認しているバージョンはrustc 1.6.0-nightly (52d95e644 2015-11-30)
です。
x86向けのビルドには起動用のディスクイメージの生成のため、grub-mkrescueコマンドを使用しています。
MakefileはKernelディレクトリにあります。
- 依存モジュールのダウンロードのため、先に
make UPDATE
が必要です。 ただし、rustcのバージョンにあったソースコードが必要なため、手動でダウンロードすることをおすすめします。 - Kernelディレクトリ内で
make
してください。環境が揃っていればx86向けのバイナリがkernel.x86.bin
及びgrub.x86.iso
として出力されます。
ARM(Raspberry Pi)向けにビルドする際はARCH=arm make
としてください。この場合のバイナリはkernel.arm.bin
です。
Mac OS Xでのビルドにおいてリンクエラーの発生を確認しています。依存ライブラリのビルドに失敗しているだけのようで、一度Linux環境でビルドすることで再ビルドが可能となります。
デバッグにはQEMUが便利です。
以下のコマンドで起動します。
qemu-system-i386 -cdrom grub.x86.iso -vga std -m 256 -serial stdio
Raspberry Pi環境のQEMUはTorlus/qemuにあります。
ただし、メモリの容量が取得できないためkmain
にて手動でメモリ領域を指定する必要があります。
qemu-system-arm -kernel kernel.arm.bin.elf -cpu arm1176 -m 256 -M raspi -nographic
この場合 Ctrl-A X
で終了します。
QEMUの起動コマンドの最後に-s -S
を付加するとデバッガの接続を待機することができます。
ターゲット環境用のgdbを接続してデバッグが可能です。この時のgdbコマンドのサンプルがgdb.scr
にあります。x86環境でgdb -x gdb.scr
とすることでデバッグを開始します。