OS自作入門(2日目):読書とアセンブリコードいじり
↑の続き
環境
- OS: Windows 10 Pro
- Memory(多分関係ない): 16GB
- Console: Windows PowerShell 5.1.18362.1171
- WSL上のLinux(手順7でのみ使用): Ubuntu 20.04.01 LTS
- NASM: 2.15.05
- VirtualBox: 6.1.18 r142142
今回やったこと
読書(OS自作入門):
ソースコード書き換え for nasm (project/02_day/helloos3/helloos.nas)
RESB
をTIMES
とDB
に変更0x7dfe-$
を0x7dfe-($-$$)
に変更
(参考サイト様①:Ubuntu 18.04で「30日でできる!OS自作入門」をやりたい[2日目] - free(malloc(sizeof(MRM)));)
nasmでアセンブル
nasm helloos.nas -o helloos.img
VirtualBoxで実行
上手くいってしまったが、参考①筆者の方によるUbuntu+qemuエミュレーションでは、2.bの変更部分にて、
0x7dfe-($-$$)
が0で埋めたいブートセクタのバイト数(=510)に一致しなかったためにエラーが出たみたいだ。こちらの方法でエラーが出なかった理由は分からないが、確実に510バイト指定をしていることを保証するため、参考①の方法に従って、TIMES 0x7dfe-0x7c00-($-$$)
に変えておくことにした。VirtualBoxで再実行
Makefile作ってみた
(参考サイト様②:Linuxで書くOS自作入門 2日目 - Tsurugidake's diary)
default: make img ipl.bin: ipl.asm Makefile nasm ipl.asm -o ipl.bin -l ipl.lst tail.bin: tail.asm Makefile nasm tail.asm -o tail.bin -l tail.lst helloos.img: ipl.bin tail.bin Makefile cat ipl.bin tail.bin > helloos.img asm: make -r ipl.bin img: make -r helloos.img clean: -rm ipl.bin -rm tail.bin -rm ipl.lst -rm tail.lst src_only: make clean rm helloos.img
Makeした(ここだけWSL上の操作)
make img
VirtualBoxで実k(ry
今後の開発環境についての小言
手っ取り早く勉強を始められると思ってPowerShell+VirtualBoxで開発を進めていたが、ググって出てくる環境のほとんどがLinux(+qemu)+VirtualBoxなので、今後進めにくくなるかもしれない。あえてPowerShellで進めてぶち当たった問題と解決策をこのブログで共有していくのはありかもしれないが、WSLでUbuntu動かせるのに、そんな需要あるのだろうか...?