【お知らせ】プログラミング記事の投稿はQiitaに移行しました。

驟雨さんの独自OS Shiitake

twitterid:syuu1228さんと勉強会やlibcの話をしていて、自作OSが存在すると教えてもらいました。

最初にMIPS版を開発してからi386に移植したそうです。さっそくビルドして動かしてみました(スクリーンショット)。OSに必要な要素がコンパクトにまとめられています。FAT32のハードディスクからファイルを読み込めるのが素晴らしいです。OpenBSDハッカー驟雨さんの原点でしょうか。

以下、twitterのログを掲載します。MIPSのNetBook(CPUは中国製の龍芯)を買ったり、MIPS基板を開発された方が登場したりと、すごい展開になっています。後に引けない感じなので、MIPSを勉強しようと思います。

ログ

※話の流れを分かり易くするため、一部順番を入れ替えたり改変しています。

2009-12-14 17:05 syuu1228: 正直バイナリ勉強会の方が実践的なので勉強になるとは思う。もう少し手を動かして学べる形式の勉強会に出来ないかなぁ、探検隊も。
2009-12-14 17:17 7shi: 手を動かすというのは魅力的です。プレゼンを見ているだけだと、コアな人はともかく、普通の人は次の日になったら忘れている気がします。
2009-12-14 17:22 syuu1228: ネタをどうするのか、が問題なんですよねぇ。。
2009-12-14 17:25 7shi: 個人的には、勉強会でもなければ触れない環境に触れると面白いと思います。たとえば私にとってMIPSは、そういう機会でもないと触れることがないです。
2009-12-14 17:28 syuu1228: gxemul上でMIPS向けスタンドアロンプログラムを開発、とかかなー。
2009-12-14 17:30 7shi: 私は面白いと思います。問題は他の人が納得するかどうかですが・・・
2009-12-14 17:32 syuu1228: 多分、現状の勉強会からfork()する形で別の名前でやった方が良いような気はします
2009-12-14 17:32 syuu1228: カーネルVM探検隊 Hackathonとか?
2009-12-14 17:37 7shi: なるほど、その方が良さそうですね。
2009-12-14 17:38 syuu1228: はい。そんな方向で考えてみたいなぁ
2009-12-14 17:40 syuu1228: libcとかよくわかんないんすよねー。あまり使ったことないし(ぼそっ
2009-12-14 17:50 7shi: libcを作ってみよう会ですか?gcc -nostdinc -nostdlibでHello Worldとか。
2009-12-14 17:53 syuu1228: printf, gets, open, read, close, opendir, readdir, mallocとかだけなモドキしか作った事ない
2009-12-14 17:55 7shi: exitしかやったことないです・・・
2009-12-14 17:57 syuu1228: あ、BSDカーネルとかで動くマトモな奴じゃなくて自作カーネル向けの単なるインラインアセンブリマクロなので、ライブラリとは言い難い感じです
2009-12-14 17:59 7shi: 自作カーネル!?
2009-12-14 18:00 syuu1228: なんにも出来ないのでカーネルというよりスタンドアロンプログラムに近かったですが
2009-12-14 18:15 7shi: 一日でスクラッチからそこまで作るのは、アセンブラ初心者向けの題材としては良いと思います。そんなの誰も興味なさそうなのが問題ですが。
2009-12-14 18:17 syuu1228: おーいえす
2009-12-14 18:35 syuu1228: ちなみに以前作った自作カーネルとかいうのはこんなのです。何も分かってない時に書いたのでかなりヒドい出来ですが… https://enoki.dokukino.com/svn/public/shiitake/trunk/
2009-12-14 18:38 7shi: おおー、凄い!i386MIPSに両対応ですね。ファイルをダウンロードして読んでみます!
2009-12-14 18:41 syuu1228: はい、qemui386とgxemulのtestmachineって架空のMIPSハードに対応してます。 ページングの実装の辺りでつっかかってそのまま放置になってる感じです。なのでメモリ保護がない。
2009-12-14 18:51 7shi: なるほど。スレッドには対応しているみたいですね。私は以前i386-elf-gccとか準備だけして何もしなかったのを思い出しました。ビルドに挑戦してみます。
2009-12-14 18:57 syuu1228: ドライバはコンソールとブロックデバイスがあって、メモリアロケータ、スレッド、リードオンリーなFAT32システムコールが使えますです。
2009-12-15 17:43 7shi: shiitakeのビルドを試しています。i386-elfとmipsel-elfのgccの作成が終わったところです。
2009-12-15 17:44 syuu1228: おおw
2009-12-15 18:40 7shi: libgccを作っていなかったのでgccをビルドし直しています。早まってmake cleanしてしまいました・・・
2009-12-15 19:20 syuu1228: Emtec gdiumを購入検討中。多分今日明日中には買う。
2009-12-15 19:42 7shi: i386-elfのlibgccは構築完了して、カーネルも無事にビルド完了しました。今から起動を試みます。mipselのlibgccは延々と続いてなかなか終わりません。
2009-12-15 19:46 syuu1228: 試していただきありがとうございます。ツールチェインのビルドは面倒ですよねぇ
2009-12-15 19:49 7shi: すごく興味深いコードを見せてもらって私の方こそ感謝しています。クロスコンパイラのビルドは自前でビルドシステムを組んでいるので、アーキ名を指定して待つだけで簡単です。
2009-12-15 19:51 syuu1228: なんかlinux/mips向けにgccとかglibcとかコンパイルしようとすると大変ハマる楽しい思い出が…よくコンパイル失敗するのですよねー
2009-12-15 19:53 7shi: 今mipsel-elf-gccのビルドが終わりました。特にエラーは出なかったです。i386に比べてやたら長かったのはsoft float関係でしょうか。
2009-12-15 20:00 syuu1228: まぁ、OpenBSD/sgiのツールチェインはきちんとクロスビルドが通るので私はそれで幸せです。Linux/MIPSは多分やらないと思うし
2009-12-15 19:48 syuu1228: あーちなみにi386カーネルqemu上でgrubからロードしないと起動出来ないです
2009-12-15 19:51 7shi: はい、multibootを使っているのを確認しました。最近Hurdを使い始めたので、GRUBにも少し慣れてきた所です。
2009-12-15 19:52 syuu1228: Hurd…!!! ここに神がいる…!!!
2009-12-15 19:53 7shi: Hackしていないただの一般ユーザですよ。
2009-12-15 21:38 7shi: ビルドはすぐ出来ましたがその後で手間取っています。MIPS版はHDDイメージなしでgxemulを起動させてカーネルパニックさせるところまではできました。i386版はGRUBからbootした瞬間に落ちてしまいます。今HDDイメージを準備中です。
2009-12-15 21:40 syuu1228: HDDイメージが無いせい…ですかねぇ。なんでだろ
2009-12-15 22:25 7shi: ソースツリーに入っていたfda.imgのカーネルはHDDイメージなしでも起動するので、私のビルドがどこかおかしいみたいです。明日また調査します。
2009-12-15 22:02 7shi: MIPS版きたーーーーー!! http://twitpic.com/tm0kg
2009-12-15 22:42 syuu1228: 懐かしいな
2009-12-16 13:39 7shi: ソースに含まれていたfda.imgからカーネルを抽出して調べたところ"GNU C 3.4.6 [FreeBSD] 20060305"でビルドされたものでした。それを使うFreeBSD 6.4-Rでビルドしたところ正常起動しました。
2009-12-16 13:40 syuu1228: それを聞いて思い出しました。たしか、gcc-4.xでビルドしたら動かないカーネルが出来上がってしまうというバグが…
2009-12-16 13:45 7shi: なるほど、そうだったんですか!
2009-12-16 14:30 syuu1228: 僕は、MIPS向けの自作OSをx86にポーティングしたんであって、逆ではないよ。
2009-12-16 14:40 syuu1228: MIPSが主でx86が従(を
2009-12-16 14:42 syuu1228: とか言ってるけど出来るものから手をつけているだけで別にMIPSにこだわっている訳ではなかったりします。
2009-12-16 14:31 syuu1228: EMTEC Gdiumぽちったなう http://www.slashgear.jp/2009/01/post-3365/
2009-12-16 15:47 7shi: 個人輸入かと思ったらamazon.comで買えるんですね。思ったより安かったのでポチっちゃいました! http://www.amazon.com/dp/B0027IS8AM
2009-12-16 15:49 syuu1228: まさか二人目が出るとは…
2009-12-16 15:50 7shi: 実は最近ARMに傾いていたんですが、MIPSはモバギ以来です。
2009-12-16 15:52 syuu1228: 今日のご時世、常識的にはARMだとは思います(^^;;
2009-12-16 16:00 7shi: Linux&CygwinではなくHurd&Interixを使うような奴ですから・・・
2009-12-16 16:00 syuu1228: かっこ(・∀・)イイ!
2009-12-16 16:03 7shi: ただの天の邪鬼というか。ちなみにARMの経緯はこういう感じです(コメント欄) id:fslasht:20091213
2009-12-16 16:04 syuu1228: 最後のコメントwwww
2009-12-16 16:15 7shi: ちなみにMIPS Hurdというのが存在します。 http://www.rr.iij4u.or.jp/~kkojima/hurdmips-j.html
2009-12-16 16:25 syuu1228: R3000, R4000ですか。石が古いけど、読むには良さそうですね。そう言えば自作カーネル書きやってた時は、Mips Machとか少し読みました。
2009-12-16 16:34 7shi: なるほど、色々とつながりますね。
2009-12-16 16:27 himamura: このボードの作者は、私です!
2009-12-16 16:35 7shi: ええー、本当ですか!!話が一気に展開し過ぎでびっくりです!!
2009-12-16 16:39 syuu1228: おおお!
2009-12-16 16:43 himamura: 両方ともMIPS版EWS4800の基になったボードです。
2009-12-16 16:53 7shi: 素晴らしいです。MIPS初心者ですが勉強しますのでよろしくお願いします。
2009-12-16 17:19 syuu1228: 私もMIPS初心者ですが勉強しますのでよろしくお願いします。
2009-12-16 19:03 syuu1228: GNU HURD/loongsonというどうしようもないネタを思いついたがあまりに誰得過ぎるので忘れることにしようかな
2009-12-16 19:06 7shi: 釣られてみるテスト
2009-12-16 16:20 deusx_tw: まさか,Gdium で Hurd を起動するつもりですかw
2009-12-16 16:21 deusx_tw: ん?でも mips64 で Hurd 動くんだろうか?
2009-12-16 16:27 7shi: MIPSはモバギのmipselしか使ったことがないので、実はその辺よく分かってないです。挫折しそうですが、ネタ程度にやってみようと思います。
2009-12-17 10:19 syuu1228: 32bitカーネルで対応可能ならドライバとCPUの細かい差異をケアしてあげれば動くけど、64bitカーネルでなければならないのなら、64bit化が必要。環境による。龍芯の仕様は未だ知らんとです。
2009-12-17 10:21 syuu1228: ハードウェアレジスタのメモリマップがどうなってるとか、ファームウェアが32bit ELFに対応してるかとか、そんな所にも依存してきますな > mips64マシンで32bitカーネルが動くのか否か
2009-12-17 10:22 syuu1228: が、CPUの仕様的には32bitと完全に互換性がある。そうなのだから、ちゃんと32bitカーネル&32bitユーザランドでも動くべきだと思うんだけど…そうでもない子も居る。SGI Octaneさんもその一人。
2009-12-17 10:37 deusx_tw: レポートが楽しみです^^ > Hurd on Gdium
2009-12-17 10:36 syuu1228: まぁ正直shiitakeは色々ひどいコーディングになっているので、真面目に晒すならちゃんと書き直したい所ですね。もう少し大義名分が手に入ったらやりたいんだけどな。特にFSの再実装とか仮想メモリの導入とかやりたい。
2009-12-17 11:18 syuu1228: 色々言い訳しておくと、shiitakeはAXE入社当時暇してたら田胡教授にOSでも書いたらどーよみたいな事を言われて書き始めたもので、カーネルハックを始める前に書いてるので色々アレです。まぁ30日本読んで作りました位のレベルです。あの本そのものは宗教上の理由で読んでませんが。