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) へのコピーを行ってみましたが、今度は問題なくコピーをすることが出来ました。

 

ということは、大容量の領域であっても、インストールが終わってしまえば特に問題はなさそうな感じですね。もっとも慎重に調べたわけではないので、確かなことはいえませんけど^^;;