3日目(またMakefile編集、32bitへ)
ipl.nasとharibote.nasはharib00g.nasまで写経。
しかし最初はエラーが出たり、前と同じ「Booting from Floppy…」としか出てこない。
なにかおかしいと思ったら、ipl.nasでかなりミスタイプと行の間違いをしていた。これを修正。
他の方が使っていたのでただなんとなくmformatやmcopyをMakefileに追加していたが、これらのmtoolの謎は解明。
MSDOS、というかFATファイルシステムに対するコマンドだった。
今回の自作OSをLinux上で行うには、これは便利。
それと後で知ったが、拡張子がbinだったりsysだったりするのは、nasmのコマンドでは拡張子は関係ないため。
これでharibote.nasも含めたimgファイル作成のためのMakefileを作成できる。
また後で編集する可能性もあるが、 結局他の方のブログを参照して現時点では以下の通り。
ファイル名称は変えていない。
---
# ファイル生成規則
default:
make img
ipl.bin : ipl.nas Makefile
nasm ipl.nas -o ipl.bin -l ipl.lst
haribote.sys : haribote.nas Makefile
nasm haribote.nas -o haribote.sys -l haribote.lst
haribote.img : ipl.bin haribote.sys Makefile
mformat -f 1440 -C -B ipl.bin -i haribote.img ::
mcopy haribote.sys -i haribote.img ::
# コマンド
asm :
make -r ipl.bin
img :
make -r haribote.img
run :
make img
qemu-system-i386 -fda haribote.img # -fdaを追加
---
当初コマンド入力だと問題ないのに、 make runするとエラーが出て悩んだ。
Makefile:5: *** 分離記号を欠いています. 中止
というエラー。
調べたところ、上記のエラーはMakefileの5行目にtabだけではなくスペースが入っているというだけのエラーだった。
Makefileはtabのみでないとエラーになると、初めて知った。
ファイルを直して、make runで真っ黒なだけの画面が出てきて成功。
次に32bitモードの準備として、haribo00hのhaibote.nasを写経。
わからないことだらけだが、ここでは特に動作確認はない。
C言語に入る前に、いったん区切る。
余談だが、このあたりで参照しているサイトが日々ダブるようになってきた。
そのぐらい、いろんなところを行ったり来たりしている。
参照
https://qiita.com/Aquan_Investor/items/1843f0c7ba31a12f6446
https://wisteria0410ss.hatenablog.com/entry/2019/02/06/131021
http://bttb.s1.valueserver.jp/wordpress/blog/2017/11/25/makeos-3-1/
https://www.itmedia.co.jp/help/tips/linux/l0317.html