8: 2007-02-22 (木) 21:38:31 |
現: 1970-01-01 (木) 18:00:00 |
- | -linuxおよびFreeBSDで「30日でできる!OS自作入門」を進めていけないかと思い、いろいろやってみました。 | |
- | -ウチでの実験は、 | |
- | --FreeBSD 5.5 | |
- | --VineLinux4.0 | |
- | -にて行いました。いずれもほぼ最新のソフトにアップグレードしてあります。 | |
- | --また、ほぼ同じ状態でMacOS Xでも実行が確認されたようです。 | |
| | | |
- | -また黒猫本のほうは以下を使用しました。 | |
- | --30日でできる!OS自作入門 第7刷 | |
- | | |
- | | |
- | //COLOR(red){'07/2/18現在、まだ完璧ではありません。いくつか問題があります。特に、29日目以降は問題がでて本のとおりにいきません} | |
- | COLOR(red){'07/2/20現在、とりあえず全部の日付のものがmake、make runできるようになりました。ただ、すこし問題があります。一番最後をご覧ください。} | |
- | | |
- | | |
- | | |
- | *環境を整える [#p981dbdc] | |
- | -オイラがやっている方法だと、たぶんrootでなくてもOKのはずです。 | |
- | -まずは適当な専用のディレクトリを作っておいてください。 | |
- | $ cd ~ | |
- | $ mkdir haribote | |
- | | |
- | -続いて、はりぼてCDの内容をコピーしておきます。全部じゃなくていいですよ。 | |
- | $ mount /dev/cdrom /mnt ←まずはCDを読めるようにして | |
- | 作っておきます。 | |
- | $ 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 ←お好きなエディタで | |
- | | |
- | : | |
- | /* 例: c:/osask/gg00libc.lib; */ | |
- | ../z_tools/haribote/harilibc.lib; | |
- | ../z_tools/haribote/golibc.lib; | |
- | | |
- | label: | |
- | /* 必ずリンクしなければいけないラベルを指定 */ | |
- | : | |
- | | |
- | ↓↓↓ | |
- | | |
- | : | |
- | /* 例: c:/osask/gg00libc.lib; */ | |
- | ../../z_tools/haribote/harilibc.lib; | |
- | ../../z_tools/haribote/golibc.lib; | |
- | | |
- | label: | |
- | /* 必ずリンクしなければいけないラベルを指定 */ | |
- | : | |
- | | |
- | | |
- | -続いてtolsetの用意です。 | |
- | -[[こちら:http://thebbl.hideyosi.com/modules/mydownloads/viewcat.php?cid=1]]より、hideyosi版tolsetをダウンロードし、専用ディレクトリ内においてください。 | |
- | $ cd ~/haribote | |
- | $ ls | |
- | hidetol1.tar.gz z_tools/ 22_day/ ← こういう状態にしておきます。 | |
- | 01_day/ 12_day/ 23_day/ | |
- | 02_day/ 13_day 24_day/ | |
- | : | |
- | : | |
- | | |
- | -解凍し、コンパイルします。 | |
- | $ tar xzvf hidetol1.tar.gz | |
- | : | |
- | : | |
- | $ ls | |
- | hidetol1.tar.gz z_tools/ hidetol1/ | |
- | 01_day/ 12_day/ 23_day/ | |
- | 02_day/ 13_day 24_day/ | |
- | : | |
- | : | |
- | | |
- | | |
- | $ cd hidetol1/ | |
- | $ ls | |
- | Makefile bim2hrb go_0023s obj2bi4d sartol0j | |
- | aksa1a bin2obj0 hrblib0a ok t5lzma | |
- | aska doscmd0a imgtol0d osalink1 tk5lgpl1 | |
- | bim2bi4w edimg0i makefont readme.txt | |
- | | |
- | $ make | |
- | | |
- | -エラーなくコンパイルできたら、できあがったコマンド群をまとめます。 | |
- | $ make install | |
- | $ ls ok/ | |
- | bim2bin gocc1plus makefont sjisconv | |
- | bim2hrb gocpp0 nask t5lzma | |
- | bin2obj gas2nask golib00 naskcnv0 | |
- | edimg gocc1 haribote obj2bim | |
- | | |
- | -これでtolsetの準備は完了です。最後に出来上がったtolsetをz_toolsにコピーして起きます。 | |
- | | |
- | $ cp ok/* ~/haribote/z_tools/ | |
- | | |
- | -以上で準備はOKです。 | |
- | | |
- | -COLOR(red){・・・あ” 当然ですが、qemuは別にインストールしておいてくださいね。・・・そうか!これはrootじゃないと出来ないんだっけ?(^^} | |
- | | |
- | *動かしてみよう [#na7cd182] | |
- | -COLOR(red){''※'' なお、以降、本でいうところのinstall(FDに書き込む)はすべて未検証となります。} | |
- | | |
- | -COLOR(red){''※'' わこうメモによると、dd if=helloos.img of=/dev/fd0 でFDにインストールし、実機で動作できるらしいです。} | |
- | | |
- | | |
- | **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 | |
- | --ほぼ本と通りですが、コマンドがちょっとだけ違います。 | |
- | --実行コマンドは本では''run.bat''になっているはずですが、''run.sh''と読み替えてください。 | |
- | $ cd ~/haribote/01_day/helloos0 | |
- | $ ./run.sh | |
- | | |
- | | |
- | -helloos1 | |
- | --上と同じく、全てのコマンドを*.batから*.shに読み替えてください。 | |
- | $ cd ~/haribote/01_day/helloos1 | |
- | $ ./asm.sh | |
- | $ ./run.sh | |
- | | |
- | | |
- | -helloos2 | |
- | --helloos1と同じなので省略・・・ | |
- | | |
- | | |
- | **2日目 [#h7fad81a] | |
- | -一日目と同じようにパッチを当てます。(01を02に読み替えてください。) | |
- | | |
- | -helloos3 | |
- | --helloos1と同じなので省略・・・ | |
- | | |
- | -helloos4 | |
- | --P43。 | |
- | --はやり同じく読み替えます。 | |
- | $ cd ~/haribote/02_day/helloos4 | |
- | $ ./asm.sh | |
- | $ ./makeimg.sh | |
- | $ ./run.sh | |
- | | |
- | -helloos5 | |
- | --ここからはMakefileが登場します。ほぼ本の通りにできるはずです。 | |
- | $ cd ~/haribote/02_day/helloos5 ←目的のディレクトリに降りる | |
- | $ make ←コンパイル | |
- | $ make run ←qemuで実行 | |
- | $ make clean ←作ったものを削除 | |
- | | |
- | | |
- | **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/haribote/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を04に読み替えてください。 | |
- | | |
- | | |
- | : | |
- | | |
- | : | |
- | | |
- | : | |
- | | |
- | **27日目 [#r797a1ca] | |
- | -上記3日目と同じ手順です。03_dayを27_dayに読み替えてください。 | |
- | | |
- | **28日目 [#f190fe5e] | |
- | -上記3日目と同じ手順です。03_dayを28_dayに読み替えてください。 | |
- | | |
- | -COLOR(red){harib25gからmakeのコマンドが変わっています。本の通りですがインストール関係(make installとmake fulll_install)は例によって使えません。おのおのmakeかmake fullで作成したイメージファイルをddで処理してください。} | |
- | | |
- | **29日目 [#f190fe5e] | |
- | -上記3日目と同じ手順です。03_dayを29_dayに読み替えてください。 | |
- | | |
- | | |
- | **30日目 [#f190fe5e] | |
- | -上記3日目と同じ手順です。03_dayを30_dayに読み替えてください。 | |
- | | |
- | | |
- | | |
- | ---- | |
- | *積み残しの問題 [#z9103cca] | |
- | -なんでmake install関係がないんだ! | |
- | --あえてそうしてあります。UNIX系はddで代用できますが、パーミッション等の問題が出ることがあるのでわざとそうしてあります。 | |