7: 2007-02-20 (火) 19:56:54 |
現: 2024-01-06 (土) 22:39:10 ゲスト[RkE6jyzwW4E] |
| -ウチでの実験は、 | | -ウチでの実験は、 |
| --FreeBSD 5.5 | | --FreeBSD 5.5 |
- | --VineLinux4.0 | + | --VineLinux4.2 |
| -にて行いました。いずれもほぼ最新のソフトにアップグレードしてあります。 | | -にて行いました。いずれもほぼ最新のソフトにアップグレードしてあります。 |
| + | --また、ほぼ同じ状態でMacOS Xでも実行が確認されたようです。 |
| + | |
| + | -FreeBSD 5.5で実行している画像。御参考に! |
| + | #ref(bsd2_s.jpg) |
| + | #ref(bsd2.jpg,noimg) |
| + | |
| + | |
| -また黒猫本のほうは以下を使用しました。 | | -また黒猫本のほうは以下を使用しました。 |
| --30日でできる!OS自作入門 第7刷 | | --30日でできる!OS自作入門 第7刷 |
| *環境を整える [#p981dbdc] | | *環境を整える [#p981dbdc] |
| -オイラがやっている方法だと、たぶんrootでなくてもOKのはずです。 | | -オイラがやっている方法だと、たぶんrootでなくてもOKのはずです。 |
- | -まずはとにかく、はりぼてCDの内容をコピーしておきます。全部じゃなくていいですよ。 | + | -まずは適当な専用のディレクトリを作っておいてください。 |
| + | $ cd ~ |
| + | $ mkdir haribote |
| + | |
| + | -続いて、はりぼてCDの内容をコピーしておきます。全部じゃなくていいですよ。 |
| $ mount /dev/cdrom /mnt ←まずはCDを読めるようにして | | $ mount /dev/cdrom /mnt ←まずはCDを読めるようにして |
- | $ mkdir ~/haribote ←ホームにでも適当に専用ディレクトリを作っておきます。 | + | 作っておきます。 |
| $ cp -R /mnt/projects/* ~/haribote/ ←projects内をまるごとコピーしておきます。 | | $ cp -R /mnt/projects/* ~/haribote/ ←projects内をまるごとコピーしておきます。 |
- | $ cp -R /mnt/tolset/z_tools ~/haribote/ ←z_toolsそのものをまるごとコピー。 | + | // $ cp -R /mnt/tolset/z_tools ~/haribote/ ←z_toolsそのものをまるごとコピー。 |
- | $ rm -f ~/haribote/z_tools/*.exe ←間違えるとイヤなのでWin用のコマンドを削除 | + | // $ rm -f ~/haribote/z_tools/*.exe ←間違えるとイヤなのでWin用のコマンドを削除 |
- | -最後に、haribote.rulファイルを変更してください。 | + | //-最後に、haribote.rulファイルを変更してください。 |
- | $ vi ~/haribote/z_tools/haribote/haribote.rul ←お好きなエディタで | + | // $ vi ~/haribote/z_tools/haribote/haribote.rul ←お好きなエディタで |
- | | + | // |
- | : | + | // : |
- | /* 例: c:/osask/gg00libc.lib; */ | + | // /* 例: c:/osask/gg00libc.lib; */ |
- | ../z_tools/haribote/harilibc.lib; | + | // ../z_tools/haribote/harilibc.lib; |
- | ../z_tools/haribote/golibc.lib; | + | // ../z_tools/haribote/golibc.lib; |
- | | + | // |
- | label: | + | // label: |
- | /* 必ずリンクしなければいけないラベルを指定 */ | + | // /* 必ずリンクしなければいけないラベルを指定 */ |
- | : | + | // : |
- | ↓↓↓ | + | // |
- | : | + | // ↓↓↓ |
- | /* 例: c:/osask/gg00libc.lib; */ | + | // |
- | ../../z_tools/haribote/harilibc.lib; | + | // : |
- | ../../z_tools/haribote/golibc.lib; | + | // /* 例: c:/osask/gg00libc.lib; */ |
- | | + | // ../../z_tools/haribote/harilibc.lib; |
- | label: | + | // ../../z_tools/haribote/golibc.lib; |
- | /* 必ずリンクしなければいけないラベルを指定 */ | + | // |
- | : | + | // label: |
- | | + | // /* 必ずリンクしなければいけないラベルを指定 */ |
- | | + | // : |
- | -以上でとりあえずはOKです。 | + | |
| | | |
| | | |
| + | **tolsetの用意 [#bf64f9e0] |
| + | -[[こちら:http://thebbl.hideyosi.com/age/tolset/tolset2.tar.gz]から、hideyosi版tolsetを入手します。 |
| + | -解凍してメイクすればOKのはずです。 |
| + | |
| + | make install 後にコマンド郡がまとまったokディレクトリをhariboteディレクトリの直下にz_toolsという名前で配置します。 |
| + | $ cp -a ok ../haribote/ ←例。各自環境にあわせて |
| + | $ cd ../haribote |
| + | $ ls |
| + | z_tools/ 22_day/ ← こういう状態にしておきます。 |
| + | 01_day/ 12_day/ 23_day/ |
| + | 02_day/ 13_day 24_day/ |
| + | : |
| + | : |
| | | |
- | -tolsetを準備します。 | |
- | -まず、同じようにCDからtolsetのソースをコピーしておきます。 | |
- | $ cp -R /mnt/omake/tolsrc ~/ ←場所はどこでもいいですがharibote内だとこんがらがるので・・・ | |
- | -次に[[このパッチ:http://thebbl.hideyosi.com/age/tolset.patch2]]をダウンロードしてtolsrcディレクトリの上に置きます。 | |
- | //-COLOR(red){''※''パッチは07/2/18現在のものです} | |
- | -COLOR(red){''※''新パッチを07/2/20公開しました。ページ内のリンク等は修正してあります。詳しくは[[こちら:http://thebbl.hideyosi.com/modules/bwiki/index.php?tolset]]をご覧ください。} | |
- | $ cd ~/ ←tolsrcの上で。 | |
- | $ wget http://http://thebbl.hideyosi.com/age/tolset.patch2 | |
- | -tolsrcに降り、パッチを当てます。 | |
- | $ cd ~/tolsrc | |
- | $ patch -p1 < ../tolset.patch2 | |
- | -パッチが当たったらMakefileが出来ているはずです。あとはそこでmakeあるいはgmakeを行ってください。コマンドがコンパイルされ、出来上がるはずです。 | |
- | $ make | |
- | $ make install | |
- | -make install を行うと、okというディレクトリが出来、その中に出来上がったコマンドが全部コピーされます。全部あるかどうかチェックしてください。 | |
- | $ ls ~/tolsrc/ok | |
- | bim2bin edimg gocc1plus makefont obj2bim | |
- | bim2hrb gas2nask gocpp0 nask sjisconv | |
- | bin2obj gocc1 golib00 naskcnv0 | |
| | | |
- | -全部出来上がっていたらOKです。これらをz_toolsにコピーしてください。 | |
- | $ cp ~/tolsrc/ok/* ~/haribote/z_tools/ | |
| | | |
- | -以上で準備はOKです。 | |
| | | |
| -COLOR(red){・・・あ” 当然ですが、qemuは別にインストールしておいてくださいね。・・・そうか!これはrootじゃないと出来ないんだっけ?(^^} | | -COLOR(red){・・・あ” 当然ですが、qemuは別にインストールしておいてくださいね。・・・そうか!これはrootじゃないと出来ないんだっけ?(^^} |
| | | |
| **1日目 [#y81f9302] | | **1日目 [#y81f9302] |
| + | -これ以降はすべてこのパターンとなるはずです。(違いがある時だけ書きます。) |
| + | |
| + | $ cd ~/haribote/01_day ←01_dayディレクトリに移動します。 |
| + | $ ls ←内容確認 |
| + | helloos0 helloos1 helloos2 |
| + | |
| + | $ wget http://thebbl.hideyosi.com/age/haribote/01day.patch ←パッチをゲット! |
| + | $ ls ←内容確認(パッチがあるぞ!) |
| + | 01day.patch helloos0 helloos1 helloos2 |
| + | |
| + | $ patch -p1 -f < 01day.patch ←パッチを適用! |
| + | |
| + | -以上です。 |
| + | -これで、1日目の全てが動かせるはずです。COLOR(red){(ただしmake installだけはダメ)} |
| + | |
| -helloos0 | | -helloos0 |
- | --これはまあ、なんもせんでも動くはず。qemuの実験を兼ねてやってみます。 | + | --ほぼ本と通りですが、コマンドがちょっとだけ違います。 |
- | --ディレクトリに降りて、qemuを実行。これは、本で言うところの'' run.bat''相当です。 | + | --実行コマンドは本では''run.bat''になっているはずですが、''run.sh''と読み替えてください。 |
| $ cd ~/haribote/01_day/helloos0 | | $ cd ~/haribote/01_day/helloos0 |
- | $ qemu -fda helloos.img & | + | $ ./run.sh |
| | | |
| | | |
| -helloos1 | | -helloos1 |
- | --本の通り、アセンブラで書かれたhelloos.nasをコンパイルするとhelloos.imgが出来上がる。(''asm.bat''相当) | + | --上と同じく、全てのコマンドを*.batから*.shに読み替えてください。 |
- | --あとはqemuで動かせる。(''run.bat''相当) | + | |
| $ cd ~/haribote/01_day/helloos1 | | $ cd ~/haribote/01_day/helloos1 |
- | $ ../../z_tools/nask helloos.nas helloos.img | + | $ ./asm.sh |
- | $ qemu -fda hellos.img & | + | $ ./run.sh |
| | | |
| | | |
| | | |
| | | |
| + | **2日目 [#h7fad81a] |
| + | -一日目と同じようにパッチを当てます。(01を02に読み替えてください。) |
| | | |
- | | |
- | **2日目 [#h7fad81a] | |
| -helloos3 | | -helloos3 |
| --helloos1と同じなので省略・・・ | | --helloos1と同じなので省略・・・ |
- | | |
| | | |
| -helloos4 | | -helloos4 |
| --P43。 | | --P43。 |
- | --asm.bat相当のコマンド | + | --はやり同じく読み替えます。 |
| $ cd ~/haribote/02_day/helloos4 | | $ cd ~/haribote/02_day/helloos4 |
- | $ ../../z_tools/nask ipl.nas ipl.bin ipl.lst | + | $ ./asm.sh |
- | --makeimg.bat相当 | + | $ ./makeimg.sh |
- | $ ../../z_tools/edimg imgin:../../z_tools/fdimg0at.tek wbinimg \ | + | $ ./run.sh |
- | src:ipl.bin len:512 from:0 to:0 imgout:helloos.img | + | |
- | --あとは同じく、出来上がったイメージをqemuで実行。 | + | |
- | $ qemu -fda helloos.img & | + | |
| | | |
| -helloos5 | | -helloos5 |
- | --ここからはMakefileが登場する。修正点をいちいち書いていたのではかなわないのでパッチを当てるようにする。 | + | --ここからはMakefileが登場します。ほぼ本の通りにできるはずです。 |
- | $ cd ~/haribote/02_day/helloos5 ←目的のディレクトリに降りる | + | $ cd ~/haribote/02_day/helloos5 ←目的のディレクトリに降りる |
- | $ wget http://thebbl.hideyosi.com/age/02/helloos5.patch ←パッチをゲット! | + | $ make ←コンパイル |
- | $ ls ←パッチがあることを確認 | + | $ make run ←qemuで実行 |
- | !cons_9x.bat Makefile make.bat | + | $ make clean ←作ったものを削除 |
- | !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] | | **3日目 [#ub67a2ff] |
- | えーっと。これ以降は修正点もたくさんあるので一気にパッチ当てとなります。 | + | -パッチを当てます。 |
- | | + | $ cd ~/haribote/03_day ←03_dayディレクトリに移動します。 |
- | おそらくこれ以降はすべてこのパターンとなるはずです。(違いがある時だけ書きます。) | + | $ ls ←内容確認 |
- | | + | |
- | | + | |
- | $ cd ~/haribote/03_day ←03_dayディレクトリに移動します。 | + | |
- | $ ls ←内容確認 | + | |
| harib00a harib00d harib00g harib00j | | harib00a harib00d harib00g harib00j |
| harib00b harib00e harib00h | | harib00b harib00e harib00h |
| harib00c harib00f harib00i | | harib00c harib00f harib00i |
- | $ wget http://thebbl.hideyosi.com/age/03/03day.patch ←パッチをゲット! | + | $ wget http://thebbl.hideyosi.com/age/haribote/03day.patch ←パッチをゲット! |
| $ ls ←内容確認(パッチがあるぞ!) | | $ ls ←内容確認(パッチがあるぞ!) |
| 03day.patch harib00c harib00f harib00i | | 03day.patch harib00c harib00f harib00i |
| | | |
| **4日目 [#z757de49] | | **4日目 [#z757de49] |
- | -上記3日目と同じ手順です。03_dayを04_dayに読み替えてください。 | + | -上記3日目と同じ手順です。03を04に読み替えてください。 |
- | | + | |
- | $ 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に読み替えてください。 | + | |
| | | |
| | | |
| | | |
| -COLOR(red){harib25gからmakeのコマンドが変わっています。本の通りですがインストール関係(make installとmake fulll_install)は例によって使えません。おのおのmakeかmake fullで作成したイメージファイルをddで処理してください。} | | -COLOR(red){harib25gからmakeのコマンドが変わっています。本の通りですがインストール関係(make installとmake fulll_install)は例によって使えません。おのおのmakeかmake fullで作成したイメージファイルをddで処理してください。} |
- | | |
- | --ついで。28日目をスクリーンショット!(これはFreeBSD上で) | |
- | #ref(bsd2_s.jpg) | |
- | | |
| | | |
| **29日目 [#f190fe5e] | | **29日目 [#f190fe5e] |
| -上記3日目と同じ手順です。03_dayを30_dayに読み替えてください。 | | -上記3日目と同じ手順です。03_dayを30_dayに読み替えてください。 |
| | | |
- | | |
- | | |
- | --でかいのは[[ここ:http://thebbl.hideyosi.com/modules/bwiki/index.php?plugin=attach&pcmd=open&file=bsd2.jpg&refer=ltmake]]クリック〜。 | |
- | | |
- | | |
- | | |
- | //*これ以降は?? [#qe367f5b] | |
- | //-申し訳ない。いまちょっと移植に問題が出ていて、29日目が正常に動作しません。なんとかがんばっておりますが・・・ | |
- | //-もし全部うまくいったら、上記のように何回もパッチ当てないで一気にドン!みたいなの作るつもりです〜。 | |
| | | |
| | | |
| -なんでmake install関係がないんだ! | | -なんでmake install関係がないんだ! |
| --あえてそうしてあります。UNIX系はddで代用できますが、パーミッション等の問題が出ることがあるのでわざとそうしてあります。 | | --あえてそうしてあります。UNIX系はddで代用できますが、パーミッション等の問題が出ることがあるのでわざとそうしてあります。 |
- | | |
- | | |
- | -圧縮後のサイズが大きいようだが?? | |
- | --細かく検証していないのですが、29日目から圧縮が導入され、その成果が本に書いてありますよね?。おそらくそれらの値とはズレがあると思います。 | |
- | --最大の理由は、t5lzmaというコマンドがまだ移植できていないことです。 | |
- | --tekの圧縮はbim2binというコマンドで行うのですが、tekは1〜5までの種類があります。本では最大の効果を狙ってtek5を使うことで話を進めていますが、tek5を使おうとすると、bim2binは内部からt5lzmaを呼び出して使用しようとするのです。 | |
- | --これに対してtek2はbim2binが単独で行えるものなので、圧縮に関してはすべてtek2に切り替えてあります。 | |
- | --いずれt5lzmaが移植されればこの問題はなくなるのですが、現在ちょっと見通しが立っていないため、暫定措置としてtek2を利用していますので、ご了承ください。 | |