NetBSDをX68030に移植したときの話
- rentan_org
- 588
- 0
- 0
- 0
「勝たん」は「まさるたん」ですか? (ちがいます) ゾンビランドサガと佐賀が好き。だいたい半袖。パソコンとゲームとマンガ、アニメ、コンカフェ通いとか好き。お酒も好き。昔の名前は沖@沖。RT多めです。おつかれさまbotではありません。インスタ、note他リンクはこちら https://t.co/iqgWYX9Dcw
そうか、ちょうど30年前の1993年のいまごろだ。GWにX68030を買ってNetBSDの移植を始めたの。シングルユーザブートしたの9月なので移植には3〜4ヶ月くらいかかった計算。インターネットから情報を拾うなんてことができなかった時代に、一人で移植。
2023-06-07 12:57:05画面とかキーボードのドライバ動くまではコンソールはシリアルで、でもシリアルドライバ動くまではどこまで動いたかLチカで確認。とかやってました。いつごろなにができてみたいな進捗の記録は残っていませんが、書籍とかになんか書いたっけ? 忘れました。。
2023-06-07 13:26:28@masaru0714 以前Qiitaに書かれてましたよね? / NetBSDを手探りで移植したときの話 qiita.com/masru0714/item… #Qiita
2023-06-07 18:57:49で、仮想記憶オンで死ななくなって、ようやくmain()が呼べるところまでたどり着く。シリアルコンソールも一応文字が出せるようになって(cnput.c)、でも本来の起動時に出てくるはずのCopyrightはまだ出ない。各種初期化の途中? で詰まる。
2023-06-07 20:15:22ここからいくつかデバイスドライバ用意したような記憶。起動したらファイルシステムからinitを呼び出す必要があるので、まずはSCSIドライバから。X68000と同じ富士通のチップで、ハードウェア解説書にも一応情報あったけど、チップのドキュメントを提供いただいて非常に助かった記憶があります。
2023-06-07 20:19:08でも、ディスクふっとばされると死んじゃうので、最初はread onlyで。とかやった記憶。実際に読みに行く動作を検証するのはもっとだいぶ先でした。
2023-06-07 20:21:15シリアルコンソールもいい加減しんどいので、画面のドライバも作ることに。当時他のマシンは文字コードを特定のアドレスに書き込むと画面に文字が表示される仕組みが多く採用されてたけどX680x0はビットマップを書く。フォントイメージのROM領域からVRAMに転送する。
2023-06-07 20:25:18iteとかgrfとかあのへんの名前は元はamigaのコンソールドライバでつけられたのを大枠流用したので、名前もそのまま持ってきたって感じでした。
2023-06-07 20:30:41そうそう、起動うまくいかないときよーく調べたら、スタック領域ちゃんと作れてなかった(マップ忘れ)とか、スタックポインタが変なところ指してたとかいうのもありました。
2023-06-07 20:32:23どうにかこうにかして、Copyright表示てたのって夏だったかなー。よく覚えてない。ファイルシステムは、ホントの最初はamiga用に用意された構築済みファイルシステムイメージをそのまま使ってました。MOにベタっと書き込んで。でカーネル起動して出たメッセージは cannot mount root
2023-06-07 20:35:29イメージをちゃんと書けてないのか、正しく読めてないのか、レイアウトが想定と合ってなくて正しい値を扱えてないのか。複合原因だったのかも含めてまるっと忘れましたが、けっこう長いことmountできなかった気がします。
2023-06-07 20:38:21mountできたと思ったら次は init died でもようやくユーザープロセスだー。ここも長かった。コンテキストスイッチをそもそも実装し忘れてたとか(アホですね)、トランポリンコードがバグってたとか、execveからのマップ部分がバグってたとか、いろいろあった気がする。
2023-06-07 20:41:07起動して症状見て、ソース広げてデバッグコード仕込んだりしてビルドして、起動して情報収集して、ソース広げて対策コード書いてビルドして、起動したらやっぱりまだおかしくて、の繰り返し。繰り返し。ずっとずっと繰り返してました。ICEもリモートデバッガもない。ひたすらトライアンドエラー。
2023-06-07 20:44:02で、ようやくシングルユーザブートでshを起動できたのが9月。日付は忘れましたが、めっちゃ嬉しかった。苦労が報われた瞬間でした。たぶん速報をBBSに書き込んだと思うので、ログが残ってる人は探すと正確な日付が出てくるんじゃないかと。
2023-06-07 20:49:18そのあと、SCSIドライバのwriteのほうを動かして、マルチユーザブートできるようになって。このあたりからデバイスドライバ(ADPCMとか)を書いてくれる人が現れたりして、大変ありがたかったです。
2023-06-07 20:55:00NetBSD上でセルフビルドでカーネルを作って、BSD ffs上に置けるようになって、だったら直接起動できるようにするかってことでブートローダを書いたんだったかな。disklabelどうする問題を考えたのはいつだったか。このときは結局Human68kのパーティション情報を使ってfake disklabel。
2023-06-07 20:57:24で、ブートローダを書いて。Human68kの複数パーティションがsd0a,b,d,e,とかに割り当てるようにして。(当時はcとdの使い分けとかまだなかったと思う)
2023-06-07 20:59:405月にNIFTY-Serve FUNIXからNetBSDカーネルのソースコードをダウンロードした時は初出の0.8でしたが、その後開発版(NetBSD-current)は0.8aとして更新が続き、最初に起動したのも0.8aだったと記憶しています。
2023-06-07 21:01:03で、userland含めて全ビルドしてみたり、newfsした領域をmountしてファイル配置したり、そしたらa.outのフォーマットがamigaと微妙に食い違ってて調整し直したりとかやった記憶。
2023-06-07 21:03:03このころ、秋葉原のジャンクショップでQIC-150ドライブが売られてて、これを買ってきてX68030につけてました。当時NEC勤務だった友人がNetBSD-currentのソースコードをQIC-150で持ってきてくれて(お互い田町勤務だったので昼休みとか仕事帰りに会って)、それを読むのに使ってました。
2023-06-07 21:06:25そんなこんなで、初めて動くBSDを触ったのが自分が手がけた移植版という珍妙なことをやってました。動き出してから本当に色んな人の支援を頂いたと思います。たしかシャープさんからもMOのメディアを頂いたことがあったと記憶しています。その節は大変お世話になりました。
2023-06-07 21:11:44040turboをお借りして、68040対応の作業もやったなあ。それで040turboの書籍にページを頂いて少し解説を書いたのが、ぼくの書籍執筆デビューのはずです。たぶんいま読むと恥ずかしくなるようなこと書いてそうな予感がします。
2023-06-07 21:14:28