カーネルソースコード入手。

今日は珍しく早く帰ってこれました!いえぃ!

linux-2.4.27のソースコードを入手しました。2.6からブート部分が変わっているらしいので、今回は2.4です。手元の資料も2.4なので、2.6と対比しながら読んでいければいいかなぁと思います。

解凍したら、164.1MBもあります・・・せっかくなので、ボクノス付属のinfo.awk(プログラムの行数を計るスクリプト)を走らせてみました・・・

{
	print $0
	lines += $1
	words += $2
	chars += $3
}
END {
	print " " lines " " words " " chars
}
$ find -type f -exec wc {} \; | awk -f info.awk
〜いっぱい。
5602421 20184283 165879239

うまく走っているようです・・・なかなか終わりませんでした・・・。

行数が560万行。2千万ワード。1億6千文字・・・僕が100回死んでもこんなに書けません(笑

まずは,arch/i386/boot/bootsect.Sの解析です。

ブート部分でやることはただひとつ。次のファイルを読み込んで、次のファイルの先頭へジャンプすることです。WindowsLinuxMonaやはりぼて(OS自作入門)も殆ど同じ処理をしています(Windowsは妄想)

PCの電源を入れると、最初にBIOSタンが起動します。BIOSは初期設定を終えたあと、ディスクの最初の512バイト(ブートセクタ)をメモリ0x7c00に配置しジャンプさせます。OS(ブートローダー)の仕事はここからです。ファイルシステムを解析して、次のファイルを読み込みます。ブートの仕組みは以外と簡単です。ハードウェアに近い部分なので、言語の選択肢はアセンブラorマシン語しかありません。ボクノスはアセンブラの選択にintel形式のnasmではなく、AT&T形式のgasを選びました。記号が多く読み辛いのが欠点ですがgccとの相性の良さと今後の展開を考えるとgasという選択肢がベストだと考えました。問題は資料の乏しさ・・・英語or実際のソースのみ!そんなわけで、カーネルソース解析なのです。忙しい&Linux覚え中なので、相当まったり解析していきます〜

OS自作erの殆どがここで挫折していきます・・・さて、ボクノスは乗り越えられるのか(笑

ちなみに、カーネルソースコードの入手はここ