8GB よりも後ろの領域に Slackware 8.1 をインストール
TROUBLE REPORT
Slackware 8.1
Slackware は、http://www.slackware.com/ から入手できる Linux ディストリビューションのひとつです。
日本ではパッケージとしては販売されていないようですけど、個人的にはお気に入りのディストリビューションです。慣れてしまっているせいもあるのですけど、シンプルでとてもわかりやすいです。ただ、インストールは慣れるまで大変かも…。
今回は、以前から何かと失敗している、8GB よりも後ろのパーティションへ Slackware をインストールしてみたときのお話です。
インストールする PC は、SONY の VAIO PCG-505V/ABX というノートパソコンです。このハードディスクを 30GB に増設したものを使用します。メモリも 128MB に増設してあります。
パーティション構成
今回は先頭の 8GB より先の領域へインストールするということで、次のような極端なハードディスク構成にしてみることにします。
Device | Boot | Start | End | Blocks | Id | System |
---|---|---|---|---|---|---|
/dev/hda1 | - | 1 | 20806 | 10486192+ | c | Win95 FAT32 (LBA) |
/dev/hda2 | * | 20807 | 41612 | 10486224 | 83 | Linux native |
/dev/hda3 | - | 41613 | 42653 | 524664 | 82 | Linux swap |
Slackware 8.1 の起動ディスクを使って Linux を起動し、fdisk を使ってパーティションを設定しました。
これらはそれぞれ、上から順に +10240M, +10240M, +512M にてプライマリパーティションを割り当てています。そして System タイプを調整し、hda2 にブートのマークを付けました。
一応、hda1 に Windows 98 が、hda2 に Linux が hda3 に Linux のスワップが割り当てられることを想定しています。
CD-ROM からのインストールで失敗
今回は CD-ROM ドライブとして、純正の PCGA-CD5 を使用しています。が、Linux 上で使うには起動時に ide2=0x180,0x386 という引数を渡さなくてはいけないようです。
この辺りのお話は EZ-NET レポート: Linux インストール時に CD-ROM を認識させる の方に書いてみましたので、似たような環境の方は参考にしてみてください。
Slackware 8.1 インストール CD-ROM から Linux を起動します。
今回は "bareapm.i" を使ってセットアップ用の Linux を起動させています。起動したら、setup と打ち込んでインストールを開始します。 そして swap として /dev/hda3 を設定し、ターゲットディスクとして /dev/hda2 を指定します。
そしてソースメディアのところで "Install from Slackware CD-ROM" を選択すると、PCGA-CD5 が IDE CD-ROM として認識されます。
そしてパッケージの選択です。
サーバを構築するならばいろいろとこだわるのですけど、とりあえずのインストールなのでディフォルトのまま full でインストールすることにします。
そういえば個人的なお話ですけど、Slackware をフルインストールするのは今回が初めてです^^;;
これで問題なくインストールが完了するならば、8GB 以上の領域へのインストールも問題ないということになります。さ…、どうなるでしょう。
…結果、やはりエラーが発生してしまいました。
となると、やっぱり Linux の領域を先頭の 8GB 以内に抑えなくてはいけないのでしょうか…。
手がかりを調べてみる
なんとか 8GB の壁を越えた方へ Linux をインストールする方法はないものか…。
しらべてみるとまず、8GB を超えた領域へ Linux のインストールしたときに正常に起動できないというお話がありました。これはまた後のお話ですけどちょっとメモしておくことにします。
そのような状況の場合、lilo.conf の Linear 行があればそれを削除し、image= の行の前に LBA32 を追加する必要があるそうです。
Slackware の場合はその前、インストール時にエラーが出てしまうので、そのあたりも調べなくてはいけません。
調べてみると Vine Linux 1.1 でのお話でしたが、ブートパーティションが 1024 シリンダ未満で、1パーティションの最大容量は 8GB までという制限があるそうです。
もしかすると Slackware でも同じ制限なのかもしれません。
ためしにブートパーティションの位置はそのままで、容量を 4096M に変更して、もう一度インストールを行ってみましたが、やっぱりエラーが発生する箇所は違うながらも同様のエラーが発生してしまいました。
ならば、起動イメージで "bare245.i" を使ったらどうなるか…。
この起動イメージを使うと、Kernel 2.4.5 でインストールを行うことが出来るようです。今回のエラーがなんらかの制約であるとすれば、新しいバージョンならば回避されている可能性が…、
ということで実験してみましたけど、やはりエラーとなりました。
ハードディスクからのインストール
もうひとつ、今度は余っていた領域 (/dev/hda4) にあらたに Linux パーティションを作成して CD-ROM のデータをすべてコピー、そこからインストールしてみます。
mke2fs /dev/hda4
mount /dev/hde /cdrom
mount /dev/hda4 /tmp
として、hda4 を初期化したら、/cdrom へ CD-ROM を、 /tmp へ新しいハードディスクをマウントします。
そして
cp -Rf /cdrom/* /tmp
とやって、CD-ROM のデータをすべて、ハードディスクへコピーします。
…、とやったら、
cp: /tmp/slackware/xap1/netscape.tgz: Input/output error
cp: /tmp/slackware/y1/bsdgames.tgz: Input/output error
というように、インストール中にも引っかかったようなエラーが出ました。もしかすると CD-R の焼き損じかな…? 一応、焼いたときにはデータチェックもしたのですけどね^^;;
一応、今回の /dev/hda4 は 8GB 以上のところにあるので、もう一度、今度は /dev/hda1 へ CD-ROM のデータをコピーしてみることにします。
8GB 以内の領域からインストール
あまらせてあった /dev/hda1 を Linux native に変更して初期化、今度はそこへ CD-ROM データをコピーしてみることにします。
mke2fs /dev/hda1
mount /dev/hde /cdrom
mount /dev/hda1 /tmp
として、hda1 を初期化したら、/cdrom へ CD-ROM を、 /tmp へ新しいハードディスクをマウントします。そして
cp -Rf /cdrom/* /tmp
とやって、CD-ROM のデータをすべて、ハードディスクへコピーします。
すると今度は、コピーは問題なく完了しました。
やっぱり、8GB 以上の場所にあるのが問題なのかもしれないですね。なお、/dev/hda1 は 10GB の領域なので、大きさが 8GB を超えてしまうパーティションについては、確実なところはいえませんが、とりあえず大丈夫みたいですね。
とりあえずデータのコピーは完了したので、成功するかどうかは分りませんけど /dev/hda1 のデータを使ってインストールをやってみます。念のため再起動して、今度は純粋に "bare.i" のみの ide2 の認識はなしでやってみることにしました。
スワップは /dev/hda3 へ、インストールは /dev/hda2 へ行います。
そしてソースメディアの選択では、Install from a hard drive partition を選択して、/dev/hda1 を指定します。ソースディレクトリは /slakware (注: /slackware ではないです) を指定すればよさそうです。
そしてフルインストールを行ってみると、なんとエラーなく次のステップへ進んでしまいました。
ということは…、8GB を超えない位置のハードディスクからなら、その先のハードディスクへもインストール可能…、ということなのでしょうか…。
あ、CD-ROM でのコピー時の失敗なので、CD-ROM から大容量ディスクへのコピーがうまくいかない、と捉えるのが自然かもしれないです。 そういえばいままでも、CD-ROM から 8GB 越えのドライブへのインストールでうまくいかなかったし…。
とりあえずインストール完了後、再起動してみると、しっかりと Slackware (Kernel 2.2.19) が起動しました。
とりあえず関係ないですけど、lilo.conf の中身を調べてみると、lba32 は有効になっているようです。ついでに、CD-ROM が使えるようにその下へ次の行を追加しておきます。
append="ide2=0x180,0x386"
そしてコマンドラインから
lilo
と打ち込んで情報を更新します。こうしなくてもなにやら /dev/hdc にて CD-ROM ドライブが認識されるような感じです。ためしに /dev/hdc の方を試してみましたけど、こちらもとりあえず、問題なく使用できそうな感じです。
とりあえずこんな感じで、Slackware のインストールは大丈夫そうですね^^;;
CD-ROM 周りの確認
わざわざ ide2 の指定をしなくても、インストール後の Slackware 8.1 では CD-ROM を認識できるようなので、その辺りの確認をしてみました。
まず、デバイス名ですが、 ide2 を指定したときは /dev/hde になるのに対して、指定しない場合は /dev/hdc に割り当てられるようです。
起動中のメッセージを確認してみると、次のようなものが目に付きます。
Intel PCIC probe:
Ricoh RL5C475 rev 00 PCI-to-CardBus at slot 00:0a, mem 0x68000000
host opts [0]: [isa irq] [io 3/6/1] [mem 3/6/1] [pci irq 9] [lat 168/176] [bus 32/34]
ISA irqs (default) = 3,4,5,7,10,11,12,15 PCI status changes
cs: memory probe 0xa00000000-0xa0ffffff: clean.
cs: IO port probe 0x0100-0x04ff: excluding 0x140-0x147 0x170-0x177 0x220-0x22f 0x320-0x327 0x370-0x37f 0x388-0x38f 0x4d0-0x4d7
cs: I port probe 0x0148-0x016f: clean.
cs: I port probe 0x0178-0x021f: clean.
cs: I port probe 0x0230-0x031f: clean.
cs: I port probe 0x0328-0x036f: clean.
cs: I port probe 0x0380-0x0387: clean.
cs: I port probe 0x0390-0x04cf: clean.
cs: I port probe 0x04d8-0x04ff: clean.
cs: I port probe 0x0800-0x08ff: clean.
cs: I port probe 0x0a00-0x0aff: clean.
cs: I port probe 0x0c00-0x0cff: clean.
ide2: ports already in use, skipping probe
hdc: UJDB110, ATAPI CDROM drive
ide2: ports already in use, skipping probe
Uniform CD-ROM driver Revision: 3.11
ide_cs: hdc: Vcc = 5.0, Vpp = 0.0
hdc: packet command error: status=0x51 { DriveReady SeekComplete Error }
hdc: packet command error: error=0x50
ATAPI device hdc:
Error: Illegal request -- (Sense key=0x05)
Invalid field in command packet -- (asc=0x24, ascq=0x00)
The failed "Start/Stop Unit" packet command was:
"1b 00 00 00 03 00 00 00 00 00 00 00 "
Error in command packet byte 4 bit 0
cdrom: open failed.
VFS: Disk change detected on device ide1(22,0)
VFS: Disk change detected on device ide1(22,0)
hdc: timeout waiting for DMA
hdc: irq timeout: status=0x59 { DriveReady SeekComplete DataRequest Error }
hdc: irq timeout: error=0x40
hdc: timeout waiting for DMA
hdc: irq timeout: status=0x51 { DriveReady SeekComplete Error }
hdc: irq timeout: error=0x40
hdc: timeout waiting for DMA
hdc: irq timeout: status=0x51 { DriveReady SeekComplete Error }
hdc: irq timeout: error=0x40
hdc: timeout waiting for DMA
hdc: irq timeout: status=0x51 { DriveReady SeekComplete Error }
hdc: irq timeout: error=0x40
hdc: DMA disabled
hdc: ATAPI reset complete
VFS: Disk change detected on device ide1(22,0)
ISO 9660 Extensions: RRIP_1991A
非常に長くなってしまいましたけど、真ん中あたりにエラーっぽいメッセージがある以外は、その上は PCMCIA 系の認識手続きで、その下は DMA をサポートしているかのチェックのような感じがします。
しかも、CD-ROM ドライブにディスクを入れた状態で起動すると、上記の真ん中あたりのメッセージ
Uniform CD-ROM driver Revision: 3.11
ide_cs: hdc: Vcc = 5.0, Vpp = 0.0
よりも下のエラーメッセージは表示されなくなりました。
append="ide2=0x180,0x386" を LILO で指定した場合は、
ide2: ports already in use, skipping probe
というメッセージもなくなるようです。影響はわかりませんが^^;;;
最後に…
調べてみるとなんだか、 CD-ROM 大容量ディスクから 8GB 以上の領域へのデータ転送が失敗しているような…、なんだかそんな感じがしました。
なのでインストールが完了した Linux を使って、最初に失敗した CD-ROM (/dev/hde) からハードディスク (/dev/hda4) へのコピーを行ってみましたが、今度は問題なくコピーをすることが出来ました。
ということは、大容量の領域であっても、インストールが終わってしまえば特に問題はなさそうな感じですね。もっとも慎重に調べたわけではないので、確かなことはいえませんけど^^;;