ぎんあん日誌

gin-an diary

2002.1.29.


Kondara2.1RC2のインストール試し記録。 フロッピーディスクもCD-ROMも無いという設定で、 自分一台でのクリーンインストールをめざしております。

今回も、RC1のインストールに引き続き、 インストールは途中で止めました(じゃなくて止まりました、だ)。 インストール先は、仕事に使っているマシンで、 失敗するとちょっと被害が大きいので、あんまり地雷は踏みたくないのです。 ヘタレだ。

今回は、2nd stageを立ち上げ、 ループバックマウントを可能にするところまで行きました。 ポイントは、スタティックリンクしたlosetupコマンドを用意しておくことです。 これで、rpmsディレクトリが2nd stageで、 ファイルツリーのどこに現われればいいかわかれば、 インストールも最後まで進めそうな気配です。

気づいたこと

今後の課題

あ。

もう少し探せば、インストーラを自作できるようなスクリプトもあるはずか。 それは、もう、βテストとはいわないわけだけど。

…とか思ってたら。 インストーラーのソース拾って来て、1st stageからlookback mountですか…。 やりたくてウズウズ。しかし本来のお仕事は…。どきどき。 とりあえず、anaconda.specあたりを見させてもらわないといけないんでしょうね。 あとは、RedHat Linux KickStart HOWTOかな? Linux奮戦記/Vineのupdate CDを作るとか、Kondara 1.2で カスタムインストールセット作成メモとかも参考にさせていただきます。

おりょりょ。 またまた、Asumi-FAQ からリンクしていただきました。 インストール最後までできてないのに…。 他の方のレポートを見ても、 ここみたいに変なことをしなければ普通にインストールできているようです。 あ、ネットワークインストールするときは、expertモードにして、 drivers.imgを読ませるのが吉のようですね。

目次


カーネルについて

RC1のインストールでは、 カーネルがDMAをサポートしていないかもしれないこと、 オンボードのネットワークインターフェース 3C920 (3C905C-TX Compatible) を認識していないらしいこと、 が問題になった。 また、 インストーラのカーネルがループバックマウントできるかどうか も知っておきたい。

www.kondara.orgの CVSレポジトリをたどって、 RELEASSE_2_1_RC2タグのついている、 kernel-2.4-i586-BOOT.config と kernel-2.4-i586.config をいただいて眺めてみる。 比較対象のBeta3については、タグがついていないため、 いただいてくることができなかった。

ネットワークカードの認識について

kernel-2.4-i586-BOOT.config と kernel-2.4-i586.config を見ると、 どちらも、

CONFIG_VORTEX=m
CONFIG_BC90X=m
になっている。 というわけで、どちらかをモジュールとしてロードできるハズ。

なお、CONFIG_BC90X は、Configure.help を見ると、

This is the driver provided directly by 3com; most or all of these cards are also supported by the 3c59x driver.
ということで、 [Kondara-users.ja:07244] で触れられている、ちょっとアレなソースかも。

bootnet.imgのinitrdに含まれる、module-infoには、 ネットワークインターフェースについての記述はないみたいだったが、 drivers.img には、3Comのカードの記述がたくさんあった。 expertモードでこれを読ませれば、3Comのインターフェースも認識されるんだろう (当り→進・新・真コンダラ掲示板)。 drivres.imgを1st stageで、フロッピー以外から読めるといいんだけど。

やっぱり、 以下にも書くように、テキストモードでインストーラ起動後にAlt+F3で確認すると、 bootnet.img ではネットワークカードのモジュールは一つもロードされていなかった。

DMAについて

DMAの設定は、RC2では、 インストーラのカーネルでは、# CONFIG_IDEDMA_AUTO is not set インストール後のカーネルでは、CONFIG_IDEDMA_PCI_AUTO=y となっていた。 Beta3のインストール後には、CONFIG_IDEDMA_PCI_AUTO=y。 インストーラのカーネルではサポートされていないDMAが、 インストール後のカーネルではサポートされている可能性もある。

RC2のインストールを終えるか、 Beta3でカーネルの更新をするかをしないと、確認できない。

2nd stageの読み込みについて

インストーラのカーネルでは、CONFIG_REISERFS_FS=m となっていて、 Reiserfsのとりあつかいに、モジュールが必要なことがわかる。 また、CONFIG_VFAT_FS=mとあり、vfatのとりあつかいにもモジュールが必要。

インストーラのinitrd.imgをzcatしてからループバックマウントして見てみると、 modules/modules.cgzというファイルがある。これを、zcat modules.cgz | cpio --liltすると、vfat.oはあるが、reiserfs.oは無い。

これが、1st stageが2nd stageを、 vfatからは読めるが、Reiserfsからは読めない理由だろう、

ループバックマウントについて

インストーラのカーネルでは、 CONFIG_BLK_DEV_LOOP=y、 # CONFIG_BLK_DEV_LOOP_GEN is not set。 インストール後には、 CONFIG_BLK_DEV_LOOP=m CONFIG_BLK_DEV_LOOP_GEN=y。 ここで、Configure.helpを見れば、 CONFIG_BLK_DEV_LOOPがループバックマウント一般、 CONFIG_BLK_DEV_LOOP_GENが暗号化ファイルシステムに関するもののようで、 インストーラのカーネルはループバックマウントに対応していそうだ。

ループバックマウントの準備

RC1のインストールで、 mountコマンドに-oオプションが無いことがわかっている。 この場合は、losetupコマンドを使ってループバックマウントができそうだ。

rpm -qi losetupより、losetupは、 mount-X.nosrc.rpmから作られていることがわかる。 KondaraのCVSからmount.specを見ると、ソースは、 ftp://ftp.kernel.org/pub/linux/utils/util-linux/util-linux-%{version}.tar.bz2 にある。

このソースをいただいてきて、Beta3上で展開し、以下のように、 コンパイル、static linkしておく。 dynamic linkだとインスーラ環境で実行できない。

  1. ソースを展開し、util-linux-Xディレクトリに移動
  2. ./configure で、コンパイラ等のチェック。
  3. make -C lib LDFLAGS=-static xstrncpy.o で、losetupコマンドに必要なオブジェクトファイルを生成する。
  4. make -C mount LDFLAGS="$LDFLAGS -I../lib" loop.h losetup で、losetupコマンドをstatic linkに作成する。
  5. strip mount/losetup で、不要なシンボルの削除。
  6. file mount/losetup で、static linkされていることを確認。 strip後に400KB強

インストール、途中まで

/dev/hda5/win98vfat
/dev/hda7/boot ext2
/dev/hda8/ Reiserfs
/dev/hda9/home Reiserfs

というBeta3環境から、 /dev/hda7と/dev/hda8に新規インストールすることを考える。

2nd stageのファイルの展開

baseディレクトリの内容を、1st stageから見える場所に展開しておき、 rpmsディレクトリ(中身は空でいいみたい)を用意しておくと、 2nd stageに移れるようだ。

/home/asumi/Kondaraと/win98/asumi/Kondaraとに、 2.1RC2-i586-bin-disc1.isoの/Kondara/baseディレクトリをコピーし、 rpmsディレクトリを作成。 baseディレクトリは 56MB弱だが、 起動するイメージに合わせてコピーするファイルを選べば、 もっと小さくて済むだろう。

1st stageのファイルの準備

Beta3上で2.1RC2-i586-bin-disc1.isoをループバックマウントし、 その中からさらに、ブートフロッピー用のイメージ boot.img か bootnet.img をループバックマウントする。

ループバックマウントされたブートフロッピーのイメージから、 vmlinuz と initrd.img を適当なファイル名で、/home/asumi 以下にコピーして、 /etc/lilo.ocnf を準備する。例えば、下記を追加。

image=/home/asumi/boot/vmlinuz-rc2-boot
        label=rc2boot
        initrd=/home/asumi/boot/initrd-boot.img
        append="text devfs=nomount"

image=/home/asumi/boot/vmlinuz-rc2-bootnet
        label=rc2bootnet
        initrd=/home/asumi/boot/initrd-bootnet.img
        append="text devfs=nomount"

1st stageの起動

再起動直前に/sbin/liloをして、 ブート用のカーネルとinitrdの位置をブートローダに設定したのち、再起動。 liloから上記の例だと、rc2boot や rc2bootnet を選択すると、 それぞれ、 boot.img と bootnet.img に対応するインストーラが、 textモードで起動することになる。

bootnet.img

まずは、bootnet.img で起動してみる。 Alt+F3で確認すると、3c59xも3c90xもロードされず、 ネットワークカードの選択肢にも現れない。 drivers.imgを読みこむことを考えないと、これ以上は進まないみたいだな。

やはり、drivers.imgを使うことを前提にしているようです。 進・新・真コンダラ掲示板

boot.img

boot.imgでは、 Alt+F3で確認すると、3c59x.oがロードされている。え? あぁ。 これは、2nd stageが読み込まれたときにロードされるものなのかな? (未確認です。すみません。)

インストール元にハードディスクを選択。 Riserfsのパーティションは、2nd stageがあると認識してくれないが、 vfatのパーティションからは、2nd stageを読み込んで先に進むことができる。 上に書いたように、initrd.imgにvfat.oは含まれるが、 reiserfs.oは含まれないのが理由だろう。


開発者のみなさまに感謝

Back to gin-an diary. [zunda]
zunda <zunda at freeshell.org>