sodex 0.0.1 release
はじめまして、ありえるに入社し2ヶ月ほどたつsodexです。 よろしくお願いします。
早速ですが、入社以前の今年4月から趣味で書いているオリジナルカーネルsodexがカーネルとしての体面が整いましたのでReleaseしてみました。
このカーネル、今のところ私個人の勉強目的で書いているため、これで何かをする事は出来ませんがカーネルに興味がある方は原形が残らないほど改造して頂き、出来ればそのコードを提示頂けたら僥倖です。
さて、WindowsやLinux, Solaris, BSD系, Tron等 巷には様々なカーネルが開発されており、もはや枯れた分野とも言えるカーネルを今しかも個人が何故趣味で開発しているのか?疑問に思う方もいらっしゃると思います。その理由はただ一つ「知的好奇心」です。皆さんも物の動きや動作原理を不思議に思ったり疑問を抱き調べた事があるかと思いますが、私にとってのその対象がカーネルでした。カーネルはユーザランドでプログラムを書いた事がある人間にとってはブラックボックスの塊であり、時には意味不明なエラー(Segmentation Fault等)を吐くパンドラの箱です。プログラミング暦の浅い私にとってその対象はまさに知のシュバルツシュルト半径でした。しかし、とある本を手にし何となくブートローダを書き始めた私にとって、その考えは誤りである事に気付きました。カーネルと言えどプログラムの一つで細かい知識の積み重ねを続ける事により書くことが出来る物であり、何らの不確定性を持ち合わせてはいませんでした(CPUの論理回路に不確定性が無い物と仮定)。sodex 0.0.1をReleaseした現在ではカーネルを定義している4大機能であるプロセス、ファイルシステム、メモリ管理、I/O管理を実装しておりその原理を把握する事が出来ました(もちろん実装範囲内です)。皆さんも「車輪の再発明」だなどという躊躇をせずに是非オリジナルのカーネルを書いてみてください。
最後にsodexカーネルの開発環境と実装している機能を列挙しておきます。
- 開発環境
Linux 2.6.18
gcc 4.1.1
GNU assembler 2.17.50
GNU ld 2.17.50
emacs 21.4
GNU Screen 4.00.03
- デバッグ環境
Qemu 0.8.2
Bochs 2.3
hexdump
objdump
ndisasm
- 実装機能
i386CPU 32bitプロテクトモードへの移行
VRAM表示機能
RS232Cシリアル出力
GDT管理(フラットモデル)
割り込みディスクリプタテーブル管理
カーネル用動的メモリ管理
ページング機能
FDCドライバ
EXT3ファイルシステム(内部処理はほぼオリジナル)
システムコール
プロセス生成
TSS構造体への汎用レジスタ保存を使用しないuser to kernel, kernel to kernelプロセススイッチ
elfローダ(再配置なし)
ユーザランド用ライブラリ
ユーザランド用コマンド(ls, ps, pwd, cd, cat)
- Category(s)
- sodex