雑記帳
ここはhideyosiの雑記帳です。テケトーに書き散らしてるだけなので間違っていたりとは普通にしてます。信用度は相当低いことをあらかじめご了承を。またご覧のようにWikiを使ってますが、hideyosi意外は書き込めません。
※ ここは移植の検証やレポートを書いている場所です。LinuxやFreeBSD上ではりぼてOSのコンパイルを行いたい方は、こちらのページに移動してください。現時点で行える手順やパッチをまとめてあります。
ちょっと脱線の企画・・・(^^;
バージョン
- せっかくなので、安定版の最新版5.5をまっさらにで導入してみよー!
- XはXorgを導入。
- とにかくqemuを導入。これはportsにあった。
ちょっと思ったこと。FreeBSDはかつて、Linuxに比べてドキュメントが豊富でまとまっているというのがウリだったと思う。しかし、ひさしぶりにインストールした5.5にはそれはもはや当てはまらないと思う。ports等の使い方や規格が沢山あり、かつ、それらがまったく順を追っていないのだ。つまりシロウトが検索を頼りに文章を読んでいくと、余計な混乱や致命的な失敗を犯すおそれがあると感じた。(もちろん、たまたまここ一年くらいが過渡期なのかもしれないが)
- さて、qemuを導入できた。ちゃんと動くかどうか、とにもかくにもはりぼての最終版を当$てて起動してみよう!
- あっさりOK。つまり、qemuはOKというわけだ!
ちと仕切りなおし!古いのはFreeBSDではりぼて!/OLDに移動〜
tolset移植
- まずははりぼてCDに入っているtolset(Win版)をBSDに移植。
- FreeBSDではりぼて!/tolset移植
- 移植状況
Winコマンド 状況 備考 実行実績 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日目
- これだけコマンドが揃ったし、そろそろ実際に実験してみようかな・・・
- まずは1日目。P18の作業だね。01_day/helloos0 実際にできるかな。
- たはは・・・あっさりうまくいってしまった。(まあこれは当然かな??)
- ほい次。P24。01_day/helloos1 。いよいよnaskの登場だ・・・
- うほぉ! なんかうまく起動したみたいだぞ!
- つーことはさ。まだ「たぶん」だけどさ。nask、OKっぽいよね??(^^
- 気をよくしてP26。01_day/helloos2 もやっちゃえ!。さて・・・
- わーっはっは!いけたいけた!
- nask、だいじょうぶみたいじゃん!!
- ・・・そうなると課題は、バッチファイルだよね。あと、今回はnaskのパスを作業場所から直接もってきたけど、どっかにまとめておいたほうがいいよなぁ。
- おっと!いけない!うっかりしてた。
- シバシバっと実験してたので、今回はFDにインスコしてないんだよなぁ。これじゃimgtolの実験ができない。(まあ実際はimgtolは移植不可なんだけどね)
- ええと、imgtolの代用品は・・・わこうさんの、わこうメモによると、ddが使えるらしい。
- どれどれっと・・・
- うほ〜!いけた! やった!! OK!
2日目
- さて2日目。P30の 02_day/hallool3 。
- とんとーんとOK。
- P43。 02_day/hallool4。 お? edimg か。さてさて・・・
- あー。fdimg-at.tekがいるのか!もってこないと・・・
- おぉ!これもいけた! えっと。つーことは、edimg も「たぶんOK」でいいのかな??
- P45。 02_day/hallool5。 こらもう、言わんでも解るやろ!
- そんなわけで2日目完了〜。
3日目
- ・・・悪いけど、ここはFreeBSD版tolsetの実験場所なので、harib00a〜harib00d までは飛ばすよ〜ん。(やってること同じだもんね)
- P58。03_day/harib00e。いよいよ複数ソースのリンクだね。
- ふむ・・・。ipl.binとharibote.sysをDOSのコピーコマンドで連結?してるのか。同じことをするには・・・・
- おぉ!またしてもわこうメモにヒントが! なになに? 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を追いかけてみる。
- さてとりあえずは成功。でもけっこうハマッたんだよね。つまらないことだけど。
- まず、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
ちょっと一息・・・
- さて、この一連の作業はなにをしているかっていうと、tolsetがFreeBSDで使えるか。FreeBSDで「30日で出来る!OS自作入門」を進めていけるか。ということの検証。
- そう考えると、現時点ではまだいくつかのtolsetのコマンドの移植が未完だけど、実はhariboteでは使われていないものも結構あるよね。
- なので、そいつらをちょっと洗い直し。(初出順に並べ替え)
Winコマンド | 移植状況 | Makefile内初出 | 実行実績 |
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日目
- さてそんなわけで、大変申し訳ありまへんがすっ飛ばして5日目〜。
- P110。 05_day/harib02i。
- わはは! あっさりOKじゃん!!(^^
- そんなわけでbin2objとmakefontはOK〜。
- せっかくなのでスクリーンショット掲載〜
- デカイのはここクリック〜
- ついで〜。Linuxでもできました〜。
- デカイのはここクリック〜
28日目
- P622。28_day/harib25g。
- ありゃりゃ? ちょっとおかしいぞ?これ?
- あーー! そうか!Makefileで下の階層に行くようになったのか!だからうまくいかなかったのだ!
- シコシコと各Makefileを直してと・・・
- いけたーーー!-------------(゚∀゚)-------------
29日目
- 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
- Linux版。これはVineLinux4.0。gccは
- ふーむ・・・gccのバージョンの問題だろうか???Linuxのほうを3.4にして実験してみるかな??
- いやぁ!待った待った!! Linux版でも、エラーこそ出ないでコンパイルできたけど、やっぱりコンソールがなにも表示されない状態になっている!!!やっぱりこれはgas2naskで問題が起こっているのか!?
- むむむーー! gas2naskの問題、解決かな??? (^^
- コンパイルもエラーがなくなった!。これまでにあった、コンソールの文字が表示されない問題もクリアした。これでいけたーーーー!
- ・・・っとどっこい! (世の中そんなに甘くない!)
- 5lzmaがないってエラーが出てる・・・。このエラーを履きながらも、コンパイルは無事に進んでくれるんだけど、今度はすべての.hrbが「.hrb file format error.」と言われ、実行できない。
- 5lzmaを移植せにゃならんか!!。たしかこれ、すんげーエラー吐いて手が付けられなかったんじゃなかったっけ・・・(汗
- ぐはぁ! キターーー!
- なんとあっきぃさんが見事5lzmaの移植を完了!
- あわせてあっきぃさんによるbim2binの修正がうまくいき、なんとこの問題は解決!!!!
- うほ! 29_day/harib26b から止まっていた移植がすすむ!動作確認!!!
- どすこーーーい!! 29日目、完了!!!
最終更新: 2024-01-06 (土) 22:39:09 (JST) (82d) by