OS自作入門 0.5日目/30日(環境構築WSL、QEMU)
1.はじめに
0日目では、VMware上でOSを動作させていたが、今回は、WSL上でimgファイルまで作成し、実行はWindows上で実行する環境を構築する。WSL上完結したかったが、QEMUを動作させることができなかった。
※WSLを導入した理由は、個人の自己満足及びLinuxのコマンドの学習のためであり入れる必要はない
2.WSLの導入とツールのインストール
下記サイトを参考にWSLとWSL上にubuntuを導入する。 www.atmarkit.co.jp
WSL上で下記のツールをインストール
$ sudo apt install nasm
3.WindowsにQEMUのインストール
下記サイトからQEMUをダウンロード www.qemu.org
環境変数のPathにQEMUをインストールしたフォルダパスを追記
※自動でパスを通してくれないため
4.アセンブリ&実行
使用するソースプログラムは projects\01_day\helloos2\helloos.nas
アセンブルには nasm を使用するので拡張子を .asm へ変更
そのままアセンブリするとエラーになるため、ソースファイルの下記命令を変更
RESB
を TIMES
へ変更
例.RESB 18
→ TIMES 18 DB 0
TIMES命令とは?
TIMES n 命令
・・・n回命令を繰り返す
例はDB
を18回繰り返す意味
RESB 0x1fe-$
→ TIMES 0x1fe-($-$$) DB 0
0x001fe
までを0x00
で埋める命令
NASMには2つの特別なシンボル($、$$)があり、
$
は使用された行の先頭アドレスを、$$
は使用されたセクションの先頭アドレスを意味する。
がよくわからない。。。
$及び$$の意味について詳しく知りたい場合は下記を参照
環境が整ったので、下記コマンドをWSLで実行
$ nasm -o helloos.img helloos.asm
helooos.imgが出力されるので、Windwos上で
>qemu-system-i386 helloos.img
WARNING出力するがとりあえずOK
WARNING: Image format was not specified for 'helloos.img' 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.
動作確認完了。