SCSI 構成の PC に Slackware 8 をインストール

MBR

vmware workstation 3 に、Linux Slackware 8 をインストールしてみました。

さっさとおわるはずが、LILO との大奮闘記になってしまいました。


vmware workstation 3

vmware とは、日本では ネットワールド社 が販売している DOS/V エミュレータです。

このソフトウェアを利用することで、コンピュータ上に複数の PC を同時実行させることができます。動作可能なプラットフォームは Windows / Linux と用意されています。

ネットワークのブリッジ機能がまた便利で、これを使うとネットワーク上では物理的にコンピュータが存在しているものと勘違いしてしまうほどです。今回試したのは workstation パッケージなのですが、ほかにも GSX Server という、サーバ運用を目的としたパッケージや、独自の OS として稼動する ESX Server など、魅力的なパッケージもあります。けれど少々お高い…。

 

Linux Slackware 8

Slackware は、http://www.slackware.com/ から入手できる Linux ディストリビューションのひとつです。

日本ではパッケージとしては販売されていないようですけど、個人的にはお気に入りのディストリビューションです。慣れてしまっているせいもあるのですけど、シンプルでとてもわかりやすいです。ただ、インストールは慣れるまで大変かも…。

 

Slackware 8 のインストール

はじめに

この記録は単純に Slackware 8 の流れを示すという目的だったのですけど、vmware が SCSI 構成であったことから思わぬトラブルに巻き込まれてしまいました。

最終的にうまくいきましたが、その都合で、この記事は SCSI 構成のコンピュータへ Slackware 8 をインストールするお話、さらにはセットアップ時に損じた LILO を自力で入れなおそうというお話にまで発展してしまいました。

 

インストール環境

Platform vmware workstation 3
CPU Intel Pentium III 1GHz
Memory 64MB
SCSI 0:0 Virtual Disk 2.0GB
SCSI 0:1 Virtual Disk 0.2GB
IDE 1:0 DVD/CD-ROM
LAN Bridge

このようなハード構成です。

vmware なので、LAN は AMD PCNet というものです。CPU はホストコンピュータのを継承しますので Pentium III 1GHz となりました。

 

Slackware の入手

Slackware 8 をダウンロードします。

今回は http://www.slackware.com/ のダウンロードサイトより、ISO 形式のディスクイメージ (install.iso) を入手しました。それを CD-R に焼けば出来上がりです。

 

インストール開始

CD-ROM からの起動

CD-ROM イメージを焼いた Slackware は CD からの起動に対応しているので、CD-ROM ドライブへ Slackware 8 のインストールディスクを挿入して、仮想マシンを立ち上げます。

boot:

まずは起動オプションの選択です。とくに必要はないので、Enter キーを押して先へ進みます。

とりあえずあとあと役に立つので流れる文字をチェックしてみたところ、IDE は、PIIX4、SCSI は BusLogic BT-958 のコントローラが再現されているようです。

Enter 1 to select a keyboard map:

続いて使用するキーボードマップを選択することができます。日本語 109 キーボードを使用しているので、1 を押してキー配列を選択することにしました。

が、残念ながら jp-106 っぽい選択肢はなし…。しょうがないので US キー配列で続行です。KEYBOARD TEST のところでは、1 を入力することで決定となります。

ちなみに、インストール終了後は、loadkeys jp106 と打ち込むと、日本語キー配列が有効になります。

slackware login:

CD-ROM 起動の Slackware へログインします。root と入力してログインします。

 

ディスクの領域作成

Slackware をインストールするパーティションを設定します。

fdisk か cfdisk のどちらかをつかってパーティションの設定をすることができます。今までは fdisk を使用していたのですけど、今回は cfdisk を使ってみることにしました。

 

今回は SCSI ハードディスクなので cfdisk /dev/sda としてみましたが、なにやらエラーが発生です。fdisk /dev/sda の場合はちゃんとできそうな感じです。

FATAL ERROR: Bad signature on partition table

Press any key to exit cfdisk

cfdisk の簡易ヘルプを見てみると、-z オプションをつけることで "zero partition table" で開始できるという記載がありました。作りたてのディスクなので、このオプションをつけないといけないのか…?

cfdisk -z /dev/sda

ということで上記のように cfdisk を起動してみると、ちゃんと空のディスクとして認識してくれました。

 

今回は /dev/sda と /dev/sdb の2台のハードディスクが搭載されています。

そのうちの 2GB の方 (/dev/sda) をまるごとルートパーティションに、もうひとつの 500MB のほうを少々贅沢かもしれないのですけどまるごとスワップに設定します。

[new] で [Primary] パーティションを選択して、ディフォルトで表示されていた 2095.11 すべてを割り当てました。パーティションタイプは Linux でいいのでそのままです。あと起動パーティションなので [Bootable] も設定しておきましょう。

編集が終わったら、[write] を選んで変更を書き込めば完成です。

同じようにしてもう一台もまるごと割り当てます。こちらはスワップ用なので、[type] で Linux swap (82) を設定しておきます。Bootable にはしません。

 

これでディスクの作成は完了です。

インストールを続けるにあたって、コンピュータを再起動してもう一度 Slackware を起動します。ちなみに reboot コマンドを使用することで、コンピュータを再起動することもできます。

 

なお、このとき vmware だと、再起動後に仮想マシンが起動しなくなります。どうもハードディスクを初期化して起動可能にするとだめそうです。

これは vmware の BIOS で、CD-ROM よりも先にハードディスクからの起動を試みるのが原因のようです。なので、再起動直後の BIOS 画面で F2 を押して、設定画面を表示させます。そして Boot メニューの ATAPI CD-ROM Drive のところで "+" を押して、優先順位をハードディスクよりも先にしておきます。

ちなみに予断ですが、vmware を再起動すると、仮想マシンからマウスが解放されます。なので、BIOS 設定画面に移動するためにはまず、vmware が起動したときに画面をクリックしてから F2 を押さなくてはなりません。

このあたりがわかるまで、僕は 「BIOS に入れない〜><;」 と心の中で叫んでいたので、念のため…。Windows NT でのお話だけかも知れませんけど。

 

インストール

Slackware を CD-ROM から起動させて、root でログオンします。そして setup と打ち込むとインストーラが起動します。

Slackware Linux Setup (version 8.0.0)

セットアップメニューが起動しました。上から順に進んでいくことになるのですが、僕はとりあえず KEYMAP からです。ので、KEYMAP の項を選択しました。

kEYBOARD MAP SELECTION

改めて、日本語 109 キーボード配列の存在に期待したのですけど、やっぱりありませんでした。なので US 配列を選択しました。

SWAP SPACE DETECTED

続いてスワップ領域の設定です。cfdisk でスワップパーティションを作成してあるので、その /dev/sdb1 が自動的に認識されました。<Yes> を選択して、このパーティションをスワップ用に登録します。

スワップ領域の初期化が行われ、スワップの設定が完了します。<EXIT> を押して次のメニューへ進みます。

Select Linux installation partition:

ルート ( / ) に使用するパーティションの選択です。今回は /dev/sda1 を利用しますので、画面に表示されている /dev/sda1 を選択して <OK> を選択します。

続いて初期化です。FORMAT / CHECK / No から選択できます。FORMAT はディスクの初期化を、CHECK は初期化+エラーチェックを、No は初期化しないを意味します。

CHECK はやたらと時間がかかる印象があるので、今回は単に FORMAT だけをしてみることにしました。するとすぐに初期化完了です。

ほかにもパーティションがある場合はそれらをどのマウントポイントに位置付けるかなどの設定があるのですが、今回はこの1つだけで終わりです。

/etc/fstab に登録されたことを通知するメッセージが表示されたら、<EXIT> を押して次へ進みます。

CONTINUE?

これからインストールするにあたって、インストールデバイスの選択を行う必要があるようです。で、続けるかたずねられるので、<Yes> を押して次へ進みます。

 

 

SOURCE MEDIA SELECTION

今回は CD-ROM からインストールするので、[install from Slackware CD-ROM] を選択しました。試してはいませんけど、ほかにもハードディスク内からや NFS からの導入もできるようです。

すると自動的に ATAPI CD-ROM を認識してくれました。続いてソフトウェアのインストールを行うかをたずねられますので <Yes> を押して次へ進みます。

PACKAGE SERIES SELECTION

インストールするパッケージの選択です。全部入れてもいいのでしょうけど、個人的には X Window は不要だったので、そのあたりは除外しました。

最終的には、Base Linux system / Various Applications that do not need X / Program Development / Linux kernel source / Networking / Tcl/Tk script languages を選択することとなりました。

CONTINUE?

インストールを続けるかたずねられますので、<Yes> を選択して次へ進みます。

SELECT PROMPTING MODE

どのようにソフトウェアのインストールを進めていくかの選択です。[full] を選択すれば、先ほど選んだパッケージのすべてをインストールすることができるのですけど、個人的にはもうすこし選りすぐりたいので [menu] を選択します。

SELECTING SOFTWARE FROM SERIES A (BASE LINUX SYSTEM) など…。

次から次へと選択したパッケージの詳細を決定していきます。なかなかめんどいですけど、つぎつぎと選んでは進めていきます。パッケージごとに選択してインストールを繰り返しますのでかかりっきりです。

ちなみに Slackware 8 は、カーネルを 2.2.19 と 2.4.5 から選択することができます。BASE LINUX SYSTEM のところで選びます。

 

途中、mods245.tgz でエラー発生です。GZIP の CRC エラーだとか…。なにやら Linux 2.4.5 系のモジュールのようなので、とりあえず思い切って無視してみます。

MAKE BOOTDISK

Linux の起動ディスク作成です。フロッピーがあれば作っておいていいでしょう。僕はとりあえず作りませんでした。作る場合は [format] でフロッピーを初期化してから [lilo] を選択してあげればいいはずです。

作った場合であれ、作らなかった場合であれ、[continue] を押して次へ進みます。

MODEM CONFIGURATION

モデムの設定です。モデムは載せていませんので、[no modem] を選択しました。

SCREEN FONT CONFIGURATION

スクリーンフォントの変更ができます。はじめのころは面白がって変更していましたけど、もはやわざわざフォントを変更することはしていません。ので、<No> を選んで次に進んでしまいました。

INSTALL LILO

Linux ブートローダのインストールです。[simple] を選択してインストールしました。

CONFIGURE LILO TO USE FRAME BUFFER CONSOLE?

高解像度のコンソールを使用するかどうかの設定です。このたとえではわからないかもしれないですけど、MSX の漢字モードみたいな感じでけっこう好きなのですけどね、あえて [standard] を選択しました。

SELECT LILO DESTINATION

ブートローダのインストール先を決定します。

今まで、Linux 専用にする場合は [MBR] にインストールしていました。そうしないとうまくいかなかった記憶があるのですけど、なんだか [Root] を選ぶのが正しい気がする…、直感ですけど。

なので実験もかねて [Root] にインストールしてみることにします。注意書きとして Bootable パーティションでなくてはならないと書いてあるのですけど、逆に見れば Bootable パーティションになっていれば平気なはず。

あと、複数の OS を共存させる場合はどれを選んだらいいのでしょうね、経験がないのでわからないです。

CONFIGURE NETWORK?

ネットワークの設定をするかをたずねられましたので、<Yes> を選択して設定を行いました。

NETWORK CONFIGURATION

ネットワークの設定です。<OK> を押して netconfig を起動させます。

ENTER HOSTNAME

つづいてホスト名の設定です。コンピュータの名前ですので、何かをつけてあげましょう。

 

ENTER DOMAIN NAME FOR '****'

インターネットドメイン名の設定です。特に必要なかったので何も入力しませんでした。といいますか、ドット ( . ) だけを打って次へ進みます。

SETUP IP FOR '****..'

IP アドレスの設定です。固定 IP にするか (static IP)、DHCP サーバから取得するか (DHCP) の選択です。今回は固定 IP を割り当てることにしたので、[static IP] を選択しました。

ENTER IP ADDRESS FOR '****..'

IP アドレスの入力です。とりあえずプライベートアドレスを 1 つ割り当てておきました。

ENTER NETMASK FOR LOCAL NETWORK

先ほど入力した IP アドレスのマスク情報です。適切なものを入力しましょう。

ENTER GATEWAY ADDRESS

ゲートウェイのアドレスです。僕の環境では、インターネットへ接続するためのルータがあるので、その IP アドレスを設定しておきました。

USE A NAMESERVER?

ドメイン名の名前解決に DNS サーバを使用するかどうかをたずねられます。使用したい DNS があったので、<Yes> を選択して次へ進みました。

そして、使用したい DNS サーバの IP アドレスを入力します。

PROBE FOR NETWORK CARD?

ネットワークアダプタ (LAN カード) を自動的に認識させるかどうかを選択します。今回は [probe] を選んで、ネットワークアダプタを自動認識させてみることにしました。

すると pcnet32.o というモジュールが認識されました。

NETWORK SETUP COMPLETE

これでネットワークの設定は完了です。<OK> を押して次へ進みます。

なお、ネットワークの設定は Linux インストール後でも、netsetup コマンドによって行うこともできますし、/etc/rc.d/ ディレクトリの中にある rc.inet1 や rc.inet2 といったスクリプトを編集することによっても可能です。

HARDWARE CLOCK SET TO UTC?

ハードウェア上の時刻を、国際標準時に設定するかを聞かれます。個人的には日本の時刻にしたいので、[NO] を選択しておくことにしました。

そして地域の設定です。Asia/Tokyo が、個人的に一番近い場所だったのでそこを選択しておくことにします。

WARNING: NO ROOT PASSWORD DETECTED

Linux の管理権限である、root アカウントのパスワードが設定されていないから設定するか尋ねられます。ので、<Yes> を押してパスワードを設定することにしました。

それにしても、WARNING という表記はいかがなものか ^^; というのも、まだセットアップ中なのでパスワードが設定されていないのも当然のような気がするのですけどね。

なんだか WARNING っていうと、ちょっと手違いを怒られている感じがするのは僕だけでしょうか。

SETUP COMPLETE

ようやく Slackware 8 のインストールが完了しました。<OK> を押すとメニューへ戻りますので、[EXIT] を選んでセットアップを抜け、reboot コマンドで再起動を行います。

 

起動失敗…

奮闘記…

 

さて、再起動してみましたが、なんと Linux が起動しないではありませんか/汗

心当たりとしては、いままで MBR に LILO をインストールしていたのを、今回は Root にしてしまったからといったところでしょうか。とりあえず、ブートパーティションになっているかを確認してみましょう。

とりあえず、vmware の BIOS では、HDD から起動できるようにはなっています。

 

ので、もう一度 CD-ROM から Slackware 8 を起動させてみることにします。

boot: root=/dev/sda1 ro

として、先ほどインストールした Linux のある /dev/sda1 をルートパーティションとして指定してみましたが、カーネルイメージが見つからないということで通りませんでした。

もしかすると SCSI デバイスはまだ選べないのかもしれません。ということで CD-ROM のカーネルイメージで起動することにしました。

 

そして再び setup を起動します。

そしてまずは TARGET から /dev/sda1 がルートパーティションであることを知らせます。その際に初期化を行わないように気をつけましょう。

そしてメニューから CONFIGURE を選択します。

ブートディスクの作成は [cotinue] を選択してパスしました。そして MODEM は [no modem]、CD-ROM を起動時にマウントするかというところは [NO] を選択しておきました。スクリーンフォントの設定は [NO] です。

そして LILO のインストールになりましたが、こんどは [expert] を選択してみることにしました。今回の目的は単に LILO を MBR にインストールしたいだけなので、自動設定を行うよりは、expert の方がいいかと思ったからです。

そしてメニューを眺めてみると、[Recycle] という、既存の lilo.conf を使用するというオプションを発見。なのでこれを選択することにしました。

 

ネットワークの設定はすでにしてあるはずなので、<No> を選択してスキップします。時刻は先ほど同様、Localtime の Asia/Tokyo を選びます。

 

続いて /etc/fstab を置き換えるか尋ねられました。

この /etc/fstab というのは、Linux 起動時にどのパーティションをどこのマウントポイントへ割り当てるかなどを記したファイルなので、今は変更したくなかったので <No> を選択しました。

 

…、これでセットアップ完了です/汗

LILO をどこへインストールするかを尋ねられなかったのは、もしかすると Recycle を選択してしまったからなのかもしれません。

とりあえず、改善されていなそうですけど、再起動を行ってみることにします。

 

再起動してみましたが、やっぱり状況は改善されませんでした。なので、もう一度、CD-ROM から立ち上げて LILO の設定のところまでいってみることにしました。

そしてもう一度 [expert] を選択してみることにします。

そして今度は、[Install] を選んでみることにしました。確証はないのですけど、[Linux] とか選んで /etc/lilo.conf を書き換えて、その変更をインストールしそうな感じがしたので…。

ということで [Install] を選択してみたのですが、まだ設定ができていないとのことでエラーでした。

 

しかたないので [Begin] を選択して設定からやってみようと思います。

念のため、既存の lilo.conf の内容を見てみると、主要な部分は次のようになっていました。

boot = /dev/sda1

message = /boot/boot_message.txt

prompt

timeout = 1200

change-rules

reset

vga = normal

 

image = /vmlinuz

root = /dev/sda1

label = Linux

read-only

[Begin] を選択すると、まずは append 行の設定です。既存の lilo.conf を見たところ、特に append= という行は存在していないようなので、ここは何も設定しませんでした。

つづいてバッファーコンソールの選択。[standard] を選択しました。

そして次に、ようやく LILO をどこにインストールするかという場面になりました。こんどは迷わず [MBR] を選択しました。

それが終わると、LILO の待ち時間の設定です。あんまり長い必要もないので、5 秒を選択しました。ちなみにこれは、timeout = のところの設定です。ここは 1/10 秒単位の設定のようです。

 

これでいいのでしょうか…。

ふたたび LILO の設定メニューに戻りますので、とりあえず現在の lilo.conf の設定内容を見てみると、起動イメージを指定する部分 (image = ) のブロックがごっそりと抜けていました。そのような質問はなかったので、当然といえば当然なのですけどね。

なので [Linux] を選択して、Linux のカーネルイメージ情報を追加します。

まずどのパーティションから Linux を起動するか尋ねられますので、/dev/sda1 と入力しました。そしてこの設定のラベル名 (PARTITION NAME) の設定です。とりあえず Linux とでもしておきましょうか。

 

これでいいようです。

lilo.conf を見てみると、ちゃんと /vmlinuz とかの指定もされていました。今度こそ [Install] を押して設定を完了できそうですね。

ということで Install を押してみると、今度はちゃんとインストールが行われたようでした。

 

続いてネットワークの設定…、なのですけど、もう用は済んでしまったので、この段階でいきなり再起動してみることにします。すると今度は、LI という表示の段階でとまってしまいました。

LILO を呼び出そうという意欲は感じられるのですが、失敗です。

 

とりあえず、起動ディスクを作ってみましょう。

ということで、CD-ROM から Slackware 8 を起動して、ふたたび setup に突入です。TARGET を選択してから CONFIGURE へ進みます。

そして、最初の起動ディスク作成のところで、[format] を使用してディスクを初期化してから、[lilo] を選択して起動フロッピーを作成します。

…、としている間に vmware がエラーです。AIO: NOT IMPLEMENTED F(554):2670 bugNr=1971 だそうです。ログを見てみると、当然ですが FDD 周りがエラーのようです。う〜ん、フロッピーディスクが怪しい…、ということで別のメディアで試してみました。が、同じ症状でした。

 

とりあえず、起動ディスクをあきらめ、もういちど LILO の設定です。今度は無難に [simple] を選び、インストール場所を [MBR] としてみました。そして LILO のインストールが終わってから再起動…。けれど症状はいっしょですね…。

 

では、フロッピーを物理ドライブではなく、ディスクイメージにしてみたら…。ということで、vmware の設定で、 A: を仮想ディスクにして、起動ディスクを作ってみることにします。

vmware を起動すると、Loading kernel... のところでとまってしまいました。CD-ROM からのブートなのでまだなんの関係もないはず、ただのハングアップでしょう。ということで再起動です。

今度はちゃんと起動できたようです。

セットアップを起動して、仮想ディスクに起動ディスクを作成してみました。すると今度はうまくいったみたいです。なのでさっそく起動フロッピーで起動させてみたところ、またしても起動失敗です。

L 80 80 80 80 80 80 .......

というように、妙な仕上がりです。とはいえ、以前にも見たことがあるので、純粋に起動ディスクの作成に失敗しただけかもしれません。もう一度起動ディスクを作成してみましたが、症状変わらず…。

 

LILO の再インストール

LILO を再インストールするにはどうしたものか…、ということで調べてみたところ、基本とも言える情報が見つかりました。

/etc/lilo.conf の boot= の項目が、/dev/sda のようにディスク名の場合には MBR へのインストール、/dev/sda1 のようにパーティションの場合にはいわゆる Root へのインストールになるようです。

ということは、個人的にやった expert での設定は大間違いということになりますね/汗

 

ということで、LILO の導入再チャレンジです。

で、気づいたのですけど、liloconfig なる設定ツールを発見。わざわざ面倒な手続きを踏まなくても、とりあえず lilo の設定をいきなり呼び出せるようです。ただ、結局は TARGET を設定しないとだめそう…。

そしていったん [simple] で再設定を行ったのですが、やっぱり改善は見られませんでした。

 

SCSI ハードディスクの場合、リニアモードなる状態で起動しないといけない場合があるとか、ということで lilo.conf の image= のブロックに linear を追加してみることにしました。

が、その後、どうやって lilo をインストールしたらいいかがわかりません。

 

ためしに lilo とだけ入力してみると、/etc/lilo.conf が見つからないといわれてしまいます。なので lilo -C /mnt/etc/lilo.conf とやると、今度はブートイメージが見つからないと言われてしまいました。

あらかじめ用意されている / の RAMDISK には vmlinuz をコピーする隙はないし…。もしかしたら lilo.conf に map=/mnt/ とか、install=/mnt/boot.b とか、そういった記載をすればいいのかな…、とも思いましたけど、そのあとが続かなそうだったのでやめてみました。

 

そしていろいろと考えたところ、ln -s /mnt/vmlinuz として、vmlinuz のシンボリックリンクを作成する方法を思いつきました。さっそくやってみると、もう一息といった感じです。

Added Linux* の後、/mnt/etc/lilo.conf の 38 行目でエラーという、具体的なエラーが表示されました。その行を見てみると、linear と書き加えた行でした。どうやら間違ってしまっているようです。

インターネットで調べてみると、Option linear という指定をするという記載もありましたので、さっそく記載方法を変更してみました。けれどそれも失敗。

いろいろと試してみたところ、boot = とか記載するところの1行に、linear と書き込むことで、とりあえずエラーはなくなりました。そして、恐る恐る再起動をしてみると、なんと LILO がちゃんと読み込まれるではないですか。

 

最終的に、lilo.conf の主要部分は次のようになりました。

boot = /dev/sda

message = /boot/boot_message.txt

prompt

timeout = 30

linear

 

change-rules

reset

vga = normal

 

image = /vmlinuz

root = /dev/sda1

label = Linux

read-only

MBR である /dev/sda からブートする設定で、linear オプションも設定しています。

CD-ROM 起動直後のセットアップ段階であったため、/mnt/etc/lilo.conf に存在していました。なので臨時措置として、/mnt/vmlinuz のシンボリックリンクを、セットアップ時にマウントされる RAM ディスクへ設定し、lilo の有効化を図りました。

cd /

ln -s /mnt/vmlinuz

lilo -C /mnt/etc/lilo.conf

こうすることで、見事、LILO が起動するようになりました。

 

インストール完了

調べているうちにわかったのですが、NT Loader などの OS ローダがすでに存在している場合は Root へ、それらが存在していない場合には MBR へ LILO をインストールしないといけないことが判明です。

なにはともあれ、無事 LILO も機能して大満足です。丸一日かけた甲斐がありました。