tasuwo blog

自作OS3日目

| Comments

3日目です.

余計なことをしていたら,結構時間がかかってしまった.現在進めている本は2006年の本なので,実はかなり情報が古い.でも,OSの根本の部分ってそんな簡単に変わらないと思うので,無駄になることはないはずだ.多分.また,組み込みOSの方はたぶんCPUとかの組み立てからやるのだけど,レジスタとかメモリとか利用していると実際にそれらを見てみたくなるのはわかる.余裕があればいつかやってみたいな.そっちは2010年でまだ新しいしね.
前回同様やったことの整理をする.

2日目

今まで

  1. naskでアセンブリコードからディスクイメージ全体を生成する
  2. qemuでエミュレートする

これから

  1. naskにはアセンブリコードからブートセクタを生成してもらう
  2. ディスクイメージは,edimg(筆者作のディスクイメージ管理ツール) を使用して生成する
  3. qemuでエミュレートする

つまり

Makefileが以下のように書きかわるというワケ.

1
2
3
4
run :
  ../../z_tools/nask helloos.nas helloos.img
  cp helloos.img ../../z_tools/qemu/fdimage0.bin
  make -C ../../z_tools/qemu

1
2
3
4
5
6
7
8
9
10
11
ipl.bin : ipl.nas Makefile
  ../../z_tools/nask ipl.nas ipl.bin ipl.lst
helloos.img : ipl.bin Makefile
  ../../z_tools/edimg   imgin:../../z_tools/fdimg0at.tek \
  wbinimg src:ipl.bin len:512 from:0 to:0   imgout:helloos.img
img :
  make -r helloos.img
run :
  make img
  cp helloos.img ../../z_tools/qemu/fdimage0.bin
  make -C ../../z_tools/qemu

3日目

アセンブラの命令とかレジスタの略称とかをまとめた用紙を作った.すぐわからなくなる.
今まで作っていたのはIPL(初期プログラムローダ)というらしい.今回はOS本体のプログラムをロードするまでが目的(即ち,IPLの完成).
IPLにはフロッピーディスクの全情報を読み込ませる(実際にはシリンダー10まで).OS本体はC言語とアセンブリ言語を組み合わせて記述し,ロードする.

コンパイル時に様々な中間言語が登場する.かなり回りくどい.でも,こういう中身を知っておくのは大事だと思う(だからこそ自作OSに手を出してる部分もある).

とりあえず,真っ黒な画面を生成しただけだけど今回はおしまい.

雑記

書籍の古さもあって,出来上がりのGUIが一昔前のOSになりそう.フロッピーディスクも今時使えないし.

  • GUIを今風にする
  • USBからブートする

の2点がこの本から発展した個人的な課題になりそう.とりあえず,見れるものを作っておきたい.

Comments