2002.1.29.
Kondara2.1RC2のインストール試し記録。 フロッピーディスクもCD-ROMも無いという設定で、 自分一台でのクリーンインストールをめざしております。
今回も、RC1のインストールに引き続き、 インストールは途中で止めました(じゃなくて止まりました、だ)。 インストール先は、仕事に使っているマシンで、 失敗するとちょっと被害が大きいので、あんまり地雷は踏みたくないのです。 ヘタレだ。
今回は、2nd stageを立ち上げ、 ループバックマウントを可能にするところまで行きました。 ポイントは、スタティックリンクしたlosetupコマンドを用意しておくことです。 これで、rpmsディレクトリが2nd stageで、 ファイルツリーのどこに現われればいいかわかれば、 インストールも最後まで進めそうな気配です。
気づいたこと
- インストーラのカーネルでDMAが効かない →インストールが済んでしまえば、問題ないのかも。
- bootnet.imgで3c59xが検出されない →drivers.imgが読めれば、問題ないのかも。 (当り→進・新・真コンダラ掲示板)
- 2nd stageがreiserfsから検出できない →そんなことしようとする人は僕くらいなんだろうな。vfatからは読めるし。
今後の課題
- Kondara/rpmsディレクトリは2nd stageではどこに現われるべきなんだろう? →ちょっと調べたらわかりそう。
- drivres.imgを1st stageでフロッピー以外から読めないだろうか? →anacondaの改造か、どこかにオプションとして設定できる?
- インストール後のDMAとネットワークインターフェースの動作の確認 →これはインストールしてみるしかない。ちょっとコワイ。
- インストーラ環境で気軽に使えるエディタがあるといいなぁ。 →static linkすると、vimよりnviの方が小さくていい感じ。 マルチバイト文字は通らなくなるけど、 on-the-flyにインストーラやその他のファイルをいぢるには充分。 詳しくは、後日書きます。 …インストーラの環境では、
nvi: No terminal database
というエラーで起動できませんでした。残念。 コンパイル時に何かしなくちゃいけないんだね。あ。
もう少し探せば、インストーラを自作できるようなスクリプトもあるはずか。 それは、もう、βテストとはいわないわけだけど。
…とか思ってたら。 インストーラーのソース拾って来て、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の設定は、RC2では、 インストーラのカーネルでは、# CONFIG_IDEDMA_AUTO is not set インストール後のカーネルでは、CONFIG_IDEDMA_PCI_AUTO=y となっていた。 Beta3のインストール後には、CONFIG_IDEDMA_PCI_AUTO=y。 インストーラのカーネルではサポートされていないDMAが、 インストール後のカーネルではサポートされている可能性もある。
RC2のインストールを終えるか、 Beta3でカーネルの更新をするかをしないと、確認できない。
インストーラのカーネルでは、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だとインスーラ環境で実行できない。
./configure
で、コンパイラ等のチェック。
make -C lib LDFLAGS=-static xstrncpy.o
で、losetupコマンドに必要なオブジェクトファイルを生成する。
make -C mount LDFLAGS="$LDFLAGS -I../lib" loop.h losetup
で、losetupコマンドをstatic linkに作成する。
strip mount/losetup
で、不要なシンボルの削除。
file mount/losetup
で、static linkされていることを確認。
strip後に400KB強
/dev/hda5 | /win98 | vfat |
/dev/hda7 | /boot | ext2 |
/dev/hda8 | / | Reiserfs |
/dev/hda9 | /home | Reiserfs |
というBeta3環境から、 /dev/hda7と/dev/hda8に新規インストールすることを考える。
baseディレクトリの内容を、1st stageから見える場所に展開しておき、 rpmsディレクトリ(中身は空でいいみたい)を用意しておくと、 2nd stageに移れるようだ。
/home/asumi/Kondaraと/win98/asumi/Kondaraとに、 2.1RC2-i586-bin-disc1.isoの/Kondara/baseディレクトリをコピーし、 rpmsディレクトリを作成。 baseディレクトリは 56MB弱だが、 起動するイメージに合わせてコピーするファイルを選べば、 もっと小さくて済むだろう。
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"
再起動直前に/sbin/liloをして、 ブート用のカーネルとinitrdの位置をブートローダに設定したのち、再起動。 liloから上記の例だと、rc2boot や rc2bootnet を選択すると、 それぞれ、 boot.img と bootnet.img に対応するインストーラが、 textモードで起動することになる。
まずは、bootnet.img で起動してみる。 Alt+F3で確認すると、3c59xも3c90xもロードされず、 ネットワークカードの選択肢にも現れない。 drivers.imgを読みこむことを考えないと、これ以上は進まないみたいだな。
やはり、drivers.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 at freeshell.org>