3: 2007-02-18 (日) 14:03:07 |
4: 2007-02-19 (月) 13:14:20 |
- | *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 bim2bi4w/ doscmd0a/ hrblib0a/ obj2bi4c/ 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] |
| + | まだ・・・ |