雑記帳
ここはhideyosiの雑記帳です。テケトーに書き散らしてるだけなので間違っていたりとは普通にしてます。信用度は相当低いことをあらかじめご了承を。またご覧のようにWikiを使ってますが、hideyosi意外は書き込めません。
3: 2007-02-18 (日) 14:03:07 ソース バックアップ No.3 を復元して編集 4: 2007-02-19 (月) 13:14:20 ソース バックアップ No.4 を復元して編集
Line 1: Line 1:
-*FreeBSDでtolset! [#c27af417] +-linuxおよびFreeBSDで「30日でできる!OS自作入門」を進めていけないかと思い、いろいろやってみました。 
-*Linuxでもtolset! [#ucb6e0ef]+-ウチでの実験は、 
 +--FreeBSD 5.5 
 +--VineLinux4.0 
 +-にて行いました。いずれもほぼ最新のソフトにアップグレードしてあります。 
 +-また黒猫本のほうは以下を使用しました。 
 +--30日でできる!OS自作入門 第7刷
-ええと、とりあえず現時点でFreeBSD、Linuxでtolsetがmakeできるようになったので、''まずは第一弾!''ということで、パッチを公開します。 
--まず、はりぼてCDからtolsetのソースをどこか適当なところにコピーしておいてください。(ちなみに、別にrootでなくてもOKです) +COLOR(red){'07/2/18現在、まだ完璧ではありません。いくつか問題があります。特に、29日目以降は問題がでて本のとおりにいきません}
- $ mound /dev/cdrom /mnt +
- $ cp -a /mnt/omake/tolsrc ~/+
--次にパッチをダウンロードします。 
---linuxは[[こちら。:http://thebbl.hideyosi.com/age/tolset.patch]] 
---FreeBSDは[[こちら。:http://thebbl.hideyosi.com/age/tolsetbsd.patch]] 
- $ cd +*環境を整える [#p981dbdc] 
- $ wget http://thebbl.hideyosi.com/age/tolset.patch  <- FreeBSDはtolsetbsd.patch +-オイラがやっている方法だと、たぶんrootでなくてもOKのはずです。 
- $ ls +-まずはとにかく、はりぼてCDの内容をコピーしておきます。全部じゃなくていいですよ。 
-  tolset.patch tolsrc/+ $ mount /dev/cdrom /mnt                  ←まずはCDを読めるようにして 
 + $ mkdir ~/haribote                        ←ホームにでも適当に専用ディレクトリを作っておきます。 
 + $ cp -R /mnt/projects/* ~/haribote/      ←projects内をまるごとコピーしておきます。 
 + $ cp -R /mnt/tolset/z_tools ~/haribote/  ←z_toolsそのものをまるごとコピー。 
 + $ rm -f ~/haribote/z_tools/*.exe          ←間違えるとイヤなのでWin用のコマンドを削除 
 +-最後に、haribote.rulファイルを変更してください。 
 + $ vi ~/haribote/z_tools/haribote/haribote.rul  ←お好きなエディタで
--tolsrcに降り、パッチを当てます。 +                       : 
- $ cd tolsrc +        /* 例:  c:/osask/gg00libc.lib;  */ 
- $ patch -p1 < ../tolset.patch+        ../z_tools/haribote/harilibc.lib; 
 +        ../z_tools/haribote/golibc.lib;
--以上です。あとは、make install。(なお、installとは言っても単にコンパイルした実行ファイルをokというディレクトリにひとまとめにコピーするだけなので、システムになにかコピーしたりはしませんのでご安心を) + label: 
- $ ls +        /* 必ずリンクしなければいけないラベルを指定 */ 
-  Makefile  bim2bi4wdoscmd0a/ hrblib0aobj2bi4c/ sartol0j+                        : 
-  aksa1a/   bim2hrb/   edimg0i/   imgtol0d/ tk5lgpl1+                     ↓↓↓ 
-  aska/     bin2obj0/ go_0023s/ makefont/ osalink1/+                       : 
 +         /* 例: c:/osask/gg00libc.lib; */ 
 +       ../../z_tools/haribote/harilibc.lib; 
 +        ../../z_tools/haribote/golibc.lib; 
 + 
 + label: 
 +         /* 必ずリンクしなければいけないラベルを指定 *
 +                        : 
 + 
 + 
 +-以上でとりあえずはOKです。 
 + 
 + 
 + 
 +-tolsetを準備します。 
 +-まず、同じようにCDからtolsetのソースをコピーしておきます。 
 + $ cp -R /mnt/omake/tolsrc ~/             ←場所はどこでもいいですがharibote内だとこんがらがるので・・・ 
 +-次に[[このパッチ:http://thebbl.hideyosi.com/age/tolsetbsd.patch]]をダウンロードしてtolsrcディレクトリの上に置きます。 
 +-COLOR(red){''※''パッチは07/2/18現在のものです} 
 + $ cd ~/                                                      ←tolsrcの上で。 
 + $ wget http://http://thebbl.hideyosi.com/age/tolsetbsd.patch 
 +-tolsrcに降り、パッチを当てます。 
 + $ cd ~/tolsrc 
 + $ patch -p1 < ../tolsetbsd.patch 
 +-パッチが当たったらMakefileが出来ているはずです。あとはそこでmakeあるいはgmakeを行ってください。コマンドがコンパイルされ、出来上がるはずです。 
 + $ make
 $ make install  $ make install
-                      +-make install を行うと、okというディレクトリが出来、その中に出来上がったコマンドが全部コピーされます。全部あるかどうかチェックしてください。 
-                      + $ ls ~/tolsrc/ok 
-                      +   bim2bin        edimg          gocc1plus      makefont        obj2bim 
- $ ls +   bim2hrb        gas2nask        gocpp0          nask            sjisconv 
-  Makefile  bim2bi4w/ doscmd0a/ hrblib0a/ obj2bi4c/ sartol0j+   bin2obj        gocc1          golib00        naskcnv0 
-  aksa1a/   bim2hrb/   edimg0i/   imgtol0d/ ok/ tk5lgpl1+ 
-  aska/    bin2obj0/ go_0023s/ makefont/ osalink1+-全部出来上がっていたらOKです。これらをz_toolsにコピーしてください。 
- $ ls ok + $ cp ~/tolsrc/ok/* ~/haribote/z_tools/ 
-  bim2bin*  bin2obj*  gas2nask*  gocc1plus*  golib00*   nask*     obj2bim* + 
-  bim2hrb*  edimg*    gocc1*     gocpp0*     makefont* naskcnv0* sjisconv*+-以上で準備はOKです。 
 + 
 +-COLOR(red){・・・あ” 当然ですが、qemuは別にインストールしておいてくださいね。・・・そうか!これはrootじゃないと出来ないんだっけ?(^^} 
 + 
 +*動かしてみよう [#na7cd182] 
 +-COLOR(red){''※'' なお、以降、本でいうところのinstall(FDに書き込む)はすべて未検証となります。} 
 + 
 +-COLOR(red){''※'' わこうメモによると、dd if=helloos.img of=/dev/fd0 でFDにインストールし、実機で動作できるらしいです。} 
 + 
 + 
 +**1日目 [#y81f9302] 
 +-helloos0 
 +--これはまあ、なんもせんでも動くはず。qemuの実験を兼ねてやってみます。 
 +--ディレクトリに降りて、qemuを実行。これは、本で言うところの'' run.bat''相当です。 
 + $ cd ~/haribote/01_day/helloos0 
 + $ qemu -fda helloos.img & 
 + 
 + 
 + 
 +-helloos1 
 +--本の通り、アセンブラで書かれたhelloos.nasをコンパイルするとhelloos.imgが出来上がる。(''asm.bat''相当) 
 +--あとはqemuで動かせる。(''run.bat''相当) 
 + $ cd ~/haribote/01_day/helloos1 
 + $ ../../z_tools/nask helloos.nas helloos.img 
 + $ qemu -fda hellos.img & 
 + 
 + 
 + 
 +-helloos2 
 +--helloos1と同じなので省略・・・ 
 + 
 + 
 + 
 + 
 +**2日目 [#h7fad81a] 
 +-helloos3 
 +--helloos1と同じなので省略・・・ 
 + 
 + 
 +-helloos4 
 +--P43。 
 +--asm.bat相当のコマンド 
 + $ cd ~/haribote/02_day/helloos4 
 + $ ../../z_tools/nask ipl.nas ipl.bin ipl.lst 
 +--makeimg.bat相当 
 + $ ../../z_tools/edimg imgin:../../z_tools/fdimg0at.tek wbinimg \ 
 +  src:ipl.bin len:512 from:0 to:0 imgout:helloos.img 
 +--あとは同じく、出来上がったイメージをqemuで実行。 
 + $ qemu -fda helloos.img & 
 + 
 + 
 +-helloos5 
 +--ここからはMakefileが登場する。修正点をいちいち書いていたのではかなわないのでパッチを当てるようにする。 
 + $ cd ~/haribote/02_day/helloos5                            ←目的のディレクトリに降りる 
 + $ wget http://thebbl.hideyosi.com/age/02/helloos5.patch    ←パッチをゲット! 
 + $ ls                                                       ←パッチがあることを確認 
 +    !cons_9x.bat    Makefile       make.bat 
 +   !cons_nt.bat    ipl.nas    helloos5.patch 
 + $ patch -f < helloos5.patch                                ←パッチを当てる 
 + $ ls                                                      ←パッチ後の内容を確認(※1) 
 +   !cons_9x.bat    Makefile        helloos5.patch make.bat 
 +   !cons_nt.bat    Makefile.orig  ipl.nas 
 + $ head Makefile                                            ←ちゃんとパッチが当たっているか確認 
 +   # デフォルト動作 
 + 
 +   default : 
 +           gmake img                                      ←こうなっていればOK 
 + 
 +   # ファイル生成規則 
 + 
 +   ipl.bin : ipl.nas Makefile 
 +           ../../z_tools/nask ipl.nas ipl.bin ipl.lst 
 +---COLOR(green){※1  Makefile.orgは元のファイルのバックアップ。Linux等ではない場合も多い} 
 + 
 + 
 +-さあ。これでOK。 
 +-このMakefileへのパッチにより、これまでと違ってmake runやmake cleanなどが使えるようになる。COLOR(red){(ただしmake installだけはダメ。このページの一番上の方を参照)} 
 + 
 + 
 +**3日目 [#ub67a2ff] 
 +えーっと。これ以降は修正点もたくさんあるので一気にパッチ当てとなります。 
 + 
 +おそらくこれ以降はすべてこのパターンとなるはずです。(違いがある時だけ書きます。) 
 + 
 + 
 + $ cd ~/haribote/03_day                                ←03_dayディレクトリに移動します。 
 + $ ls                                                  ←内容確認 
 +   harib00a    harib00d    harib00g    harib00j 
 +    harib00b    harib00e    harib00h 
 +    harib00c    harib00f    harib00i 
 + $ wget http://thebbl.hideyosi.com/age/03/03day.patch  ←パッチをゲット! 
 + $ ls                                                  ←内容確認(パッチがあるぞ!) 
 +   03day.patch  harib00c    harib00f    harib00i 
 +   harib00a      harib00d    harib00g    harib00j 
 +   harib00b      harib00e    harib00h 
 + $ patch -p1 -f < 03day.patch                          ←パッチを適用! 
 + 
 +-以上です。 
 +-これで、3日目の全てがmeke、make run等実行できます。COLOR(red){(ただしmake installだけはダメ)} 
 + 
 + 
 +**4日目 [#z757de49] 
 +-上記3日目と同じ手順です。03_dayを04_dayに読み替えてください。 
 + 
 + $ cd ~/haribote/04_day                                ←04_dayディレクトリに移動します。 
 + $ ls                                                  ←内容確認 
 +   harib01a     harib01d    harib01g 
 +   harib01b    harib01e    harib01h 
 +   harib01c    harib01f 
 + $ wget http://thebbl.hideyosi.com/age/04/04day.patch  ←パッチをゲット! 
 + $ ls                                                   ←内容確認(パッチがあるぞ!) 
 +   04day.patch  harib01c    harib01f 
 +   harib01a     harib01d    harib01g 
 +    harib01b      harib01e     harib01h 
 + $ patch -p1 -f < 04day.patch                          ←パッチを適用! 
 + 
 +-以上です。 
 +-これで、4日目の全てがmeke、make run等実行できます。COLOR(red){(ただしmake installだけはダメ)} 
 + 
 + 
 + 
 +**5日目 [#c457662d] 
 +-上記3日目と同じ手順です。03_dayを05_dayに読み替えてください。 
 + 
 +**6日目 [#y7f65504] 
 +-上記3日目と同じ手順です。03_dayを06_dayに読み替えてください。
 +**7日目 [#qc641b6d]
 +-上記3日目と同じ手順です。03_dayを07_dayに読み替えてください。
-----+**8日目 [#p92f1024] 
 +-上記3日目と同じ手順です。03_dayを08_dayに読み替えてください。
-ええと、まずはとにかくコンパイルまで。+**9日目 [#m7f4ff8c] 
 +-上記3日目と同じ手順です。03_dayを09_dayに読み替えてください。
-さらにこれをつかってはりぼてOSを実行できるのですが、また後で書きます+**10日目 [#cb9eb08f] 
 +まだ・・・