この章では、まず初めに Debian のブートに関する一般的な情報について 説明した上で、個々のインストール方法についてそれぞれ節を設けて説明し、 最後にトラブルシューティングに関するアドバイスについて述べます。
ブートパラメータは、周辺機器の正確な制御を保証するために、 一般的に用いられる Linux カーネルのパラメータです。 カーネルはたいてい周辺機器の情報を自動的に検出します。しかし、 場合によってカーネルには少々の補助が必要です。
ブートに用いるコンソールファームウェアによって、
カーネルにパラメータを渡す方法は異なってきます。
それらの方法については、それぞれのブート方法ごとに後述します。
ブートパラメータに関する完全な情報は、 Linux
ブートプロンプト HOWTO
にあります。この節では最も重要なパラメータの概略のみを扱います。
このシステムを初めてブートする場合は、デフォルトのブートパラメーター を試して (つまり、パラメーターになにも引数を設定しないで)、 正確に動作するかどうかを確認してください。 おそらくそれで問題はないでしょう。もしなにか問題があったら、 あとでリブートし、お使いのハードウェアに関する情報をシステムに 伝えるために必要になる、特別なパラメータを調べてください。
カーネルがブートする際そのプロセスの最初のほうで、 Memory: availablek/totalk available というメッセージが表示されるでしょう。 total は利用可能な全メモリー量をキロバイト単位で表しています。 もしこれが、実際に搭載している RAM の量と一致しなかったならば、 mem=ram というパラメータが必要でしょう。 ram のところには、実際に搭載しているメモリー量を、 キロバイト単位なら ``k''、メガバイト単位なら ``m'' を付加して当てはめます。 例えば mem=8192k も mem=8m も 8MB の RAM を意味します。
お使いのモニタが白黒表示しかできないものでしたら、 ブート引数に mono を使ってください。 そうしなければ、インストールの際、標準でカラー表示が用いられます。
ブートの際にシリアルコンソールを使っているならば、 通常カーネルはこちらを自動検出します。 ただ、シリアルコンソール経由でブートしたいコンピュータに、 ビデオカード (フレームバッファ) とキーボードがあるならば、 カーネルに console=デバイス名 という引数を 渡す必要があるかもしれません。 デバイス名の箇所には、お使いになる シリアルデバイスを当てはめますが、 こちらは普通 ``ttyS0'' のようなものになるでしょう。
繰り返しますが、ブートパラメータに関する完全な情報は、 Linux
ブートプロンプト HOWTO
にあります。こちらにはマイナーなハードウェアに関する情報もあります。
また雑多な共通事項に関しては、ブートプロセスに関するトラブルシューティング,
Section 6.10 にて説明します。
一連のブート作業が行われている間、 「〜が見つかりません can't find something」や、 「〜がありません something not present」、 「〜は初期化できません can't initialize something」、あるいは 「このリリースのドライバは、〜に依存しています this driver release depends on something」 といったたくさんのメッセージが表示されるかもしれません。 これらのメッセージのほとんどは、気にする必要のないものです。 というのも、これらのメッセージは、 インストーラのカーネルがさまざまな周辺機器に幅広く対応するように 構築されているために、表示されるものだからです。 明らかに、可能な限りあらゆる周辺機器を装備したようなコンピュータは 存在しません。そのためオペレーティングシステムは、 実際には搭載されていない周辺機器を探そうとしていくらか文句を言っているのです。 また、システムが短時間停止しているかに見えることもあるかもしれません。 このことは、実際にシステムに搭載されていないデバイスからの反応を、 カーネルが待っていることから起きることです。 もし、システムのブートに我慢できないほど時間がかかる場合は、 独自のカーネルを構築してください。(新しいカーネルのコンパイル, Section 8.4 をご覧ください。)
場合によっては、既存のオペレーティングシステムからブートなさりたい かもしれません。 インストーラを他の方法を用いてブートすることは可能ですが、 基本システムはディスクからインストールしてください。
ext2fs パーティション、あるいは Minix パーティションから Debian をインストールすることもできます。 こちらのインストール方法は、例えばすでにインストールされた Linux システムを Debian で完全に置き換える場合に適切です。
Debian
のインストール元のパーティションと、インストール先のパーティションは、別にしなければならないことにご注意ください。
(すなわち、/
、/usr
、/lib
などそのすべてを別にしてください。)
既存の Linux パーティションからインストールする場合は、 以下の説明にしたがってください。
http://http.us.debian.org/debian/dists/potato/main/disks-alpha/current/base2_2.tgz
もしブート可能な CD ドライブをお持ちで、お使いのアーキテクチャやシステムが CD-ROM からのブートをサポートしているなら、フロッピーはまったく必要ありません。 Alpha における CD-ROM からのブートは、i386 の場合よりも若干複雑です。 しかし、必要になるフロッピーの数を減らすためには、 この方法には試すだけの値打ちがあります。 CD やフロッピーからの Alpha システムのブートについては、 より詳しい情報を インストーラのブート, 章 6 にてご覧ください。
CD-ROMからブートできない場合でも、Debian の基本システムを CD-ROM からインストールすることは可能です。 単に他のインストール方法の一つを用いてブートしてください。 つまり、基本システムや追加パッケージをインストールするときに、 ``基本システムのインストール'', Section 7.12 の説明にしたがって、CD-ROM ドライブをインストールシステムとして選択すればよいのです。
BOOTP サーバ と TFTP サーバの二つのサーバを設定する必要があります。
BOOTP は、あるコンピュータが自身の IP アドレスと、 ブートイメージをネットワークのどこから入手できるかを伝えるために 用意されている IP プロトコルです。 Sparc や PowerPC マシンの Open Firmware とは異なり、 SRM コンソールは自身の IP アドレスを調べるために RARP を使いませんので、Alpha マシンをネットワークブートするには BOOTP を利用しなければなりません。 なお、SRM コンソールで ネットワークインターフェイスの IP 設定を 直接設定することも可能です [3]。
簡易ファイル転送プロトコル Trivial File Transfer Protocol (TFTP) は、ブートイメージをクライアントに提供するために用いられます。 理論的には、これらのプロトコルが用意されていれば、 どんなプラットフォームのいかなるサーバでも利用できます。 この節の例では、SunOS 4.x、SunOS 5.x (別名 Solaris) と GNU/Linux 用のコマンドを紹介します。
GNU/Linux から利用できる BOOTP サーバには、 CMU bootpd と ISC dhcpd の二つがあります。 これらはそれぞれ Debian GNU/Linux の bootp および dhcp パッケージに収録されています。
CMU bootpd を利用するには、まず最初に /etc/inetd.conf にある適切な行を (加えるなり) コメントから外すなりしなければなりません。 そのためには Debian GNU/Linux の場合、 update-inetd --enable bootps を実行してから、 /etc/init.d/inetd reload を実行すればよいでしょう。 その行は以下のようになっているはずです。
bootps dgram udp wait root /usr/sbin/bootpd bootpd - i -t 120
次に /etc/bootptab ファイルを作成しなければなりません。 こちらは、古きよき BSD の printcap(5) および、 termcap(5)、disktab(5) ファイルと似た、 暗号形式になっています。 より詳しい情報については、bootptab(5) man ページをご覧ください。 なお、CMU bootpd を利用する場合、 クライアントのハードウェア (MAC) アドレスを調べておかなければなりません。
一方、ISC dhcpd を利用しての BOOTP の設定はとても簡単です。 というのも ISC dhcpd は、BOOTP クライアントを DHCP クライアントの特別な一例として適切に扱ってくれるからです。 ブートイメージのファイル名や、 クライアント対クライアントで NFS ルートのパスなどを オプションとして指定したい場合や、 ご自分のマシンに BOOTP や DHCP を使って 固定アドレスを割り当てたい場合を除けば、 クライアントのハードウェア (MAC) アドレスを調べる必要はまったくありません。 クライアントが所属するサブネットの設定ブロックに allow bootp 命令を追加した上で、 /etc/init.d/dhcpd restart として dhcpd を再起動するだけで結構です。
TFTP サーバを用意するためには、 最初に tftpd
が動作するようになっているかを確認してください。 普通
/etc/inetd.conf
に以下の行を付け加えれば、 tftpd
が動作するように設定できます。
tftp dgram udp wait root /usr/etc/in.tftpd in.tftpd -l /boot
このファイルをご覧になって、in.tftpd
の引数として使われているディレクトリを覚えておいてください。
後で必要になります。 in.tftpd
のバージョンによっては、
-l オプションを用いることで、
システムログにすべてのリクエストを記録することができます。
こちらはブートエラーを診断するのに有益です。 もし /etc/inetd.conf
に変更が必要だったならば、 このファイルに変更があったことを、 実行中の
inetd
のプロセスに伝える必要があります。 Debian マシンなら
/etc/init.d/netbase reload (potato/2.2 以降のシステムでは
/etc/init.d/inetd reload) を実行し、
また他のマシンでは、inetd
のプロセス ID を探して、 kill -1
inetd のプロセス ID を実行してください。
次に、必要な TFTP ブートイメージ tftpboot.img
を システムファイルインストールの解説,
Section 5.4 で探し、それを tftpd
ブートイメージディレクトリに置いてください。 一般的にこのディレクトリは、Debian
では /boot
に、 他のオペレーティングシステムでは
/tftpboot
になります。 そうしたら、このファイルから、
tftpd
が特定のクライアントのブートに用いる
ファイルにリンクを張らなければなりません。
残念ながら、そのファイル名のつけられ方に明確な標準というものはなく、
それは、TFTP クライアントによって異なってきます。
ただたいてい、TFTP クライアントが探すファイルは、 クライアントの IP
アドレス (16 進数)-クライアントのアーキテクチャ となります。
クライアントの IP アドレス (16 進数) を算定するには、クライアントの
IP アドレスの各バイトを取り出し、 それを 16 進数に変換してください。
お手元のマシンに bc
プログラムがあれば、
このプログラムを使うこともできます。 この場合、最初に出力に 16
進数を使うよう設定するために obase=16
を発行して、それからクライアントの IP アドレスの各要素を一つずつ入力します。
クライアントのアーキテクチャに関しては、
いくつかの値を試してみてください。
Alpha の場合、SRM boot コマンドで引数 -file を用いるか、 BOOT_FILE 環境変数を設定して、 (相対パスでブートイメージを直接指定するかたちで) ファイル名を指定しなければなりません。 あるいは、(ISC dhcpd で filename 命令を使い) そのファイル名を BOOTP 経由で指定することもできます。 Open Firmware とは異なり、 SRM にはデフォルトのファイル名というものは存在しませんので、 上記の方法のいずれかを用いて ファイル名を指定しなければなりません。 一旦その名前が限定できたら、 ln /boot/tftpboot.img /boot/ファイルネーム のようにして、リンクを張ってください。
さあ、実際にお使いのシステムをブートする準備をしてください。 SRM でイーサネットインターフェイスは ewa という接頭辞を用いて名付けられ、 show dev コマンドを利用すると 以下のようにその一覧が表示されます。
>>>show dev ewa0.0.0.9.0 EWA0 08-00-2B-86-98-65 ewb0.0.0.11.0 EWB0 08-00-2B-86-98-54 ewc0.0.0.2002.0 EWC0 00-06-2B-01-32-B0
そして、一番目のイーサネットインターフェイスからブートを行なう場合には、 以下のように入力します。
>>>boot ewa0
シリアルコンソールを利用したい場合には、 console= パラメータをカーネルに伝えなければなりません。 こちらは SRM boot コマンドで 引数 -flags を利用することで行なえます。 シリアルポートには /dev 以下の対応するファイルと 同じ名前が付けられます。 例えば、ewa0 からブートし、 一番目のシリアルポートからコンソールを利用するには、 以下のように入力します。
>>>boot ewa0 -flags console=ttyS0
NOT YET WRITTEN
RAM ディスクに余分なものをロードせず、 新たに作成した nfs-root ファイルシステムからブートすることから、 こちらの方法は 「メモリの少ないシステムへの TFTP によるインストール」 とよく似ています こちらの方法では、tftpboot イメージへのシンボリックリンクを カーネルイメージ (例えば linux-a.out) へのシンボリックリンクに 置き換える必要があります。 ネットワーク越しのブートに関する本文書の著者の経験はもっぱら、 同じサーバにすべてのデーモンが動作している RARP/TFTP に基づいたものです。 (sparc ワークステーションは、tftp リクエストを 先に送っておいた rarp リクエストに応答するサーバに返します。) しかし、Linux は BOOTP プロトコルもサポートしていますが、 この文書の著者は、それをどのように設定するのか知りません :-((。 このマニュアルにそれが同様に付記される必要はあるでしょうか?
コンソールファームウェアはフラッシュ ROM に収められ、 Alpha システムに電源が入ったときやリセットが行なわれたとき実行されます。 Alpha システムで用いられているコンソールの仕様には異なるものが二つあり、 以下の二種類のコンソールファームウェアが利用できます。
ユーザの観点からすれば、SRM と ARC の最も重要な相違点は、 選択するコンソールによって ブート可能なディスクパーティション構造が異なってくる点です。
ARC を使う場合、ブートディスクには (cfdisk
などで作成した) MS-DOS
パーティションテーブルを使わなければなりません。 そのため、ARC
からぷーとする場合は、MS-DOS パーティションテーブルが
「ネイティブ」なパーティションフォーマットになります。 実際、AlphaBIOS
にはディスクパーティションユーティリティが含まれているので、 Linux
をインストールする前に、ファームウェアのメニューから
ご自分のディスクのパーティションを作成されたいかもしれません。
反対に、SRM は MS-DOS パーティションテーブルとは非互換です [4]。 Tru64 Unix は BSD ディスクラベルフォーマットを利用するために、 SRM をインストールする場合、 こちらが「ネイティブ」なパーティションフォーマットとなります。
GNU/Linux は、両方のコンソールからブートできる 唯一の Alpha 用オペレーティングシステムです。 そのため、その選択は、同一のマシン上で他にどのような オペレーティングシステムを動作させたいかによっても異なってくるでしょう。 他の Unix ライクなオペレーティングシステム (Tru64 Unix や FreeBSD、OpenBSD、NetBSD) は SRM からのみブートでき、一方、Windows NT は ARC からのみブートできます、
以下の表は、利用可能でサポートされている システムおよびコンソールの組み合わせをまとめたものです。 (機種名については CPU や、マザーボード、ビデオカード のサポート, Section 2.1.2 をご覧ください。). 以下に示されている `ARC' という単語は、 あらゆる ARC 互換コンソールを指しています。
機種 サポートされているコンソールタイプ ==== ================================== alcor ARC か SRM avanti ARC か SRM book1 SRM のみ cabriolet ARC か SRM dp264 SRM のみ eb164 ARC か SRM eb64p ARC か SRM eb66 ARC か SRM eb66p ARC か SRM jensen SRM のみ lx164 ARC か SRM miata ARC か SRM mikasa ARC か SRM mikasa-p SRM のみ nautilus ARC のみ (マザーボードのマニュアルをご覧ください。) noname ARC か SRM noritake SRM のみ noritake-p SRM のみ pc164 ARC か SRM rawhide SRM のみ ruffian ARC のみ sable SRM のみ sable-g SRM のみ sx164 ARC か SRM takara ARC か SRM xl ARC のみ xlt ARC か SRM
一般的に Linux を直接ブートできるコンソールはありませんので、
ブートローダの仲介による補助が必要になります。 Linux ローダには主に
MILO
と aboot
の二つがあります。
MILO
はそれ自身がコンソールであり、 メモリ上で ARC や SRM
に取って替ります。 MILO
は ARC および SRM
のどちらからでもブートが可能で、 ARC コンソールから Linux
をブートする唯一の方法でもあります。 MILO
はプラットフォームに依存し、 (それぞれのシステムに応じて異なる
MILO
が必要になるので、) MILO
はそれらのシステム向けのもののみ存在します。 各システム向けの ARC
サポートは上記の表に示されています。 (残念なことに更新はされていませんが)
MILO
HOWTO
もご覧ください。
aboot
は小さな、プラットフォーム独立のブートローダです。 こちらは
SRM からのみ動作します。 aboot
に関するより詳しい情報については、
(残念なことに更新はされていませんが) SRM HOWTO
をご覧ください。
システムのコンソールファームウェアによって、 また、MILO
が利用できるかどうかによって、 一般的には以下の三つの方法があります。
SRM -> aboot SRM -> MILO ARC -> MILO
Alpha Processor, Inc. の UP1000 マザーボード (サブアーキテクチャ名 `nautilus') は他のものとは異なっています。 こちらは API 専用のブートローダを利用し、 AlphaBIOS ファームウェアの下で動作します。 UP1000 用のインストールディスクは (まだ) ありませんが、 マニュアルの説明にしたがい、インストールディスクの root.bin を利用して、`generic' あるいは `nautilus' カーネルをブートすればインストールはできるはずです。
現行 (2000 年 2 月現在) の Alpha システムのすべてで MILO
が利用できるわけではないことや、 SRM ファームウェアを旧式の Alpha
に用意するために OpenVMS や Tru64 Unix
のライセンスを購入する必要がもはやないことから、 GNU/Linux
を新たにインストールする際、 Windows NT とのデュアルブートが必要なく、 DOS
パーティションディスクがないならば、 SRM および aboot
の利用をお勧めします。
AlphaServer の大半や、現行のサーバおよびワークステーション製品には、 そのファームウェアに SRM および AlphaBIOS の両方が含まれています。 さまざまな拡張ボードのような "half-flash" マシンならば、 ファームウェアを更新することで、 異なるファームウェアに切り替えることもできます。 また、一度 SRM をインストールすれば、(`arc' コマンドを利用して) フロッピーディスクから ARC/AlphaBIOS を実行することができます。
他のアーキテクチャの場合と同様、Debian をインストールする前に、 ファームウェア
[5]
は利用できる最新のバージョンをインストールしてください。 Alpha
の最新ファームウェアは Alpha
ファームウェアアップデート
から入手できます。
SRM プロンプト (>>>
) で、
以下のコマンドを発行してください。
>>> boot dva0 -flags 0
場合によっては dva0
の箇所を
実際のデバイス名に置き換えてください。 通常、dva0
はフロッピーです。
>>> show dev
と入力すれば、(例えば CD からブートを行ないたい場合などに)
デバイス一覧を見ることができます。 MILO
を利用してブートを行なう場合は、 -flags
引数が無視されることにご注意ください。 そのため boot dva0
と入力してください。
すべてが適切に動作していたら、 Linux カーネルがブートしているのを確認できるでしょう。
aboot
を利用してブートする際に、
カーネルパラメータを指定したい場合は、 以下のコマンドを用いてください。
>>> boot dva0 -file linux.gz -flags "root=/dev/fd0 load_ramdisk=1 arguments"
(こちらを一行で入力し、) 必要があれば、 dva0
となっている SRM
ブートデバイス名を、 fd0
のような Linux
ブートデバイス名に置き換え、 必要なカーネルパラメータを arguments
の箇所で指定してください。
MILO
を利用してブートを行なう際に、
カーネルパラメータを指定したい場合は、 一旦 MILO
のプロンプトを呼び出して、 ブートストラップを中断する必要があるでしょう。 MILO によるブート, Section
6.9 をご覧ください。
OS 選択メニューで、ブートローダとして linload.exe
を、 OS
パスとして milo
を指定してください。
ブートには新規に作成したエントリを用いてください。
インストーラをブートするには、MILO のプロンプトで 以下のコマンドを入力してください。
MILO> boot fd0:linux.gz root=/dev/fd0 load_ramdisk=1
フロッピー以外のメディアからブートを行ないたい場合は、 上記の例にある
fd0
の箇所を、 Linux 式の適切なデバイス名に変更してください。
なお、help
コマンドを使えば、MILO
の簡単なコマンドリファレンスを参照することができます。
もし何か問題があって、ブートプロセスの最中にカーネルがハングしたり、 実際に搭載してある周辺機器やドライブが正確に認識されなかった場合は、 まず最初に、ブートパラメータの引数, Section 6.1 の説明の通りにブートパラメーターを 確認してください。
またこのような問題は、増設したカードや周辺機器を取り外すことで 解決できることもよくあります。こちらも試してみて、 もう一度ブートしてみてください。
もしまだ何か問題がある場合は、バグレポートを提出してみてください。
これは、submit@bugs.debian.org
宛に電子メールで送ってください。
なお、その電子メールの先頭行には必ず以下の記述を付け加えてください。
Package: boot-floppies Version: version
version のところに、お使いの boot-floppies パッケージのバージョンを必ず書き添えてください。 もしそのバージョンがご不明の場合は、そのフロッピーをダウンロード した日付を、どのセクション ( ``stable'' や ``frozen'' など) からダウンロードしたかを添えて、書いてください。
バグレポートには以下のような情報を添えてください。
architecture: alpha model: お使いになっているハードウェアのモデル名 memory: RAM の量 scsi: もしあれば、SCSI ホストアダプタの名前 cd-rom: CD-ROM のモデル名とインターフェースの種類 (例えば ATAPI) network card: もしあれば、ネットワークインターフェースカードの名前 pcmcia: PCMCIA デバイスの詳細
問題の性質にもよりますが、インストール先のディスクが IDE ディスクなのか SCSI ディスクなのか、また、オーディオのような他の周辺機器、ディスク容量、 ビデオカードのモデル名などの情報を書き添えることも有益でしょう。
バグレポートの際には、カーネルがハングした際最後に表示される カーネルメッセージを添えて、何が問題なのかを説明してください。 また、問題が起きるまでにシステムに対して行ったことも記述してください