雑記帳
ここはhideyosiの雑記帳です。テケトーに書き散らしてるだけなので間違っていたりとは普通にしてます。信用度は相当低いことをあらかじめご了承を。またご覧のようにWikiを使ってますが、hideyosi意外は書き込めません。

ここは移植の検証やレポートを書いている場所です。LinuxやFreeBSD上ではりぼてOSのコンパイルを行いたい方は、こちらのページに移動してください。現時点で行える手順やパッチをまとめてあります。




ちょっと脱線の企画・・・(^^;


バージョン anchor.png

  • せっかくなので、安定版の最新版5.5をまっさらにで導入してみよー!
  • XはXorgを導入。
  • とにかくqemuを導入。これはportsにあった。

ちょっと思ったこと。FreeBSDはかつて、Linuxに比べてドキュメントが豊富でまとまっているというのがウリだったと思う。しかし、ひさしぶりにインストールした5.5にはそれはもはや当てはまらないと思う。ports等の使い方や規格が沢山あり、かつ、それらがまったく順を追っていないのだ。つまりシロウトが検索を頼りに文章を読んでいくと、余計な混乱や致命的な失敗を犯すおそれがあると感じた。(もちろん、たまたまここ一年くらいが過渡期なのかもしれないが)

  • さて、qemuを導入できた。ちゃんと動くかどうか、とにもかくにもはりぼての最終版を当$てて起動してみよう!
  • あっさりOK。つまり、qemuはOKというわけだ!

ちと仕切りなおし!古いのはFreeBSDではりぼて!​/OLDに移動〜


Page Top

tolset移植 anchor.png

  • まずははりぼてCDに入っているtolset(Win版)をBSDに移植。
  • FreeBSDではりぼて!​/tolset移植
  • 移植状況
    Winコマンド状況備考実行実績
    aksa.exeたぶんOK
    aska.exeたぶんOK
    bim2bin.exeたぶんOK
    bim2hrb.exeたぶんOKOK
    bin2obj.exeたぶんOKOK
    cc1.exeたぶんOKOK
    cpp0.exeたぶんOK
    edimg.exeたぶんOKOK
    gas2nask.exeたぶんOKOK
    golib00.exeたぶんOK
    makefont.exeたぶんOKOK
    nask.exeたぶんOKOK
    naskcnv0.exeたぶんOK
    nothing.comOKつか、作った
    obj2bim.exeたぶんOKOK
    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×
Page Top

1日目 anchor.png

  • これだけコマンドが揃ったし、そろそろ実際に実験してみようかな・・・
  • まずは1日目。P18の作業だね。01_day/helloos0 実際にできるかな。
    • たはは・・・あっさりうまくいってしまった。(まあこれは当然かな??)
  • ほい次。P24。01_day/helloos1 。いよいよnaskの登場だ・・・
    • うほぉ! なんかうまく起動したみたいだぞ!
    • つーことはさ。まだ「たぶん」だけどさ。nask、OKっぽいよね??(^^
  • 気をよくしてP26。01_day/helloos2 もやっちゃえ!。さて・・・
    • わーっはっは!いけたいけた!
    • nask、だいじょうぶみたいじゃん!!
  • ・・・そうなると課題は、バッチファイルだよね。あと、今回はnaskのパスを作業場所から直接もってきたけど、どっかにまとめておいたほうがいいよなぁ。
  • おっと!いけない!うっかりしてた。
  • シバシバっと実験してたので、今回はFDにインスコしてないんだよなぁ。これじゃimgtolの実験ができない。(まあ実際はimgtolは移植不可なんだけどね)
  • ええと、imgtolの代用品は・・・わこうさんの、わこうメモによると、ddが使えるらしい。
  • どれどれっと・・・
    • うほ〜!いけた! やった!! OK!
Page Top

2日目 anchor.png

  • さて2日目。P30の 02_day/hallool3 。
    • とんとーんとOK。
  • P43。 02_day/hallool4。 お? edimg か。さてさて・・・
    • あー。fdimg-at.tekがいるのか!もってこないと・・・
    • おぉ!これもいけた! えっと。つーことは、edimg も「たぶんOK」でいいのかな??
  • P45。 02_day/hallool5。 こらもう、言わんでも解るやろ!
  • そんなわけで2日目完了〜。
Page Top

3日目 anchor.png

  • ・・・悪いけど、ここは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内のディレクトリの指定。オイラは最初、自分のホームをあらわす~を使っていた。(~/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
Page Top

ちょっと一息・・・ anchor.png

  • さて、この一連の作業はなにをしているかっていうと、tolsetがFreeBSDで使えるか。FreeBSDで「30日で出来る!OS自作入門」を進めていけるか。ということの検証。
  • そう考えると、現時点ではまだいくつかのtolsetのコマンドの移植が未完だけど、実はhariboteでは使われていないものも結構あるよね。
  • なので、そいつらをちょっと洗い直し。(初出順に並べ替え)
Winコマンド移植状況Makefile内初出実行実績
imgtol.com×1日目OK(ddで)
nask.exeほぼOK1日目OK
bim2hrb.exeほぼOK3日目OK
edimg.exeほぼOK3日目OK
gas2nask.exeたぶんOK3日目28日で問題発生?
obj2bim.exeほぼOK3日目OK
cc1.exeほぼOK3日目OK
bin2obj.exeほぼOK5日目OK
makefont.exeほぼOK5日目OK
golib00.exeほぼOK27日目OK
bim2bin.exeたぶんOK29日
aksa.exeたぶんOK×
aska.exeたぶんOK×
cpp0.exeたぶんOK×
naskcnv0.exeたぶんOK×
nothing.comOK×
osalink1.exeたぶんOK×
sjisconv.exeたぶんOK×
comcom.exe××
doscmd.exe××
sartol.exe××
t5lzma.exe××
upx.exe××
wce.exe××
  • そんなわけで、これを参考にあとはかいつまんでチェックしていこうっと。
  • (あれでも、他のツール。make以外でもし使用されてたら誰か教えてチョンマゲ。もういっかいぜーんぶ読むのはキツイです〜)
Page Top

5日目 anchor.png

  • さてそんなわけで、大変申し訳ありまへんがすっ飛ばして5日目〜。
  • P110。 05_day/harib02i。
    • わはは! あっさりOKじゃん!!(^^
    • そんなわけでbin2objとmakefontはOK〜。
    • せっかくなのでスクリーンショット掲載〜
      bsd_s.jpg
    • デカイのはここクリック〜
  • ついで〜。Linuxでもできました〜。
    lin_s.jpg
    • デカイのはここクリック〜
Page Top

10日目 anchor.png

  • さて〜。なんとな〜く10日目もやりますか。
  • P210。10_day/harib07d。(マウスが動いてるので楽しみ)
    • うほほ〜い! これも問題なーし!(マウス動く〜(^^ )
Page Top

15日目 anchor.png

  • どーんとすっとばして15日目〜。
  • P307。15_day/harib12g。(いよいよマルチタスク!)
    • いけたいけた〜。よーし!どんどんいくぞ〜!
Page Top

20日目 anchor.png

  • さらにすっとばして20日目〜。
  • P415。20_day/harib17h。
    • これまた問題な〜し
Page Top

25日目 anchor.png

  • ラストスパート。25日目〜。
  • P536。25_day/harib22j。そうだ!そのとおり!もっとOSらしく!
    • 問題な〜し。アプリも動くぞ〜!
Page Top

28日目 anchor.png

  • P622。28_day/harib25g。
    • ありゃりゃ? ちょっとおかしいぞ?これ?
    • あーー! そうか!Makefileで下の階層に行くようになったのか!だからうまくいかなかったのだ!
    • シコシコと各Makefileを直してと・・・
    • いけたーーー!-------------(゚∀゚)-------------
Page Top

29日目 anchor.png

  • 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日目、完了!!!
Page Top

30日目 anchor.png

  • いよいよラスト〜! はたして!!!
  • P678。30_day/harib27f。ラストーー!
  • キター!問題ねーー!



--- はりぼてOS。移植、全て完了! ---



Last-modified: 2012-10-22 (Mon) 22:05:00 (GMT) (2818d) by