2014年9月11日木曜日

[OS作成]30日でできる!OS自作入門 1日目 (1)

書籍ではWindowsを使っているが、
VirtualBox上のUbuntu14.04で開発することにした。

最初はバイナリエディタを使って、FDイメージを作成し、このディスクを使ってマシンを起動すると、
hello, world!
を表示できるようにするのが課題。

VirutalBoxでもqemuは動くのだろうか。
まずはqemuをインストールだ。

$ sudo apt-get install qemu

コンソールベースのバイナリエディタは何か良いのないかなと探してみたら、
Emacsのhexl-modeが、それらしい。
さっそく試してみる。

$ echo "hoge" > hoge.txt

emacs から M-x hexl-find-file で hoge.txt を開く。



標準で、こんな機能があったのか。
もっと早く知りたかった...

FDの容量の1.44MBまで00を埋めるのは面倒なので、ddコマンドで作ってしまおう。

$ dd ibs=1024 count=1440 if=/dev/zero of=helloos0.img
1440+0 レコード入力
2880+0 レコード出力
1474560 バイト (1.5 MB) コピーされました、 0.0289785 秒、 50.9 MB/秒

Emacsでhelloos.imgを開いて、hexl-modeで編集する。
このhexl-modeは1バイトをhexで入力するには、いちいちC-M-xで入力しないと駄目なのね...
面倒くさいと思いつつ、書籍の通りに入力。
ダンプリストを打ち込むなんて何年ぶりだろう。



qemuで起動してみる。

$ qemu-system-i386 -m 32 -localtime -vga std -fda helloos0.img



動いた!
hello, worldが表示された。

参考

バイナリファイルを編集するには