2002.1.19.-
2002.1.23. カーネルのこと追加
Kondara2.1RC1のDell Latitude L400 (128MB)へのインストール記録。
今回は残念ながら失敗記録になってしまいました。 ネットワーク経由のインストール (
bootnet.img
) では、 PCのネットワークカードが使えず、 ローカルハードディスクからのインストール(boot.img
あるい は、ja/boot.img
)では、 reiserfsのインストール元は認識されず、 vfatからはパッケージ情報の読み込み中に、 anacondaのエラーで終了となってしまいました。 このエラーは、 CD-ROMの2枚目と3枚目からもrpmをコピーすることで回避できましたが、 今回は時間切れ。残念。ただ、今回試した、LILOからインストーラを起動する方法は、 フロッピードライブの壊れたPCでも応用ができそうなので、 次回、また挑戦してみようと思います。 RC2に期待…ってもう出てたりして。
というわけで、今回気になったのは以下の点。
- インストーラのカーネルが、起動時に、
hda: IC25N020ATDA04-0, ATA DISK drive (中略) hda:hda: timeout waiting for DMA ide_dmaproc chipset supported ide_dma_timeout func only: 14 hda: status error:status=0x58 { DriveReady SeekComplete DataRequest } hda: drive not ready for commands.という警告を出すようになりました。Beta3では出ていませんでした。 カーネルのバージョンが変わったのかな? 何かカーネルオプションがあるのかな?- ネットワークからのインストールの際、 ネットワークカード (3C905C-TX Compatible、ノートPCのマザーボードに直接搭載) が認識されませんでした。 Beta3までは、3Com 3c590/3c595 Vortexとして認識されていたものです。
- ローカルのハードディスクからのインストールの際、 reiserfsに展開したインストール元が認識されませんでした。 単なる制限事項なのかな?
最初の2項目は、カーネルの不具合のようですね。 [Kondara-users.ja:07244] で詳しく書かれています。 しかし、今まで動いていたものが何故…。 ネットワーク経由の新規インストールはむずかしいかな?
次回へのtodoは、
- 2nd stageでのループバックマウント
- インスーラカーネルの不具合を解明
フロッピードライブの無い状態でのインストールができないものかと、 無い頭をヒネってみました。
/usr/share/doc/JF/txt/KickStart-HOWTO.txt.gz
等を見ると、
インストーラは、MS-DOSフロッピーにある、
SYSLINUXという仕組みでロードされるのだそうです。
man initrd
より、
ブートローダがカーネルとinitrdをメモリにロードし、
カーネルが起動するときに、
initrdの内容をルートファイルシステムとして展開するようだ。
そして、/linuxrc
というファイルがあれば、
それを実行する、ということもわかります。
で、CD-ROMの一枚目の、images/boot.img
を、
ループバックマウントして眺めて見ると、
anako.msg expert.msg initrd.img param.msg syslinux.cfg
vmlinuz boot.msg general.msg ldlinux.sys rescue.msg template.img
というファイルがあります。
syslinux.cfg
はテキストファイルで、
という内容だとわかります。 たとえば、default linux prompt 1 timeout 600 display boot.msg F1 boot.msg F2 general.msg F3 expert.msg F4 param.msg F5 rescue.msg F7 anako.msg label linux kernel vmlinuz append initrd=initrd.img text devfs=nomount label expert kernel vmlinuz append expert initrd=initrd.img devfs=nomount label ks kernel vmlinuz append ks initrd=initrd.img devfs=nomount
label linux
からの3行を、
LILOに模倣してもらえばいいのではないか、と想像してみる。
ただいま、ターゲットのPCには、Kondara2.1B3が、
という構成で入ってます。 以下のようにして、ブートディスクの内容をとりだしました。hda1 vfat C: 1-487 hda5 vfat D: /win98 488-879 hda6 swap 880-928 hda7 ext2 /boot 929-929 hda8 reiserfs / 930-1280 hda9 reiserfs /home 1281-2432
mount /home/asumi/rc1iso/2.1RC1-i586-bin-disc1.iso /home/asumi/mnt/cd -o loop
で、CDの1枚目をループバックマウント
mount -t msdos /home/asumi/mnt/cd/images/boot.img /home/asumi/mnt/fd
で、ブートディスクをループバックマウント
cp /home/asumi/mnt/fd/initrd.img /home/asumi/boot/initrd-rc1install.img cp /home/asumi/mnt/fd/vmlinuz /home/asumi/boot/vmlinuz-rc1install
/etc/lilo.conf
に以下を追加。
image=/home/asumi/boot/vmlinuz-rc1install label=rc1install initrd=/home/asumi/boot/initrd-rc1install.img append="text devfs=nomount"
/sbin/lilo
を実行してでLILOに知らせる、のですが、
作業でファイルの位置が変わってしまうとやっかいなので、
インストーラを起動する直前のシャットダウンの直前に、実行します。
これで、PCの起動時にLILOからインストーラが選べるようになりました。 initrd.imgはgzip圧縮されたファイルシステムのイメージで、 適当なファイルにzcatして、ループバックマウントすると、 /linuxrcが/sbin/initにシンボリックリンクされているのがわかります。 /sbin/initから/sbin/loaderが呼ばれ、インストール元の選択をする模様。
あ、もちろん! その前に、/etc /var /home をバックアップするのを忘れないようにしなくては。 /homeのパーティションはこれまでと同じように、 何事もなければそのまま受け継がれるのですが。
この方法を応用すれば、 loadlin.exeを使ってMS-DOSからインストーラを起動することもできそう♪ ただ、ループバックマウントしてカーネルやinitrdを取り出すとことはできないので、 素直にフロッピーディスクにrawrite.exeしたほうが、 ず〜っと早いという気もしますね。 あ、Linuxからでも、ddでフロッピーにboot.imgを書き出した方が 早いんだけど…。
インストーラは起動すると、メディアの場所をユーザーに尋ねて、 そこからインストールに必要なさまざまなファイルを読み込みます。
ここで必要なのは、
Kondara/RPMS
ディレクトリと
Kondara/base
ディレクトリ。
後者には、またいくつかファイルシステムのイメージがあり、
インストーラの実行に欠かせなさそうなことがわかります。
前者は、実際にインストールされるrpmが入っていそうなのですが、
ハードディスクに余裕もあり、今回はCDの1枚目を全部コピーしてしましました。
CDのイメージをループバックマウントできれば一番良いのですが、 今回はその方法をみつけることができませんでした。 次回に期待。
まずは既存のreiserfsにコピーしてみる。
…後述のとおり、これではインストールは進みませんでした。mount /home/asumi/rc1iso/2.1RC1-i586-bin-disc1.iso /home/asumi/mnt/cd -o loop mkdir -p /home/asumi/Kondara cp -a /home/asumi/mnt/cd/Kondara/RPMS /home/asumi/Kondara cp -a /home/asumi/mnt/cd/Kondara/base /home/asumi/Kondara
それじゃ、/win98にマウントしてあるVFATを使ってみよう。
…こちらだと、パッケージ情報を選択するところまで行ってエラーになりました。 以下、エラーメッセージを手で書き写したものです。mount /home/asumi/rc1iso/2.1RC1-i586-bin-disc1.iso /home/asumi/mnt/cd -o loop mkdir -p /home/asumi/Kondara cp -a /home/asumi/mnt/cd/Kondara/RPMS /win98/Kondara cp -a /home/asumi/mnt/cd/Kondara/base /win98/Kondara
Traceback (innermost last): File "/usr/bin/anacnda.real" line 404, in ? intf.run(todo, test = test) File "/var/tmp/anaconda-7.0.2-root//usr/lib/anaconda/text.py", line 1077, in run File "/var/tmp/anaconda-7.0.2-root//usr/lib/anaconda/textw/packages_text.py", line 33, in __call__ File "/var/tmp/anaconda-7.0.2-root//usr/lib/anaconda/todo.py", line 554, in getCompsList File "/var/tmp/anaconda-7.0.2-root//usr/lib/anaconda/harddrive.py", line 43, in readComps File "/var/tmp/anaconda-7.0.2-root//usr/lib/anaconda/comps.py", line 465, in __init__ File "/var/tmp/anaconda-7.0.2-root//usr/lib/anaconda/comps.py", line 438, in readCompsFile File "/var/tmp/anaconda-7.0.2-root//usr/lib/anaconda/comps.py", line 111, in __getitem__ KeyError: ammonite
さらに、CD-ROMの2枚目と3枚目から以下のようにrpmをコピーすることで、 パッケージ情報の選択から先に進み、 パッケージを選択するところまで行きましたが、 今回は時間切れです。残念。
mount /home/asumi/rc1iso/2.1RC1-i586-bin-disc2.iso /home/asumi/mnt/cd -o loop cd /home/asumi/mnt/cd/Kondara/RPMS cp * /win98/Kondara/rpms cd umount /home/asumi/mnt/cd mount /home/asumi/rc1iso/2.1RC1-i586-bin-disc3.iso /home/asumi/mnt/cd -o loop cd /home/asumi/mnt/cd/Kondara/RPMS cp * /win98/Kondara/rpms cd umount /home/asumi/mnt/cd
上記のようにして、あるいは普通に、
dd if=/home/asumi/mnt/cd/images/boot.img of=/dev/fd0 bs=1440k
などとして作ったフロッピーディスクから、
インストーラを起動しました。
LILOからの起動では、
テキストモード、エキスパートモードなどを選ぶ画面は出ません。
起動時に気になったのは、
などというエラーが見られること。 手で書き写しているので、不正確かもしれませんが。 LILOからの起動でも、フロッピーディスクからの起動でも変わらず、 それぞれのパーティションについてtimeoutになった後に、 言語を選ぶ画面になります。hda: IC25N020ATDA04-0, ATA DISK drive (中略) Partition check: hda:hda: timeout waiting for DMA ide_dmaproc chipset supported ide_dma_timeout func only: 14 hda: status error:status=0x58 { DriveReady SeekComplete DataRequest } hda: drive not ready for commands.
Beta3のカーネル (kernel-2.4.13-32k) や、Beta3のインストーラでは、 何の問題もなく起動していました。 以下は、Beta3のdmesgより。
hda: IC25N020ATDA04-0, ATA DISK drive ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 hda: 39070080 sectors (20004 MB) w/1806KiB Cache, CHS=2432/255/63, UDMA(33) Partition check: hda: hda1 hda2 < hda5 hda6 hda7 hda8 hda9 >
起動後、以下のようにインストールオプションを選んでいきました。
と表示されますが、* partition /dev/hda9 selected * mounting device hda9 as reiserfs
Device /dev/hda9 does not appear to contain a Kondara installation tree.
(英語版の場合)
と怒られ、先へ進めません。
cpio
がどうした、と書いてあったような気もする。
mount
コマントの書式に、-o
オプションが無く、
今回は断念。
-o
の無いmount
コマンドで
ループバックマウントする方法があったと思うのですが、失念。
ファイルシステム マウントポイント、フォーマットするか? hda5 WIn95 FAT32 /win98 hda6 swap hda7 ext2 /boot する hda8 reiserfs / する hda9 reiserfs /home しない
と、ここまで来て、パッケージ情報を読みこんでいる時に残念ながらエラー。 CD-ROMの2枚目と3枚目のrpmパッケージも、 インストール元のrpmsディレクトリにコピーすることで、 このエラーは回避できたのですが、人間の時間切れになってしまいました。
英語版bootnet.img
からのインストールも試みました。
インストーラは、LILOからの起動とフロッピーディスクからの起動で、
boot.img
と同様、DMAのタイムアウトをもらいました。
インストーラの起動後、NFSインストールを選択すると、
Which driver should I try?
と尋ねられるのですが、
AMD PCNet32, DEC 21040, Intel ...
という選択肢のどれも、
モジュールのロードに失敗して、
先へは進めませんでした。残念。
どうしてBeta3までスンナリできていたことができないのだろう…というわけで、 カーネルのバージョンを調べてみました。 Kernel-BOOTパケージは、インストーラのみに使われるカーネルだそうです。
2.4.13だったのが2.4.17になったわけですね。 ということは、RC2でも同じように苦労するという…。 インストーラ用のカーネルだけの問題という可能性もありますが。 カーネルのconfigureオプションも見てみなくちゃ…。
ChangeLog...
開発者のみなさまに感謝
Back to gin-an diary. zunda <zunda at freeshell.org>