雑記帳
ここはhideyosiの雑記帳です。テケトーに書き散らしてるだけなので間違っていたりとは普通にしてます。信用度は相当低いことをあらかじめご了承を。またご覧のようにWikiを使ってますが、hideyosi意外は書き込めません。
5: 2007-02-07 (水) 14:22:59 ソース バックアップ No.5 を復元して編集 現: 2024-01-06 (土) 22:39:09 ソース 編集
Line 1: Line 1:
-ちょっと脱線の企画・・・(^^;+COLOR(red){''※'' ここは移植の検証やレポートを書いている場所です。LinuxやFreeBSD上ではりぼてOSのコンパイルを行いたい方は、[[こちらのページ:http://thebbl.hideyosi.com/modules/bwiki/index.php?ltmake]]に移動してください。現時点で行える手順やパッチをまとめてあります。} 
 +
 +
 +
 +
 +----
 +
 +
 +ちょっと脱線の企画・・・(^^;
 +----
*バージョン [#n4af26bb] *バージョン [#n4af26bb]
-せっかくなので、安定版の最新版5.5をまっさらにで導入してみよー! -せっかくなので、安定版の最新版5.5をまっさらにで導入してみよー!
Line 8: Line 17:
ちょっと思ったこと。FreeBSDはかつて、Linuxに比べてドキュメントが豊富でまとまっているというのがウリだったと思う。しかし、ひさしぶりにインストールした5.5にはそれはもはや当てはまらないと思う。ports等の使い方や規格が沢山あり、かつ、それらがまったく順を追っていないのだ。つまりシロウトが検索を頼りに文章を読んでいくと、余計な混乱や致命的な失敗を犯すおそれがあると感じた。(もちろん、たまたまここ一年くらいが過渡期なのかもしれないが) ちょっと思ったこと。FreeBSDはかつて、Linuxに比べてドキュメントが豊富でまとまっているというのがウリだったと思う。しかし、ひさしぶりにインストールした5.5にはそれはもはや当てはまらないと思う。ports等の使い方や規格が沢山あり、かつ、それらがまったく順を追っていないのだ。つまりシロウトが検索を頼りに文章を読んでいくと、余計な混乱や致命的な失敗を犯すおそれがあると感じた。(もちろん、たまたまここ一年くらいが過渡期なのかもしれないが)
--さて、qemuを導入できた。ちゃんと動くかどうか、とにもかくにもはりぼての最終版を当てて起動してみよう!+-さて、qemuを導入できた。ちゃんと動くかどうか、とにもかくにもはりぼての最終版を当$てて起動してみよう!
-あっさりOK。つまり、qemuはOKというわけだ! -あっさりOK。つまり、qemuはOKというわけだ!
-*tolset [#ucfdd0dd] 
-さて、それではtolset。こいつらがちゃんと動いてくれるか? ダメなら移植作業がいるよね? 
-~ 
-・・・ま、どっちみちメイクが通らないことにはどうしようもないわけで、とにもかくにもまず、メイクを全ツールで通そうじゃないか。 
 +COLOR(red){ちと仕切りなおし!古いのは[[FreeBSDではりぼて!/OLD]]に移動〜}
-#ls2(FreeBSDではりぼて!/,)+---- 
 +*tolset移植 [#f7945ca6] 
 +-まずははりぼてCDに入っているtolset(Win版)をBSDに移植。 
 +-[[FreeBSDではりぼて!/tolset移植]] 
 +-移植状況 
 +|Winコマンド|状況|備考|実行実績|h 
 +|aksa.exe|たぶんOK||| 
 +|aska.exe|たぶんOK||| 
 +|bim2bin.exe|たぶんOK||| 
 +|bim2hrb.exe|たぶんOK||OK| 
 +|bin2obj.exe|たぶんOK||OK| 
 +|cc1.exe|たぶんOK||OK| 
 +|cpp0.exe|たぶんOK||| 
 +|edimg.exe|たぶんOK||OK| 
 +|gas2nask.exe|たぶんOK||OK| 
 +|golib00.exe|たぶんOK||| 
 +|makefont.exe|たぶんOK||OK| 
 +|nask.exe|たぶんOK||OK| 
 +|naskcnv0.exe|たぶんOK||| 
 +|nothing.com|OK|つか、作った|| 
 +|obj2bim.exe|たぶんOK||OK| 
 +|osalink1.exe|たぶんOK||| 
 +|sjisconv.exe|たぶんOK||| 
 +|make.exe|×|純正がある|| 
 +|ld.exe|×|gccで代用|| 
 +|imgtol.com|×|ddで代用可能らしい|OK(ddで)| 
 +|comcom.exe|×|ソース失念?|| 
 +|doscmd.exe|×|つか、いらないようだ|| 
 +|sartol.exe|×||| 
 +|t5lzma.exe|×||| 
 +|upx.exe|×||| 
 +|wce.exe|×||| 
 + 
 + 
 +*1日目 [#gdbea45f] 
 +-これだけコマンドが揃ったし、そろそろ実際に実験してみようかな・・・ 
 +-まずは1日目。P18の作業だね。01_day/helloos0 実際にできるかな。 
 +--たはは・・・あっさりうまくいってしまった。(まあこれは当然かな??) 
 + 
 +-ほい次。P24。01_day/helloos1 。いよいよnaskの登場だ・・・ 
 +--うほぉ! なんかうまく起動したみたいだぞ! 
 +--つーことはさ。まだ「たぶん」だけどさ。nask、OKっぽいよね??(^^ 
 + 
 +-気をよくしてP26。01_day/helloos2 もやっちゃえ!。さて・・・ 
 +--わーっはっは!いけたいけた! 
 +--nask、だいじょうぶみたいじゃん!! 
 + 
 +-・・・そうなると課題は、バッチファイルだよね。あと、今回はnaskのパスを作業場所から直接もってきたけど、どっかにまとめておいたほうがいいよなぁ。 
 + 
 +-おっと!いけない!うっかりしてた。 
 +-シバシバっと実験してたので、今回はFDにインスコしてないんだよなぁ。これじゃimgtolの実験ができない。(まあ実際はimgtolは移植不可なんだけどね) 
 +-ええと、imgtolの代用品は・・・[[わこうさんの、わこうメモ:http://hrb.osask.jp/wiki/index.php?Linux%2Fwako_memo]]によると、ddが使えるらしい。 
 +-どれどれっと・・・ 
 +--うほ〜!いけた! やった!! OK! 
 + 
 +*2日目 [#o23ed8f8] 
 +-さて2日目。P30の 02_day/hallool3 。 
 +--とんとーんとOK。 
 + 
 +-P43。 02_day/hallool4。 お? edimg か。さてさて・・・ 
 +--あー。fdimg-at.tekがいるのか!もってこないと・・・ 
 +--おぉ!これもいけた! えっと。つーことは、edimg も「たぶんOK」でいいのかな?? 
 + 
 +-P45。 02_day/hallool5。 こらもう、言わんでも解るやろ! 
 + 
 +-そんなわけで2日目完了〜。 
 + 
 + 
 +*3日目 [#aed96907] 
 +-・・・悪いけど、ここはFreeBSD版tolsetの実験場所なので、harib00a〜harib00d までは飛ばすよ〜ん。(やってること同じだもんね) 
 + 
 +-P58。03_day/harib00e。いよいよ複数ソースのリンクだね。 
 +--ふむ・・・。ipl.binとharibote.sysをDOSのコピーコマンドで連結?してるのか。同じことをするには・・・・ 
 +--おぉ!またしても[[わこうメモ:http://hrb.osask.jp/wiki/index.php?Linux%2Fwako_memo]]にヒントが! なになに? catと使うって??? 
 +--んんん?ちょっとちがうぞ? イメージ内にコピーするのか!? 
 +--あー。完全に勘違いしてた。この場合のcopyはあくまでもedimg内の命令なのか!なので、Makefileそのままの命令で出来上がった!(ちゃんとバイナリエディタで確認したよ。(^^ 
 +--まあ一応、qemuでも実験・・・(なんも変化がないのでちょっとさみしいね。) 
 + 
 +-harib00f〜harib00h は飛ばして・・・ 
 + 
 +-P66。03_day/harib00j。さーて。いよいよ他のツールが必要になってきた。いけるかな?? 
 +--さてMakefileを追いかけてみる。 
 +---ipl.nasはnaskで.binに。 
 +---asmhead.nasもnaskで.binに。 
 +---naskfunc.nasのnaskで.binに。 
 +---bootpack.cは cc1 -I../haribote/ -Os -Wall -quiet -o bootpack.gas で.gasに。 
 +---bootpack.gasはgas2nask -aで.nasに。 
 +---bootpack.nasはnaskで.objに。 
 +---bootpack.objはobj2bim @Rulefile out:bootpack.bimなんちゃらで、.bimに。 
 +---bootpack.bimは、bim2hrbで.hrbに 
 +---asmhead.binとbootpack.hrbをcopyコマンドで連結してharibote.sysに。 
 +---ipl.binとharibote.sysをedimgで書き込み、haribote.imgに 
 +--うひゃ〜。こりゃ大変だ。(^^; 
 +--そろそろ手動でやるのもつらくなってきたので環境を少し整理。 
 +--まず、現時点で出来上がっている各コマンドを、~/z_toolsにコピー。 
 +--z_toolsにはhariboteディレクトリとその内容物が必要らしいので、CDから持ってくる。 
 +--で、Makefileを書き直してと。よーし! gmake! 
 +--何点か問題が出たけど、とりあえず本の通り、「真っ黒クロスケ」の画面になった!成功くさい!(一瞬だけ、boot from・・なんて文字が出たあと、パっと真っ黒になったのだ) 
 + 
 +--さてとりあえずは成功。でもけっこうハマッたんだよね。つまらないことだけど。 
 +---まず、Makefile内のディレクトリの指定。オイラは最初、自分のホームをあらわす~を使っていた。(~/z_tools とか)これがどうも全滅なんだよね。なので、元のように../でOKになるようにz_toolsの位置を配置しないといけない。もしくは絶対パス。いろいろ実験したけど、とにかく~だけはダメってことみたい。 
 +---同じ原因で、haribote.rul内のディレクトリ指定も、../とか絶対パスじゃないといけないみたい。(おのおの調整してチョンマゲ) 
 +---そんなわけで、この「とりあえずのMakefile」の内容を公開。(qemuのrunとか弄ってないので。あくまでもmakeでharibote.imgを作るとこまで。) 
 + TOOLPATH = ../z_tools/ 
 + INCPATH  = ../z_tools/haribote/ 
 +  
 + MAKE    = gmake 
 + NASK    = $(TOOLPATH)nask 
 + CC1      = $(TOOLPATH)cc1 -I$(INCPATH) -Os -Wall -quiet 
 + GAS2NASK = $(TOOLPATH)gas2nask -a 
 + OBJ2BIM  = $(TOOLPATH)obj2bim 
 + BIM2HRB  = $(TOOLPATH)bim2hrb 
 + RULEFILE = $(TOOLPATH)haribote/haribote.rul 
 + EDIMG    = $(TOOLPATH)edimg 
 + IMGTOL  = dd 
 + COPY    = cp 
 + DEL      = rm -f 
 +  
 + # デフォルト動作 
 +  
 + default : 
 +         $(MAKE) img 
 +  
 + # ファイル生成規則 
 +  
 + ipl10.bin : ipl10.nas Makefile 
 +         $(NASK) ipl10.nas ipl10.bin ipl10.lst 
 +  
 + asmhead.bin : asmhead.nas Makefile 
 +         $(NASK) asmhead.nas asmhead.bin asmhead.lst 
 +  
 + bootpack.gas : bootpack.c Makefile 
 +         $(CC1) -o bootpack.gas bootpack.c 
 +  
 + bootpack.nas : bootpack.gas Makefile 
 +         $(GAS2NASK) bootpack.gas bootpack.nas 
 +  
 + bootpack.obj : bootpack.nas Makefile 
 +         $(NASK) bootpack.nas bootpack.obj bootpack.lst 
 +  
 + naskfunc.obj : naskfunc.nas Makefile 
 +         $(NASK) naskfunc.nas naskfunc.obj naskfunc.lst 
 +  
 + bootpack.bim : bootpack.obj naskfunc.obj Makefile 
 +         $(OBJ2BIM) @$(RULEFILE) out:bootpack.bim stack:3136k map:bootpack.map \ 
 +                 bootpack.obj naskfunc.obj 
 + # 3MB+64KB=3136KB 
 +  
 + bootpack.hrb : bootpack.bim Makefile 
 +         $(BIM2HRB) bootpack.bim bootpack.hrb 0 
 +  
 + haribote.sys : asmhead.bin bootpack.hrb Makefile 
 +         cat asmhead.bin bootpack.hrb >haribote.sys 
 +  
 + haribote.img : ipl10.bin haribote.sys Makefile 
 +         $(EDIMG)  imgin:$(TOOLPATH)fdimg0at.tek \ 
 +                 wbinimg src:ipl10.bin len:512 from:0 to:0 \ 
 +                 copy from:haribote.sys to:@: \ 
 +                 imgout:haribote.img 
 +  
 + # コマンド 
 +  
 + img : 
 +         $(MAKE) haribote.img 
 +  
 + run : 
 +         $(MAKE) img 
 +         $(COPY) haribote.img ..\z_tools\qemu\fdimage0.bin 
 +         $(MAKE) -C ../z_tools/qemu 
 +  
 + install : 
 +         $(MAKE) img 
 +         $(IMGTOL) if=/dev/fd0 of=haribote.img bs=512 count=2880 
 +  
 + clean : 
 +         -$(DEL) *.bin 
 +         -$(DEL) *.lst 
 +         -$(DEL) *.gas 
 +         -$(DEL) *.obj 
 +         -$(DEL) bootpack.nas 
 +         -$(DEL) bootpack.map 
 +         -$(DEL) bootpack.bim 
 +         -$(DEL) bootpack.hrb 
 +         -$(DEL) haribote.sys 
 +  
 + src_only : 
 +         $(MAKE) clean 
 +         -$(DEL) haribote.img 
 + 
 +-さーて。これがうまくいっているってことは以下のコマンド郡は「たぶんOK」に昇格だぜ! 
 +--cc1 
 +--gas2nask 
 +--obj2bim 
 +--bim2hrb 
 + 
 +*ちょっと一息・・・ [#ec5030c4] 
 +-さて、この一連の作業はなにをしているかっていうと、tolsetがFreeBSDで使えるか。FreeBSDで「30日で出来る!OS自作入門」を進めていけるか。ということの検証。 
 +-そう考えると、現時点ではまだいくつかのtolsetのコマンドの移植が未完だけど、実はhariboteでは使われていないものも結構あるよね。 
 +-なので、そいつらをちょっと洗い直し。(初出順に並べ替え) 
 + 
 +|Winコマンド|移植状況|Makefile内初出|実行実績|h 
 +|imgtol.com|×|1日目|OK(ddで)| 
 +|nask.exe|ほぼOK|1日目|OK| 
 +|bim2hrb.exe|ほぼOK|3日目|OK| 
 +|edimg.exe|ほぼOK|3日目|OK| 
 +|gas2nask.exe|たぶんOK|3日目|28日で問題発生?| 
 +|obj2bim.exe|ほぼOK|3日目|OK| 
 +|cc1.exe|ほぼOK|3日目|OK| 
 +|bin2obj.exe|ほぼOK|5日目|OK| 
 +|makefont.exe|ほぼOK|5日目|OK| 
 +|golib00.exe|ほぼOK|27日目|OK| 
 +|bim2bin.exe|たぶんOK|29日|| 
 +|aksa.exe|たぶんOK|×|| 
 +|aska.exe|たぶんOK|×|| 
 +|cpp0.exe|たぶんOK|×|| 
 +|naskcnv0.exe|たぶんOK|×|| 
 +|nothing.com|OK|×|| 
 +|osalink1.exe|たぶんOK|×|| 
 +|sjisconv.exe|たぶんOK|×|| 
 +|comcom.exe|×|×|| 
 +|doscmd.exe|×|×|| 
 +|sartol.exe|×|×|| 
 +|t5lzma.exe|×|×|| 
 +|upx.exe|×|×|| 
 +|wce.exe|×|×|| 
 + 
 +-そんなわけで、これを参考にあとはかいつまんでチェックしていこうっと。 
 +-(あれでも、他のツール。make以外でもし使用されてたら誰か教えてチョンマゲ。もういっかいぜーんぶ読むのはキツイです〜) 
 + 
 +*5日目 [#aba1a18a] 
 +-さてそんなわけで、大変申し訳ありまへんがすっ飛ばして5日目〜。 
 +-P110。 05_day/harib02i。 
 +--わはは! あっさりOKじゃん!!(^^ 
 +--そんなわけでbin2objとmakefontはOK〜。 
 +--せっかくなのでスクリーンショット掲載〜 
 +#ref(bsd_s.jpg) 
 +--デカイのは[[ここ:http://thebbl.hideyosi.com/modules/bwiki/index.php?plugin=attach&pcmd=open&file=bsd1.jpg&refer=FreeBSD%A4%C7%A4%CF%A4%EA%A4%DC%A4%C6%A1%AA]]クリック〜 
 + 
 +-ついで〜。Linuxでもできました〜。 
 +#ref(lin_s.jpg) 
 +--デカイのは[[ここ:http://thebbl.hideyosi.com/modules/bwiki/index.php?plugin=attach&pcmd=open&file=lin1.jpg&refer=FreeBSD%A4%C7%A4%CF%A4%EA%A4%DC%A4%C6%A1%AA]]クリック〜 
 + 
 + 
 +*10日目 [#n1bf6d7f] 
 +-さて〜。なんとな〜く10日目もやりますか。 
 +-P210。10_day/harib07d。(マウスが動いてるので楽しみ) 
 +--うほほ〜い! これも問題なーし!(マウス動く〜(^^ ) 
 + 
 + 
 +*15日目 [#d4742b59] 
 +-どーんとすっとばして15日目〜。 
 +-P307。15_day/harib12g。(いよいよマルチタスク!) 
 +--いけたいけた〜。よーし!どんどんいくぞ〜! 
 + 
 +*20日目 [#g10d6361] 
 +-さらにすっとばして20日目〜。 
 +-P415。20_day/harib17h。 
 +--これまた問題な〜し 
 + 
 +*25日目 [#v20669aa] 
 +-ラストスパート。25日目〜。 
 +-P536。25_day/harib22j。そうだ!そのとおり!もっとOSらしく! 
 +--問題な〜し。アプリも動くぞ〜! 
 + 
 +*28日目 [#n8b2d3d7] 
 +-P622。28_day/harib25g。 
 +--ありゃりゃ? ちょっとおかしいぞ?これ? 
 +--あーー! そうか!Makefileで下の階層に行くようになったのか!だからうまくいかなかったのだ! 
 +--シコシコと各Makefileを直してと・・・ 
 +--いけたーーー!-------------(゚∀゚)------------- 
 + 
 +*29日目 [#kb429271] 
 +-P644。29_day/harib16e。 
 +--エラーーーーーー!!!! 
 +--ちょっとどうしてもアカンエラーが出たのでMakefile細工して無理やり通したけど、コンソールで文字がまったく表示されないって状態になっちゃった・・・・ 
 +--なんじゃろう??。これ? gas2naskの問題?それとも?? 
 + ../../../z_tools/gas2nask -a tek.gas tek.nas 
 + skip:shrdl      $16, %edx, %eax 
 + gmake[1]: *** [tek.nas] Error 1 
 + 
 + 
 + 
 +-えーーっと。tek.cは29日から導入された圧縮の関数だよね。で、これは 
 +--cc1 を使い、.gasに変換 
 +--gas2naskを使い、.nas に変換。 
 +-で、このときにエラーが出ていると・・・ 
 +-どれどれ・・・.gasって、テキストで覗けるんだっけ?? 
 +-おお!覗ける。で、あったあった・・・。出来上がっている.gasの925行目。 
 +                 : 
 +       movl    -16(%ebp), %eax 
 +       mull    %ecx 
 +       shrdl  $16, %edx, %eax   <-これだ! 
 +       shrl    $16, %edx 
 +       movl    %eax, -32(%ebp) 
 +       movl    %edx, -28(%ebp) 
 +                 : 
 + 
 +-さて、ここでしばし考察。 
 +--これ、Windows版だとエラーにならないんだよね?(当たり前だけど) 
 +--Windows版のほうだと、このtek.gasはどうなっているんだろう。 
 +--もし同じなら、cc1は問題なし。gas2naskに問題があるといえる。違っていたらcc1に問題があるということかな??? 
 +--どれどれっと・・・ 
 +--がーーん! ''まったく同じ''じゃないか! そうすると、移植版のgas2naskに問題があるのか! 
 + 
 +-・・・おんやあぁぁぁ????  同じパッチで作ったLinux版だと、このエラーは出てこないぞ??? 
 +--Linux版。これはVineLinux4.0。gccは 
 + $ gcc -v 
 + /usr/lib/gcc-lib/i386-vine-linux/3.3.6/specs から spec を読み込み中 
 + コンフィグオプション: ../configure --prefix=/usr --mandir=/usr/share/man 
 + --infodir=/usr/share/info --enable-shared --enable-threads=posix 
 + --disable-checking --with-system-zlib --enable-__cxa_atexit 
 + --host=i386-vine-linux 
 + スレッドモデル: posix 
 + gcc バージョン 3.3.6 release (Vine Linux 3.3.6-0vl7) 
 +--FreeBSD版は5.5で 
 + $ gcc -v 
 + Using built-in specs. 
 + Configured with: FreeBSD/i386 system compiler 
 + Thread model: posix 
 + gcc version 3.4.2 [FreeBSD] 20040728 
 + 
 +-ふーむ・・・gccのバージョンの問題だろうか???Linuxのほうを3.4にして実験してみるかな?? 
 +-いやぁ!待った待った!! Linux版でも、エラーこそ出ないでコンパイルできたけど、やっぱりコンソールがなにも表示されない状態になっている!!!やっぱりこれはgas2naskで問題が起こっているのか!? 
 + 
 +-むむむーー! gas2naskの問題、解決かな??? (^^ 
 +-コンパイルもエラーがなくなった!。これまでにあった、コンソールの文字が表示されない問題もクリアした。これでいけたーーーー! 
 +-・・・っとどっこい! (世の中そんなに甘くない!) 
 +-5lzmaがないってエラーが出てる・・・。このエラーを履きながらも、コンパイルは無事に進んでくれるんだけど、今度はすべての.hrbが「.hrb file format error.」と言われ、実行できない。 
 +-5lzmaを移植せにゃならんか!!。たしかこれ、すんげーエラー吐いて手が付けられなかったんじゃなかったっけ・・・(汗 
 + 
 + 
 +-ぐはぁ! キターーー! 
 +-なんとあっきぃさんが見事5lzmaの移植を完了! 
 +-あわせてあっきぃさんによるbim2binの修正がうまくいき、なんとこの問題は解決!!!! 
 +-うほ! 29_day/harib26b から止まっていた移植がすすむ!動作確認!!! 
 +-どすこーーーい!! 29日目、完了!!! 
 + 
 + 
 + 
 + 
 + 
 + 
 + 
 +*30日目 [#n28c4f03] 
 +-いよいよラスト〜! はたして!!! 
 +-P678。30_day/harib27f。ラストーー! 
 +-キター!問題ねーー! 
 +---- 
 +
 +
 + 
 +CENTER:SIZE(25){--- はりぼてOS。移植、全て完了! ---} 
 +
 +
 +~