オープンギャラリー:Fedora 7でのLinux Kernel 0.01のビルド
2008年1月2日、http://kerneltrap.org/Linux/Dusting_Off_the_0.01_Kernelにてgcc-4.x, bash-3.2等に対応したLinux kernel 0.01+patchが公開されました。
またpatchを当てたLinux kernel 0.01ソースをコンパイルして作成したバイナリカーネル(ブートディスクイメージ)ファイルも
公開されています。
更に、QEMU環境でLinux Kernel 0.01を実行させるための仮想ディスクも公開されています。
- gcc-4.x対応のpatchを当てたLinux kernel 0.01ソースの所在
http://draconux.free.fr/download/os-dev/linux0.01/linux-0.01-rm-3.x/linux-0.01-rm-3.3.tgz
- QEMU環境での実行確認用ファイルの所在
http://draconux.free.fr/download/os-dev/linux0.01/Image/には以下のファイルが公開されています。
(1)hd_oldlinux.img.zip (4.4MB) ※QEMU用の仮想ディスクです。
(2)linux0.01-3.3.img (89KB) ※ブートディスクイメージファイルです。
hd_oldlinux.img.zipとlinux0.01-3.3.imgがあれば手っ取り早くQEMU環境でLinux Kernel 0.01を動作させることができます。
しかしここではgcc-4.x対応のpatchを当てたLinux kernel 0.01ソースをビルド(コンパイル)してブートディスクイメージファイルを作成する手順を紹介します。
今回使用したコンパイル環境のホスト, QEMU実行環境は以下の通りです。
・コンパイルホスト:Fedora 7 ※ gcc:4.1.2
・QEMU実行環境:Windows XP ※ QEMU:0.8.2
※WindowsマシンはPentium 4 3.6GHzです。
- dev86のインストール
Linux kernel 0.01ソースをビルドするにはgcc, asの他にas86も必要です。
as86はdev86パッケージに入っているためdev86を次のようにインストールします。
# yum install dev86
- gcc-4.x対応のpatchを当てたLinux kernel 0.01ソースの取得
http://draconux.free.fr/download/os-dev/linux0.01/linux-0.01-rm-3.x/linux-0.01-rm-3.3.tgzを取得します。
ダウンロード先は/home/amberとしました。
- QEMU実行用仮想ディスクの取得(Windows環境)
http://draconux.free.fr/download/os-dev/linux0.01/Image/hd_oldlinux.img.zipを取得します。
- カーネルソースファイルの解凍
$ tar zxvf linux-0.01-rm-3.3.tgz
・linux-0.01-rm-3.3.tgzの構成
- Makefieの変更
linux-0.01-rm-3.3.tgzを展開して得られるlinux-0.01-rm-3.3直下のMakefileにはmakeを実行するユーザ名、グループ名の長さに応じて変更すべき箇所があります。
それは「ls -l tools/system | grep system」で表示されるファイルサイズの取得箇所です。
今回はamberという5文字のユーザ名、グループ名を使用しているためその箇所を以下のように変更します。
・変更前
boot/boot: boot/boot.s tools/system
(echo -n "SYSSIZE = (";ls -l tools/system | grep system \
| cut -c31-37 | tr '\012' ' '; echo "+ 15 ) / 16") > tmp.s
・変更後
boot/boot: boot/boot.s tools/system
(echo -n "SYSSIZE = (";ls -l tools/system | grep system \
| cut -c25-31 | tr '\012' ' '; echo "+ 15 ) / 16") > tmp.s
- コンパイル
$ cd linux-0.01-rm-3.3
$ make dep
$ make all
この結果としてImageというブート用のカーネルイメージファイルが生成されます。
これをQEMUを実行するホストOS(今回はWindows)に転送します。
- QEMUでの実行確認
まずQEMU実行用仮想ディスク(hd_oldlinux.img.zip)を解凍してhd_oldlinux.img(40MB)を得ます(これはhdb専用のものです)。
次に以下のコマンドをbatファイル化して起動すると一瞬でLinux Kernel 0.01環境のシェルが現れます。
qemu.exe -L . -m 16 -hdb hd_oldlinux.img -fda Image -boot a
pause
|
【Linux Kernel 0.01環境のシェル画面】
※キー配置はフィンランドキーボード仕様のようですので、例えば日本語キーボードで「;」を打つと「|」が入力されます。
※/devにはttyとtty0だけが存在します。
※linux-0.01-rm-3.3.tgzのソースにおいては実際のlinux-0.01.tar.gzソースとかなり違っている部分もあります。