home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

技術/Linux/手作りLinuxシステム/02. Boot from Floppy Disk (kernel-2.4.x)

技術/Linux/手作りLinuxシステム/02. Boot from Floppy Disk (kernel-2.4.x)

技術 / Linux / 手作りLinuxシステム / 02. Boot from Floppy Disk (kernel-2.4.x)
id: 943 所有者: msakamoto-sf    作成日: 2011-04-07 16:53:37
カテゴリ: Linux 

Linux Kernel 2.4.x を使ってフロッピーディスクから起動するLinuxシステムを作ってみます。
2.4.x に興味のない人はこの記事はスキップして下さい。


Kernel 2.4.x の入手とコンパイル

今回は linux-2.4.37.11.tar.bz2 を使います。
入手先:

$ pwd
/home/msakamoto/reduced.linux
$ ls
... linux-2.4.37.11.tar.bz2 ...
$ tar jxf linux-2.4.37.11.tar.bz2
$ cd linux-2.4.37.11
$ make menuconfig

2.4.xの時点ではソースディレクトリと出力ディレクトリを分離できません。ソースディレクトリの中で直接 "make XXYYconfig" と "make bzImage" を実行します。
また kernel-2.6.x では "allnoconfig" など便利なターゲットがありましたが、2.4.x ではそれらは用意されていません。手動で不要なオプションを外していきます。

CONFIG_BLK_DEV_FD
CONFIG_EXT2_FS

を忘れずに有効化(built-in)しておいてください。

$ make dep
$ make clean  # オプション。入れなくても平気・・・だと思う、多分。
$ make bzImage
...
$ wc -c arch/i386/boot/bzImage
344997 arch/i386/boot/bzImage

NOTE: 2.4.x時代のLinuxカーネルコンパイルの情報を調べていくと、

/usr/include/asm/
/usr/include/asm-generic/
/usr/include/linux/

これら3ディレクトリを、コンパイルするホストマシンのヘッダーファイルではなく、ターゲットとするLinuxソースツリーを示すようにシンボリックリンクを貼り直すよう指示しているドキュメントを見かけます。
カーネルソース中での

#include <asm/...>
#include <linux/...>

が、意図していないヘッダーファイルを参照してしまうのを防ぐためです。

ですが、今回使用した 2.4.37.11 ではそのような準備は不要でした。
例えば make dep コマンドの実行内容を見てみると・・・

make[6]: ディレクトリ `.../linux-2.4.37.11/drivers/video/intel' に入ります
.../linux-2.4.37.11/scripts/mkdep -D__KERNEL__ \
      -I.../linux-2.4.37.11/include -Wall ... -nostdinc ... > .depend
                                              ^^^^^^^^^

このように "-nostdinc" が指定されることでホストマシンの "/usr/include" 以下は参照されなくなります。同時に "-I" オプションでターゲットのLinuxソースツリーの "include" ディレクトリを参照するようになっています。

不安であれば一度 "make dep" してみて、ビルドするときのコマンドラインを確認し、もしも上記のような対応がされて「いない」ようであれば、手動で "/usr/include/" 以下の "asm(-generic)", "linux" シンボリックリンクを貼り直してみてください。

kernel-2.4.x の場合、"make bzImage" で生成されたbzImage単体でFDブートが可能です。

rdevでルートデバイスを設定

rdevコマンドで bzImage にルートデバイスを設定します。

# rdev arch/i386/boot/bzImage
Root device /dev/root
# rdev arch/i386/boot/bzImage /dev/fd0
# rdev arch/i386/boot/bzImage
Root device /dev/fd0

ここまで来れば、bzImageをVMwareなりBochsなりでFDイメージに指定してLinuxをブート出来ます。

VFS: Insert root floppy and press ENTER

のメッセージが表示されると思います。

ここで 技術/Linux/手作りLinuxシステム/01. Boot from Floppy Disk (kernel-2.6.x) で作成したルートファイルシステムイメージを読み込ませてみると、Ext2ファイルシステムのマウントは成功しますが、その後フリーズしてしまいました。
このルートファイルシステムにインストールしたBusyBoxは、CentOS5.5上のglibcと静的リンクしてビルドしていますので、その影響かもしれません。

本シリーズでは kernel-2.4.x を使ったLinuxシステム構築についてこれ以上は取り上げません。
興味のある方は busybox-0.60.x など kernel-2.4.x 時代に開発されていたバージョンを使ってみたり、kernel-2.4.xを載せているCentOS3.xやFedora3などを入手し、kernel-2.4.x時代の環境上で構築してみてください。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2011-04-29 15:38:13
md5:8f9eb8d852dc73a0cd7f0293689c58ca
sha1:0e35717f07963029547c39b972c5f863726775ca
コメント
コメントを投稿するにはログインして下さい。