雑記帳
ここはhideyosiの雑記帳です。テケトーに書き散らしてるだけなので間違っていたりとは普通にしてます。信用度は相当低いことをあらかじめご了承を。またご覧のようにWikiを使ってますが、hideyosi意外は書き込めません。
7: 2007-02-20 (火) 19:56:54 ソース バックアップ No.7 を復元して編集 現: 2024-01-06 (土) 22:39:10 ゲスト[RkE6jyzwW4E] ソース 編集
Line 2: Line 2:
-ウチでの実験は、 -ウチでの実験は、
--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刷
Line 15: Line 22:
*環境を整える [#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じゃないと出来ないんだっけ?(^^}
Line 81: Line 82:
**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
Line 102: Line 115:
 +**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
Line 172: Line 156:
**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に読み替えてください。 +
Line 212: Line 172:
-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]
Line 224: Line 180:
-上記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日目が正常に動作しません。なんとかがんばっておりますが・・・ 
-//-もし全部うまくいったら、上記のように何回もパッチ当てないで一気にドン!みたいなの作るつもりです〜。 
Line 239: Line 186:
-なんでmake install関係がないんだ! -なんでmake install関係がないんだ!
--あえてそうしてあります。UNIX系はddで代用できますが、パーミッション等の問題が出ることがあるのでわざとそうしてあります。 --あえてそうしてあります。UNIX系はddで代用できますが、パーミッション等の問題が出ることがあるのでわざとそうしてあります。
- 
- 
--圧縮後のサイズが大きいようだが?? 
---細かく検証していないのですが、29日目から圧縮が導入され、その成果が本に書いてありますよね?。おそらくそれらの値とはズレがあると思います。 
---最大の理由は、t5lzmaというコマンドがまだ移植できていないことです。 
---tekの圧縮はbim2binというコマンドで行うのですが、tekは1〜5までの種類があります。本では最大の効果を狙ってtek5を使うことで話を進めていますが、tek5を使おうとすると、bim2binは内部からt5lzmaを呼び出して使用しようとするのです。 
---これに対してtek2はbim2binが単独で行えるものなので、圧縮に関してはすべてtek2に切り替えてあります。 
---いずれt5lzmaが移植されればこの問題はなくなるのですが、現在ちょっと見通しが立っていないため、暫定措置としてtek2を利用していますので、ご了承ください。