Provided by: manpages-ja_0.5.0.0.20131015+dfsg-2_all
名前
bootparam - Linux カーネル起動時パラメータの解説
説明
Linux カーネルは起動するときに「コマンドラインオプション」あるいは 「起動時パラメータ」を 受け付ける。 これは一般に、 カーネルには決定できないハードウェアのパラメータをカーネルに渡 したい場合や、 カーネルが検出するであろう値を意図的に無効にしたり変更したりする場合に用い る。 カーネルが BIOS から直接起動されるとき (たとえば 'cp zImage /dev/fd0' でフロッピーにコピー したカーネルから起動するなど) は、 パラメータを指定する機会はない。 そのため、この起動時パ ラメータ機能を利用するためには、 GRUB のようなパラメータを指定できるブートローダーを使用し なければならない。 引数リスト カーネルのコマンドラインはパースされ、スペースで区切られた文字列 (起動時引数: boot arguments) のリストとなる。 ほとんどの起動時引数は次の書式である。 name[=value_1][,value_2]...[,value_10] ここで 'name' は、それに対応する値がカーネルのどの部分に渡されるものなのかを 識別するため の、他と重ならないキーワードである。 書式中の 10 という制限は実際に存在する。 現在のコード は、キーワードひとつあたり、コンマで区切られたパラメータを 10 個までしか取り扱うことができ ない。 (しかし、事情が非常に複雑な場合には、同じキーワードを再度利用して 10 個以上のパラ メータを与えることができるかもしれない。 対象となるハードウェアの設定関数がそれをサポート していれば、だが。) カーネルコマンドラインの識別はほとんどがカーネルソースファイル init/main.c に書かれてい る。 最初に、カーネルは 'root=', 'nfsroot=', 'nfsaddrs=', 'ro', 'rw', 'debug', 'init' と いった特別な引数があるかをチェックする。 これらの意味については後述する。 カーネルは次に設定関数のリスト (配列 bootsetups に含まれている) をスキャンし、 指定された 引数文字列 (例えば 'foo') が 特定のデバイスやカーネルの一部に対する設定関数 ('foo_setup()') に関連付けられているかを調べる。 例えばカーネルに foo=3,4,5,6 のようなパラ メータを与えたとすると、 カーネルは配列 bootsetups を調べて、 'foo' が登録されているか調べ る。 登録されていたら、'foo' に対応する設定関数 ('foo_setup()') をコールし、 カーネルコマ ンドラインに与えられた引数である 3, 4, 5, 6 を設定関数に渡す。 'foo=bar' という形式の引数のうち、 上記のように設定関数に受け入れられなかったものは、 環境 変数と解釈されて設定される。 (あまり役に立たない?) 例としては、'TERM=VT100' がある。 カーネルによって処理されず、環境変数としても解釈されなかった 残りの引数は、プロセス 1 に渡 されることになる。 通常このプロセス 1 は init(1) プログラムである。 init プロセスに渡され る引数で最もよく使われるのは、 'single' というキーワードである。 これを指定すると init は シングルユーザモードでコンピュータを起動し、 通常使われるデーモンは一切起動しない。 システ ムにインストールされている init(1) が どんな引数を受け付けるかは、 マニュアルページで調べ ること。 一般的な、デバイス固有ではない起動時引き数 'init=...' カーネルが実行する初期コマンドを設定する。 この指定がなされなかったり、指定したコマ ンドが見つからなかった場合には、 カーネルは /sbin/init, /etc/init, /bin/init, /bin/sh の順で実行を試み、すべてに失敗したら panic を起こす。 'nfsaddrs=...' nfs のブートアドレスを指定した文字列に設定する。 このブートアドレスはネットワーク ブートの場合に用いられる。 'nfsroot=...' nfs ルートの名前を設定する。 この文字列の先頭が '/'、','、数字のいずれでもでないと きは、 '/tftpboot/' が先頭に付加される。 この名前はネットワークブートの場合に用いら れる。 'no387' (カーネルのコンパイル時に CONFIG_BUGi386 が指定されたときのみ有効。) 一部の i387 コプロセッサチップには、 32 ビットプロテクトモードでの使用時に生じるバグがある。 例 えば初期の ULSI-387 チップは、 浮動小数点演算を行なうと確実にロックアップしてしま う。 この起動時引数 'no387' を指定すると、 Linux はコプロセッサがあってもそれを無視 するようになる。 なおもちろん、カーネルコンパイル時に浮動小数点演算をエミュレートす る (kernel math emulation) 指定をしなければならない! 'no-hlt' (カーネルのコンパイル時に CONFIG_BUGi386 が指定されたときのみ有効。) 初期の i486DX-100 チップの一部では 'hlt' 命令に問題があって、 この命令を使うとオペレーティ ングモードに正しく戻って来ない。 'no-hlt' を指定すれば、Linux はアイドリング時に CPU を停止 (halt) するかわりに無限ループを実行するようになる。 これによって、そのよ うなバグのあるチップでも Linux を使用できる。 'root=...' 起動時にルートファイルシステムとして使われるデバイスをカーネルに指定する。 デフォル トはコンパイル時に決定され、 通常はカーネルを構築したシステムのルートデバイスにな る。 この値を無効にして、 例えば 2 番目のフロッピーディスクドライブをルートデバイス に指定する場合は、 'root=/dev/fd1' とする。 ルートデバイスの指定にはシンボル形式と数値形式を用いることができる。 シンボル形式の 場合は /dev/XXYN という書式で指定する。 XX にはデバイスタイプを指定する。 Y にはド ライブレターもしくはドライブ番号、 N には (フロッピーディスクを除く) ディスクの パーティション番号を 10 進数の数値で指定する。 (ST-506 互換ハードディスクではデバイ スタイプが 'hd' で Y の範囲は 'a' から 'd'、 SCSI ディスクは 'sd' で Y は 'a' から 'e'、 Atari ACSI ディスクは 'ad' で Y は 'a' から 'e'、 Syquest EZ135 パラレルポー トリムーバブルディスクは 'ez' で Y は 'a' のみ、 XT ディスクは 'xt' で Y は 'a' か 'b'、 フロッピーディスクは 'fd' で Y にはドライブ番号を指定する。 fd0 は DOS の 'A:'、fd1 は 'B:' に対応している。 パーティションは存在しないので N は指定しない。) 最新のカーネルでは、他にも次のような多くのデバイスタイプを指定できる (ほとんどは CD-ROM だが): nfs, ram, scd, mcd, cdu535, aztcd, cm206cd, gscd, sbpcd, sonycd, bpcd。 (nfs はネットワークブートに、ram は RAM ディスクを使用する場合に用いる。) なお、これらはファイルシステム上でのデバイスの指定方法とは全く関係ない。 '/dev/' を 用いるのは単に慣習に過ぎない。 扱いにくいし移植性も良くないが、 上記のデバイスを major/minor 番号の数値で指定して もよい。 (例えば /dev/sda3 は major 番号 8、minor 番号 3 なので、 'root=0x803' と記 述できる。) 'rootfstype=...' 'rootfstype' オプションが指定されると、 カーネルは、 指定されたタイプであるとみなし てルートファイルシステムをマウントする。 このオプションは、 例えば、ext3 ファイルシ ステムを ext2 としてマウントし、 ルートファイルシステムのジャーナルを削除する場合に 便利である。 こうすると、 別のメディアからマシンを起動することなく ext3 から ext2 へ戻すことができる。 'ro' と 'rw' 'ro' オプションは、 ルートファイルシステムを 「読み出し専用」でマウントするようカー ネルに指示し、 fsck プログラムがファイルシステムの矛盾を検査できるようにする。 ファ イルシステムが「読み書き可能」として再マウントされる (つまり 'mount -w -n -o remount /') までの間は、 いかなるプロセスもこのファイルシステム上のファイルに書き込 むことはできない。 (mount(8) も参照。) rw オプションはルートファイルシステムを 「読み書き可能」でマウントするようカーネル に指示する。 こちらがデフォルトである。 'resume=...' このオプションは、 マシンを休止状態 (ハイバネーション) から再起動する際の、ディスク 上に保存したデータの起動位置をカーネルに指示する。 通常は、スワップパーティションや スワップファイルと同じである。例えば、 resume=/dev/hda2 'reserve=...' デバイスの自動検出から I/O ポートを保護するために用いる。 コマンドの形式は以下の通 り。 reserve=iobase,extent[,iobase,extent]... 機種によっては、 デバイスドライバによるデバイスの自動検出を、 特定の範囲に対しては 禁止しなければならないことがある。 ハードウェアが検出動作によって深刻な問題を引き起 こす場合や、 誤認識される可能性がある場合、 また単にカーネルにハードウェアを初期化 させたくない場合などがありうるだろう。 この起動時引数 reserve は、自動検出の対象外とする I/O ポートの範囲を指定する。 デバ イスドライバは、 他の起動時引数によって明示的に指定されない限り、 予約された範囲に 対して自動検出動作を行わない。 例えばブート時のコマンドラインに reserve=0x300,32 blah=0x300 と指定すると、'blah' を除くすべてのデバイスドライバは 0x300 から 0x31f の範囲を自動 検出の対象外とする。 'mem=...' 搭載されているメモリの量を返す BIOS コールは PC の仕様で定義されているが、これは最 大 64MB までしか返すことができない。 Linux は搭載メモリの量を調べるために、 起動時 にこの BIOS コールを使用する。 もし 64MB 以上の RAM を搭載している場合は、 この起動 時引数を用いて 実際のメモリ容量を Linux に知らせることができる。 値は 10 進数または 16 進数 (先頭に 0x を付加) の数値で指定し、 1024 倍を表す 'k' または 1048576 倍を表 す 'M' を末尾に付加できる。 以下は Linus による 'mem=' パラメータの解説である。 カーネルは 'mem=xx' パラメータとして どんな値を指定してもそれをそのまま受け入 れる。 だからそれが嘘だとわかったら、 遅かれ早かれひどいクラッシュをするだろ う。 パラメータはアクセスしうる最も高位の RAM アドレスを指示する。 だから例え ば 'mem=0x1000000' っていうのは 16MB のメモリがある、という意味になる。 96MB のマシンなら 'mem=0x6000000' だ。 注意: マシンによってはメモリの最上位の領域を BIOS のキャッシュやら何やらの た めに使っていることがあるから、 実際には 96MB をフルにアドレスすることはできな いかもしれない。 逆の場合もある。 いくつかのチップセットでは、 BIOS 領域に入っ ている物理メモリを最上位のメモリのさらに上にマップする。 よって最上位のメモリ はたとえば 96MB + 384kB なんて値になるかもしれない。 linux に実際より多いメモ リを教えてしまったとしたら、 まずいことが起きるだろう。 すぐにではないかもしれ ないけど、ゆくゆくは確実にね。 また、起動時引数に 'mem=nopentium' を指定すると、 pentium とそれ以降の CPU を使った IA32 システム用に設定されたカーネルで 4MB のページテーブルを無効にすることができ る。 'panic=N' デフォルトでは、カーネルはパニックの後リブートしない。 このオプションを用いて (N を 0 より大きな値とすれば) N 秒後にリブートするようになる。 この値は、起動後に以下の ようにして設定することもできる。 echo N > /proc/sys/kernel/panic 'reboot=[warm|cold][,[bios|hard]]' (カーネルコンパイル時に CONFIG_BUGi386 が指定されたときのみ有効。) カーネルバー ジョン 2.0.22 から、 リブートのデフォルトはコールドブートになった。 以前のデフォル トであるウォームブートをするには 'reboot=warm' と指定しなければならない。 (ある種の ハードウェアをリセットするにはコールドブートが必要になるが、 ディスクキャッシュにあ る書き込んでいないデータは破壊される。 ウォームブートでは、より素早くリブートでき る。) デフォルトではリブートは 'hard' で行われる。 すなわちリセットラインに low を 出力するようキーボードコントローラに要求して、 リブートを行う。 しかし一部のマザー ボードではこれができない。 'reboot=bios' オプションを指定すると、 代わりに BIOS を 経由するようになる。 'nosmp' と 'maxcpus=N' (カーネルのコンパイル時に __SMP__ が指定されたときのみ有効。) コマンドラインオプ ションに 'nosmp' または 'maxcpus=0' を指定すると、 SMP (Symmetric Multi Processing) を完全に無効にする。 'maxcpus=N' オプションは、 SMP モードで有効にする CPU の最大数 を N に制限する。 カーネル開発者用の起動時引数 'debug' カーネルが出力するメッセージはカーネルログデーモン klogd に渡され、 ディスクに記録 できるようになる。 プライオリティが console_loglevel のメッセージはコンソールにも表 示される。 (これらのレベルについては、<linux/kernel.h> を参照。) デフォルトではこ の変数は、 デバッグメッセージよりも重要なあらゆるメッセージを記録するよう設定されて いる (デバッグメッセージは含まない)。 この起動時引数を指定すると、 カーネルはプライ オリティが DEBUG のメッセージも出力するようになる。 console_loglevel も klogd にオ プションを渡せば実行時に設定できる。 klogd(8) を参照。 'profile=N' カーネルがどこで CPU サイクルを消費しているか調べたい場合には、 カーネルのプロファ イリング機能を有効にすればこれを実現できる。 カーネルプロファイリングは、変数 prof_shift を 0 以外の値にセットすると有効になる。 この値はコンパイル時に CONFIG_PROFILE で指定するか、 この 'prifile=N' オプションで指定できる。 prof_shift の値は N が指定されれば N となり、N が指定されなかった場合は CONFIG_PROFILE_SHIFT の値が用いられる。 どちらも指定されなければデフォルト値の 2 が用いられる。 この変数 が重要なのは、 カーネルプロファイリングの粒度を決定するところにある。 すなわち、各 クロックの割込みごとに、システムがカーネルコードを実行していれば、 以下のようにカウ ンタの値がインクリメントされる。 profile[address >> prof_shift]++; 生のプロファイリング情報は、 /proc/profile から見ることができるが、readprofile.c の ような情報を加工するツールを使ったほうが良いだろう。 /proc/profile に任意のデータを 書込むと、 カウンタはリセットされる。 'swap=N1,N2,N3,N4,N5,N6,N7,N8' カーネルのスワップアルゴリズムをコントロールする 次の 8 つのパラメータをセットす る。 max_page_age, page_advance, page_decline, page_initial_age, age_cluster_fract, age_cluster_min, pageout_weight, bufferout_weight. これはカーネルをチューンする人 のためのオプションである。 'buff=N1,N2,N3,N4,N5,N6' カーネルのバッファメモリ管理をコントロールする 次の 6 つのパラメータをセットする。 max_buff_age, buff_advance, buff_decline, buff_initial_age, bufferout_weight, buffermem_grace. これはカーネルをチューンする人のためのオプションである。 RAM ディスク関連の起動時引数 (カーネルのコンパイル時に CONFIG_BLK_DEV_RAM オプションが指定されたときのみ有効。) 一般的 には、Linux で RAM ディスクを使用するのはあまり良い考えではない。 システムに任せておけば もっと効率的にメモリを使用する。 しかしブート時 (またはブートフロッピーの作成中) には、 フ ロッピーの内容を RAM ディスクにロードすると便利かもしれない。 メインディスクがアクセス可能 になる前に、 (ファイルシステムやハードウェアに関する) モジュールをいくつかロードしなければ ならないシステムもあるだろう。 Linux のバージョン 1.3.48 において、 RAM ディスクの取り扱いが根底から変化した。 それ以前ま では、メモリは静的に割り当てられ、 'ramdisk=N' パラメータでそのサイズを指定していた (この 値はコンパイル時にカーネルイメージに指定することもできた)。 現在は RAM ディスクはバッファ キャッシュを使用しており、 動的に拡張される。 新しい RAM ディスクの動作に関する多くの情報 が、 カーネルソースファイル Documentation/blockdev/ramdisk.txt (古いカーネルでは Documentation/ramdisk.txt) にある。 4 つのパラメータがある。論理値をとるものが 2 つ、整数値をとるものが 2 つ。 'load_ramdisk=N' N=1 なら RAM ディスクをロードする。N=0 ならロードしない (デフォルト)。 'prompt_ramdisk=N' N=1 ならフロッピー挿入を促すプロンプトを出す (デフォルト)。 N=0 ならプロンプトを出 さない。 (従って、このパラメータを指定する必要はまず無いであろう。) 'ramdisk_size=N' もしくは (古い形式の) 'ramdisk=N' ラムディスクの最大サイズを N kB (キロバイト) にセットする。 省略時は 4096 (4 MB)。 'ramdisk_start=N' 開始ブロック番号 (フロッピー先頭からのオフセットで指定した RAM ディスクの開始点) を N にセットする。 これはカーネルイメージのあとに RAM ディスクイメージを置く場合に 必要となる。 'noinitrd' (カーネルのコンパイル時に CONFIG_BLK_DEV_RAM と CONFIG_BLK_DEV_INITRD が指定されて いるときのみ有効。) 最近は initrd を使用するようにカーネルをコンパイルできる。 こ のオプションが指定されると、 ブートプロセスはカーネルと RAM ディスクをロードし、 カーネルは initrd を「普通の」 RAM ディスクに変換し、 この RAM ディスクがルートデバ イスとして「読み書き可能」でマウントされる。 次に /linuxrc が実行される。 その後「 真の」ルートファイルシステムがマウントされ、 initrd ファイルシステムは /initrd に移 される。 最後に通常のブートシーケンス (具体的には /sbin/init の呼び出し) が実行され る。 initrd に関する詳細な解説はカーネルソースファイル Documentation/initrd.txt を参照。 'noinitrd' オプションを用いると、 カーネルは (initrd 動作を行うようにコンパイルされ ている場合でも) 上記の動作を行なわず、代わりに initrd のデータを /dev/initrd に残 す。 (このデバイスは一度しか使えない。 データは、そのデータを使った最後のプロセスが /dev/initrd をクローズするとすぐに解放される。) SCSI デバイス用の起動時引数 この節における用語: iobase -- SCSI ホストアダプタが占有する I/O ポートの先頭アドレス。 16 進表記で指定し、通常 0x200 から 0x3ff の範囲に位置する。 irq -- カードが利用するハードウェア割り込み。有効な値はカードに よって異なるが、通常は 5, 7, 9, 10, 11, 12, 15 である。 これ以外の値は通常、IDE ハードディスク、フロッピー、 シリア ルポートといった一般的な周辺機器によって使用される。 scsi-id -- SCSI バス上のホストアダプタが自分自身を識別するために使用する ID 番号。 この値 を変更できるホストアダプタもごく希に存在するが、 ほとんどはアダプタ内部で固定されている。 よく使われるデフォルト値は 7 であるが、Seagate もしくは Future Domain 製の TMC-950 ボード では 6 が使われる。 parity -- SCSI ホストアダプタが取り付けられたデバイスとの通信に際して パリティ値を必要とす るかどうか。 1 を指定するとパリティチェックが有効になり、 0 でパリティチェックが無効にな る。 しかし、すべてのデバイスがこの起動時引数によるパリティの選択を サポートするわけではな い。 'max_scsi_luns=...' SCSI デバイスは複数の「サブデバイス」を自分自身の内部に持つことができる。 最もよく ある例として、一時に 1 枚以上のディスクを扱うことができる (チェンジャー機能付の) SCSI CD-ROM がある。 それぞれの CD はそのデバイスの 「論理ユニット番号 (LUN)」に よって特定される。 しかしほとんどのデバイス (例えばハードディスクやテープドライブ) は、 LUN 番号 0 が割り当てられた、ただひとつのデバイスからなる。 設計が不十分な SCSI デバイスでは 0 以外の LUN 番号への自動検出を 扱えないことがあ る。 したがって、コンパイル時に CONFIG_SCSI_MULTI_LUN オプションが指定されていない と、 最近のカーネルではデフォルトでは LUN 番号 0 のみを検出する。 起動時に調べる LUN 番号を指定する場合、起動時引数として 'max_scsi_luns=n' を指定す る。n は 1 から 8 の間で指定する。 n=1 以上の値を使用しないようにすれば、 このよう ないかれた機械にひどい目にあわされずにすむだろう。 SCSI テープドライブの設定 SCSI テープドライバの起動時設定の一部は以下のようにして行なうことができる。 st=buf_size[,write_threshold[,max_bufs]] 最初の 2 つの数字は kB 単位で指定する。 buf_size のデフォルトは 32kB である。上限は 16384kB まで指定できる。 write_threshold はデータ書き出しの閾値で、 バッファのデー タのサイズがこの値を越えるとデータはテープに書き出される。 デフォルト値は 30kB であ る。 バッファ数の最大値 (max_bufs) は検出されたドライブの数によって変化するが、デ フォルトは 2 である。 使用例を以下に示す。 st=32,30,2 詳細は Linux カーネルソース内の Documentation/scsi/st.txt (古いカーネルの場合は drivers/scsi/README.st) に書かれている。 Adaptec aha151x, aha152x, aic6260, aic6360, SB16-SCSI の設定 aha に続く番号はカードを表し、 aic に続く番号はカードに搭載されている実際のチップを 表す (Soundblaster-16 SCSI も後者に含まれる)。 SCSI ホストの検出コードは、 インストールされている BIOS を探す。 見つからない と、カードは検出できない。 この場合は以下のように起動時引数を指定することになる。 aha152x=iobase[,irq[,scsi-id[,reconnect[,parity]]]] もしドライバのコンパイル時にデバッグオプションを指定していた場合は、 6 番目の値でデ バッグレベルを指定できる。 すべてのパラメータは、このセクションの最初で説明した通りである。 reconnect に 0 以 外の値を指定すると、デバイスを切断したり接続したりできる。 以下に例を示す。 aha152x=0x340,11,7,1 パラメータは必ず上記の順番どおりに指定されなければならない。 例えば、パリティ (parity) を設定したい場合には、 iobase, irq, scsi-id, reconnect も同時に指定する必 要がある。 Adaptec aha154x の設定 aha1542 シリーズのカードは i82077 フロッピーディスクコントローラをボードに搭載して いる。 一方 aha1540 シリーズのカードは搭載していない。 これらは共にバスマスタカード であり、 他のデバイスとバスを共有する際に、 どのくらい「フェアに」振る舞うかを指定 するパラメータがある。 起動時引数は以下のようにして指定する。 aha1542=iobase[,buson,busoff[,dmaspeed]] 有効な iobase の値は次の通り。 0x130, 0x134, 0x230, 0x234, 0x330, 0x334。 クローン カードの中には他の値を指定できるものもある。 buson, busoff 値はカードがISA バスを占有する時間をマイクロ秒単位で指定する。 省略時 はそれぞれ 11us on と 4us off になっているので、 他のカード (例えば ISA LANCE イー サネットカード) も ISA バスにアクセスできる。 dmaspeed 値は DMA (Direct Memory Access) 転送速度を MB/s 単位で設定する。 省略時は 5MB/s である。新しいリビジョンのカードでは、 この値を使ったソフトウェアによる設定が できる。 古いカードはジャンパ設定を必要とする。 マザーボードが対応していれば最大 10MB/s まで指定可能である。 5MB/s 以上の値を使う場合は注意して実験してからにするこ と。 Adaptec aha274x, aha284x, aic7xxx の設定 これらのボードは以下の形式で指定する。 aic7xxx=extended,no_reset extended 値が 0 以外の時は、大容量ディスク用の拡張変換が有効になる。 no_reset 値を 0 以外の値にすると、ホストアダプタの検出時に、 ドライバによる SCSI バスの初期化を行 わない。 AdvanSys SCSI ホストアダプタの設定 ('advansys=') AdvanSys ドライバはカードの検出先として 4 つの I/O アドレスを受け付ける。 EISA や PCI カードではこれらを指定しても全く効果が無い。 ISA 及び VLB カードの検出に対して のみ用いられる。 さらに、デバッグオプション付きでドライバがコンパイルされている場 合、 デバッグ情報の出力レベルとして 0xdeb[0-f] パラメータを追加できる。 0-f により デバッグメッセージの情報のレベルを 16 段階で指定する。 AM53C974 構文は以下の通り。 AM53C974=host-scsi-id,target-scsi-id,max-rate,max-offset BusLogic SCSI ホストアダプタの設定 ('BusLogic=') 構文は以下の通り。 BusLogic=N1,N2,N3,N4,N5,S1,S2,... Buslogic のコマンドラインパラメータに関する詳細な議論はカーネルソースファイル drivers/scsi/BusLogic.c を参照すること。 以下はこれを非常におおざっぱに要約したもの である。 パラメータ N1 から N5 までは整数である。 パラメータ S1 以降は文字列である。 N1 はホ ストアダプタが存在する I/O アドレス。 N2 はタグキューイングをサポートするデバイスに 対して使用するキューの深さ。 N3 はバス安定時間 (BST) を秒単位で指定する。 これはホ ストアダプタのハードリセットにより SCSI バスをリセットしてから SCSI コマンドの発行 を開始するまでの待ち時間である。 N4 はローカルオプション (ひとつのホストアダプタ 用)。 N5 はグローバルオプション (すべてのホストアダプタ用)。 文字列オプションは以下の動作を制御する: タグキューイング (TQ:Default, TQ:Enable, TQ:Disable, TQ:<Per-Target-Spec>)、 エラー復帰 (ER:Default, ER:HardReset, ER:BusDeviceReset, ER:None, ER:<Per-Target-Spec>)、 ホストアダプタの検出 (NoProbe, NoProbeISA, NoSortPCI)。 EATA/DMA の設定 検出対象にする I/O ポートのデフォルトのリストは以下のようにして変更できる。 eata=iobase,iobase,.... Future Domain TMC-16x0 の設定 構文は以下の通り。 fdomain=iobase,irq[,adapter_id] Great Valley Products (GVP) SCSI コントローラの設定 構文は以下の通り。 gvp11=dma_transfer_bitmask Future Domain 製 TMC-8xx, TMC-950 の設定 構文は以下の通り。 tmc8xx=mem_base,irq mem_base にはカードが使用するメモリマップ I/O の領域を指定する。 通常は次の値のどれ かである: 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000。 IN2000 の設定 構文は以下の通り。 in2000=S S はコンマ区切りの文字列で、各項目は keyword[:value] 形式で指定する。 指定できる キーワードは以下の通り。 ioport:addr, noreset, nosync:x, period:ns, disconnect:x, debug:x, proc:x。 これらのパラメータの機能についてはカーネルソースファイル drivers/scsi/in2000.c を参照。 NCR5380 および NCR53C400 の設定 この起動時引数は以下の書式で指定する。 ncr5380=iobase,irq,dma または ncr53c400=iobase,irq カードが IRQ を使用しない場合は、 255 (0xff) を指定すれば無効にできる。 IRQ に 254 を指定すると自動検出する。 詳細は Linux カーネルソース内の Documentation/scsi/g_NCR5380.txt (古いカーネルの場合は drivers/scsi/README.g_NCR5380) に書かれている。 NCR53C8xx の設定 構文は以下の通り。 ncr53c8xx=S S はコンマ区切りの文字列で、各項目は keyword[:value] 形式で指定する。 指定できる キーワードは以下の通り。 mpar (master_parity), spar (scsi_parity), disc (disconnection), specf (special_features), ultra (ultra_scsi), fsn (force_sync_nego), tags (default_tags), sync (default_sync), verb (verbose), debug (debug), burst (burst_max)。 これらのオプションの機能についてはカーネルソースファイ ル drivers/scsi/ncr53c8xx.c を参照すること。 NCR53c406a の設定 構文は以下の通り。 ncr53c406a=iobase[,irq[,fastpio]] 割り込み無しで動作するモードには irq に 0 を指定する。 高速 PIO モードは fastpio に 1 を指定し、低速モードは 0 を指定する。 Pro Audio Spectrum の設定 PAS16 は NC5380 SCSI チップを使用しており、 最近のモデルはジャンパレスの設定をサ ポートしている。 起動時引数の書式は以下の通り。 pas16=iobase,irq 唯一の違いとして、 IRQ に 255 を指定すれば割り込みを使用しないようドライバに指示で きる (パフォーマンスは低下する)。 通常 iobase は 0x388 である。 Seagate 製 ST-0x の設定 カードが起動時に認識されない場合は以下のような指定が必要になるだろう。 st0x=mem_base,irq mem_base にはカードが使用するメモリマップ I/O の領域を指定する。 通常は次の値のどれ かである: 0xc8000, 0xca000, 0xcc000, 0xce000, 0xdc000, 0xde000。 Trantor 製 T128 の設定 このカードも NCR5380 チップを利用しており、 以下のオプションを受け付ける。 t128=mem_base,irq 有効な mem_base の値は次の通りである: 0xcc000, 0xc8000, 0xdc000, 0xd8000。 UltraStor 製 14F/34F の設定 検出対象にする I/O ポートのデフォルトのリストは以下のようにして変更できる。 eata=iobase,iobase,.... WD7000 の設定 構文は以下の通り。 wd7000=irq,dma,iobase Commodore Amiga 製 A2091/590 SCSI コントローラの設定 構文は以下の通り。 wd33c93=S S はコンマ区切りの文字列で、各項目は keyword[:value] 形式で指定する。 認識されるオ プションは以下の通り。 nosync:bitmask, nodma:x, period:ns, disconnect:x, debug:x, clock:x, next。 詳細はカーネルソースファイル drivers/scsi/wd33c93.c を参照。 ハードディスク IDE Disk/CD-ROM ドライバのパラメータ IDE ドライバは、 ディスクのジオメトリ指定からバグのあるコントローラチップのサポート まで、 数多くのパラメータを受け付ける。 ドライブを特定するには 'hdX=' を使う。 ここ で X には 'a' から 'h' の文字を指定する。 あるドライブに特有なものではないオプションは、hd= を前に付けて指定する。 ドライブ特 有でないオプションに対してドライブ指定 ('hdX=') を前置しても問題はない。 そのオプ ションは期待通りそのドライブに適用される。 'hd=' は、(a, ..., h) のシーケンスにおいて、 まだ指定されていない次のドライブを指す ためにも使える。 これ以降では簡単のために 'hd=' を使って説明する。 さらに詳しい情報 を得るには、Linux カーネルソース内の Documentation/ide.txt (古いカーネルの場合は drivers/block/README.ide) を参照のこと。 'hd=cyls,heads,sects[,wpcom[,irq]]' オプション これらのオプションはディスクの物理的なジオメトリを指定するために使う。 最初の 3 つ の値以降は省略できる。 シリンダ (cyls)、ヘッド (heads)、セクタ (sects) の各値は fdisk で用いられるものと同じである。 書き込み補正 (wpcom) 値は IDE ディスクでは無視 される。 IRQ 値には、そのドライブが接続されているインターフェースが用いる IRQ を指 定する (本来の意味では「ドライブに特有」のパラメータではない)。 'hd=serialize' オプション デュアル IDE インターフェースである CMD-640 チップには設計上の問題があって、 セカン ダリインターフェース上のドライブと プライマリインターフェース上のドライブを 同時に 使用するとデータが破壊されることがある。 このオプションを使用すると、 ドライバは両 方のインターフェースが 同時に使用されることが絶対にないようにする。 'hd=dtc2278' オプション このオプションは、DTC-2278D IDE インターフェースが使われている ことをドライバに伝え る。 するとドライバは、DTC 特有の機能 (2 番目のインターフェースと高速転送モード) を使用可能にするよう試みる。 'hd=noprobe' オプション このドライブの自動検出をしない。 例えば hdb=noprobe hdb=1166,7,17 とすると自動検出が無効になる。 しかしドライブのジオメトリを指定しているので、 この ドライブは正しいブロックデバイスとして登録され、使用可能になる。 'hd=nowerr' オプション ドライブによっては、書き込みエラー (WRERR_STAT) ビットがクリアできなくなることがあ る。 このオプションを指定すると、 このような壊れたデバイスに対する回避機能が有効に なる。 'hd=cdrom' オプション このオプションは、通常の IDE ハードディスクの代わりに、 ATAPI 互換の CDROM が続され ていることを IDE ドライバに伝える。 CD-ROM はたいてい自動的に認識されるが、 うまく 行かない場合に試してみると良い。 スタンダード ST-506 ディスクドライバのオプション ('hd=') スタンダードディスクドライバは IDE ドライバと同様のジオメトリ指定を引数にとることが できる。 ただし受け付ける値はちょうど 3 つ (C/H/S) に限られる。 それ以上の値やそれ 以下の値を指定すると、ドライバは黙ってその指定を無視する。 また引数として受け入れら れるのは 'hd=' の形式だけである。 つまり 'hda=' のような指定はここでは正しくない。 書式は次の通り。 hd=cyls,heads,sects 2 台のディスクが接続されてい場合は、 2 番目のディスクに対しても上記のジオメトリが設 定される。 XT ディスクドライバのオプション ('xd=') これらの古い 8 bit カード (125kB/s の転送速度しかない!) を使わなければならない不幸 な人のためのオプションである。 カードが認識されない場合は以下の書式で起動時引数を指 定する必要があるだろう。 xd=type,irq,iobase,dma_chan type 値にはカードのメーカーを指定し、これは自動検知より優先される。 指定すべき type の値については、使っているカーネルのソースファイル drivers/block/xd.c を調べてほし い。type はリスト xd_sigs のインデックスで、歴史と共に追加されたり削除されたりして きた。 リストの途中での追加・削除も行われたので、 その場合はすべての type 番号が変 更された。 今日 (Linux 2.5.0) における type は、 0=generic; 1=DTC 5150cx; 2,3=DTC 5150x; 4,5=Western Digital; 6,7,8=Seagate; 9=Omti; 10=XEBEC である。 ここではいくつ かの type に同じ指定が与えられているが、 それらは等価である。 xd_setup() 関数は引数をチェックせず、 4 つの値がすべて指定されることを想定してい る。 引数を省略してはならない。 例として、BIOS が無効にされた (あるいは削除された) WD1002 コントローラの場合を示す (パラメータには XT コントローラの「デフォルト」の値 を使っている)。 xd=2,5,0x320,3 Syquest 製 EZ* リムーバブルディスク 構文は以下の通り。 ez=iobase[,irq[,rep[,nybble]]] IBM MCA バス上のデバイス カーネルソースファイル Documentation/mca.txt も参照。 PS/2 ESDI ハードディスク 起動時に所望のジオメトリを指定できる。 ed=cyls,heads,sectors. ThinkPad-720 を使用する場合は以下のオプションを追加すること。 tp720=1. IBM Microchannel SCSI サブシステムの設定 構文は以下の通り。 ibmmcascsi=N N はサブシステムの pun (SCSI ID) を表す。 Aztech インターフェース このタイプのカードの構文は以下の通り。 aztcd=iobase[,magic_number] magic_number に 0x79 をセットすると、 ドライバはファームウェアのバージョンが分から ない場合でも、 とにかく実行を試みる。 その他の値はすべて無視される。 パラレルポート CD-ROM ドライブ 構文は以下の通り。 pcd.driveN=prt,pro,uni,mod,slv,dly pcd.nice=nice ここで 'port' はベースアドレス、'pro' はプロトコル番号、'uni' はユニットセレクタ (チェインデバイス用)、'mod' はモード (あるいは自動的に最適のものを選ばせるには -1)、'slv' はスレーブにしたい場合に 1、'dly' はポートアクセスを遅くしたい場合に小さ な整数を与える。'nice' パラメータは、 ドライバのアイドル CPU 時間の使い方を制御す る。 ただし速度はある程度低下する。 Sony 製 CDU-31A と CDU-33A のインターフェース この CD-ROM インターフェースは、 Pro Audio Spectrum サウンドカードの一部や ソニーが 供給するインターフェースカードで使われている。 構文は以下の通り。 cdu31a=iobase,[irq[,is_pas_card]] IRQ に 0 を指定すると、 ハードウェア割り込みがサポートされていないことをドライバに 伝える (PAS カードにはそのようなものがある)。 使用するカードが割り込みをサポートし ているなら、 ドライバによる CPU の負荷を減らすためにも割り込みを使用すべきである。 is_pas_card には、Pro Audio Spectrum カードを使用しているときには 'PAS' を指定し、 そうでないときにはなにも指定しない。 Sony 製 CDU-535 インターフェース この CD-ROM インターフェースの構文は以下の通り。 sonycd535=iobase[,irq] IRQ の値だけを指定したい場合には、 iobase 値を 0 とすれば単なる穴埋めと解釈される。 GoldStar インターフェース この CD-ROM インターフェースの構文は以下の通り。 gscd=iobase ISP16 CD-ROM インターフェース 構文は以下の通り。 isp16=[iobase[,irq[,dma[,type]]]] (整数値 3 つと文字列 1 つの形式) type に 'noisp16' を指定すると、 インターフェース の設定は行なわれない。 type にはこの他にも 'Sanyo', 'Sony', 'Panasonic', 'Mitsumi' が指定できる。 Mitsumi 標準インターフェース この CD-ROM インターフェースの構文は以下の通り。 mcd=iobase,[irq[,wait_value]] wait_value はドライブに問題がある場合に、 ドライバ内部のタイムアウトの指定に用い る。 コンパイル時の #define によって実装されるかされないかが決まる。 Mitsumi FX400 は IDE/ATAPI CD-ROM プレイヤーであり、 この mcd ドライバは使用しない。 Mitsumi XA/マルチセッションインターフェース これは上記と同じハードウェアだが、拡張機能がある。 構文は以下の通り。 mcdx=iobase[,irq] Optics ストレージインターフェース このタイプのカードの構文は以下の通り。 optcd=iobase Phillips CM206 インターフェース このタイプのカードの構文は以下の通り。 cm206=[iobase][,irq] ドライバは IRQ 値として 3 から 11 まで、 I/O ポートアドレスの値として 0x300 から 0x370 を想定している。 いずれか一方、あるいは両方を指定できる。順番も問わない。 'cm206=auto' とすることにより自動検出もできる。 Sanyo インターフェース このタイプのカードの構文は以下の通り。 sjcd=iobase[,irq[,dma_channel]] SoundBlaster Pro インターフェース このタイプのカードの構文は以下の通り。 sbpcd=iobase,type type 値には 'SoundBlaster', 'LaserMate', 'SPEA' のうちひとつを指定できる (大文字小 文字が区別される)。 iobase は CD-ROM インターフェースの値である。 カードのサウンド 部の値と間違えないこと。 イーサネットデバイス ドライバが異なると用いるパラメータも異なるが、 すべてのドライバは、少なくとも割り込み番号 (irq)、 I/O ポートのベースアドレス (iobase)、名前 (name) を持つ。 最も一般的な形式は以下の 通り。 ether=irq,iobase[,param_1[,...param_8]],name 最初の数字でない値は名前として使用される。 param_n の値はカード (ドライバ) ごとに異なる意 味を持つ。 よくある目的は、共有メモリアドレスの指定、インターフェースの選択、 DMA チャネル などである。 このパラメータの最もよくある利用法は、 2 番目の Ethernet カードを強制的に検出させる場合で ある (デフォルトでは 1 枚しか検出しない)。 これは簡単で、次のようにすればよい。 ether=0,0,eth1 この例で IRQ と I/O ベースアドレスに 0 を指定しているのは、 ドライバに自動検出をするよう伝 えているのである。 Ethernet-HOWTO では、複数のカードを使うやり方や、 カードやドライバに特有の param_n 値の意 味について、 ずっと詳細に解説されている。 興味を持った読者は、この文書にあたり、 自分の カードに関して書かれているセクションを参照すると良い。 フロッピーディスクドライバ フロッピードライバのオプションは多数あり、 Linux カーネルソース内の Documentation/floppy.txt (古いカーネルの場合は drivers/block/README.fd) にすべて記載され ている。 以下の情報はこのファイルからとったものである。 floppy=mask,allowed_drive_mask 使ってよいドライブにかけるビットマスクを設定する。 デフォルトでは、 ユニット 0 と 1 のフロッピーコントローラだけが許可されている。 これは、標準でないハードウェア (例え ば ASUS の PCIマザーボードなど) でユニット 2 や 3 にアクセスすると、 キーボードが おかしくなってしまうからである。 cmos オプション (後述) の導入によって、 このオプ ションはあまり使われなくなった。 floppy=all_drives 許可するドライブを示すビットマスクを、「すべてのドライブ」にする。 1 つのフロッピー コントローラに 2 台以上のドライブを接続する場合に用いる。 floppy=asus_pci ユニット 0 と 1 のみを許可するようビットマスクを設定する。 (デフォルト)。 floppy=daring 正しく振る舞うフロッピーコントローラを使っていることをドライバに伝える。 このオプ ションを使うと動作はより効率的かつスムースになるが、 コントローラによっては動作に失 敗することがある。 これを指定するとある種の動作が高速になる。 floppy=0,daring 注意して扱わなければならない フロッピーコントローラであることをドライバに伝える。 floppy=one_fdc フロッピーコントローラがひとつしかないことをドライバに伝える (デフォルト)。 floppy=two_fdc または floppy=address,two_fdc フロッピーコントローラがふたつあることをドライバに伝える。 2 番目のコントローラの I/O アドレスは address で指定する。 address が指定されない場合は 0x370 が使われる。 floppy=thinkpad Thinkpad を使っていることをフロッピードライバに伝える。 Thinkpad はディスク取出の検 出信号を反転して使っている。 floppy=0,thinkpad Thinkpad を使っていないことをドライバに伝える。 floppy=drive,type,cmos ドライブの cmos タイプを type に設定する。 さらにビットマスクを変更し、このドライブ の使用を許可する。 この指定が便利なのは、フロッピードライブが 2 台以上ある場合 (物 理 cmos に記述できるのは 2 台まで) や、 BIOS が標準的でない CMOS タイプを使っている 場合である。 最初の 2 台のドライブの CMOS に 0 を指定する (デフォルト) と、 フロッ ピードライバはこれらのドライブの物理 cmos を参照する。 floppy=unexpected_interrupts 予期しない割り込みを受けた時に警告メッセージを表示する (デフォルト)。 floppy=no_unexpected_interrupts または floppy=L40SX 予期しない割り込みを受けた時でも警告メッセージを表示しない。 これは IBM L40SX ラッ プトップコンピュータを 特定のビデオモードで使用する時に必要となる。 (ビデオとフロッ ピーとの間で何らかの相互作用があるようだ。 予期しない割り込みは性能だけに影響し、無 視しても安全である。) サウンドドライバ サウンドドライバも起動時引数を受け付け、 コンパイル時に指定された値を変更できる。 これはや や面倒なため、あまりお薦めできない。 詳細は、Linux カーネルソース内の Documentation/sound/oss/README.OSS (古いカーネルの場合は drivers/sound/Readme.linux) に記 載されている。 引数の形式は以下の通り。 sound=device1[,device2[,device3...[,device10]]] 各 deviceN はそれぞれ 0xTaaaId という形式で指定する。 各バイトの意味は以下の通り。 T - デバイスのタイプ: 1=FM, 2=SB, 3=PAS, 4=GUS, 5=MPU401, 6=SB16, 7=SB16-MPU401 aaa - I/O ポートアドレス (16進値) I - 割り込み番号 (16 進値。例: 10=a, 11=b, ...) d - DMA チャネル 上記の通り、かなり扱いにくい形式となっており、 コンパイル時に自分にあった値を指定す る方が良いだろう。 なお起動時引数として 'sound=0' を指定すると、 サウンドドライバを 完全に無効にする。 ISDN ドライバ ICN ISDN ドライバ 構文は以下の通り。 icn=iobase,membase,icn_id1,icn_id2 icn_id1,icn_id2 はカードを識別するための 2 つの文字列である。 カーネルメッセージで 用いられる。 PCBIT ISDN ドライバ 構文は以下の通り。 pcbit=membase1,irq1[,membase2,irq2] membaseN は N 番目のカードの共有メモリのベースアドレスであり、 irqN は N 番目のカー ドの割り込み設定である。 無指定時には IRQ = 5, membase = 0xD0000 となる。 Teles ISDN ドライバ 構文は以下の通り。 teles=iobase,irq,membase,protocol,teles_id iobase はカードの I/O ポートアドレス、 membase はカードの共有メモリのベースアドレ ス、 そして irq はカードが使用する割り込みチャネルである。 teles_id はアスキー文字 列による識別文字列である (他と重ならないようにする)。 シリアルポートドライバ RISCom/8 マルチポートシリアルドライバ ('riscom8=') 構文は以下の通り。 riscom=iobase1[,iobase2[,iobase3[,iobase4]]] 詳細はカーネルソースファイル Documentation/riscom8.txt を参照のこと。 DigiBoard ドライバ ('digi=') このオプションを使う場合は、6 個のパラメータをきっちり指定しなければならない。 構文 は以下の通り。 digi=status,type,altpin,numports,iobase,membase パラメータは整数値か文字列で与える。 文字列で指定する場合は、 iobase と membase は 16 進値でなければならない。 整数値で指定する場合はパラメータの個数は少なくても良 く、順に: status このカードの動作を指定する (Enable(1) または Disable(0)), type カードのタイプ (PC/Xi(0), PC/Xe(1), PC/Xeve(2), PC/Xem(3)), altpin ピン配置を反転さ せる (Enable(1) or Disable(0)), numports カードのポート番号, iobase このカードの I/O ポート (文字列指定の場合は 16 進表記), membase メモリウィンドウのベースアドレス (文字列指定の場合は 16 進表記)。 したがって以下のふたつの起動時引数は同じ意味を持 つ。 digi=E,PC/Xi,D,16,200,D0000 digi=1,0,0,16,0x200,851968 詳細はカーネルソースファイル Documentation/digiboard.txt を参照。 Baycom シリアル・パラレル ラジオモデム 構文は以下の通り。 baycom=iobase,irq,modem ちょうど 3 つのパラメータを与える。 複数のカードがある場合は、'baycom=' コマンドも 複数記述する。 modem パラメータは文字列で、 ser12, ser12*, par96, par96* の中からひ とつを選ぶ。 * をつけるとソフトウェア DCD を使用する。 モデムの種類に応じて ser12 か par96 かを選択する。 詳細は Linux カーネルソース内の Documentation/networking/baycom.txt (古いカーネルの場合は drivers/net/README.baycom) を参照。 サウンドカードラジオモデムドライバ 構文は以下の通り。 soundmodem=iobase,irq,dma[,dma2[,serio[,pario]]],0,mode 最後のパラメータを除くすべてのパラメータは整数である。 ダミーの 0 があるのは、設定 プログラムのバグのせいである。 mode パラメータは文字列で、hw:modem という書式で指定 する。 hw は sbc, wss, wssfdx のうちひとつ、 modem は afsk1200, fsk9600 のどちらか を選択して記述する。 ラインプリンタドライバ 'lp=' 構文は以下の通り。 lp=0 lp=auto lp=reset lp=port[,port...] プリンタドライバには、どのポートを使うか、 どのポートを使ってはいけないかを伝えるこ とができる。 後者は、 利用可能なあらゆるパラレルポートをプリンタドライバが要求しな いようにして、 他のドライバ (PLIP や PPA など) から それらを使えるようにしたい場合 に便利である。 引数の書式は、複数のポート名である。 例えば lp=none,parport0 とすると、 最初のパラ レルポートを lp1 として使い、 lp0 は無効にする。プリンタードライバを完全に無効にす るには lp=0 とすればよい。 WDT500/501 ドライバ 構文は以下の通り。 wdt=io,irq マウスドライバ 'bmouse=irq' バスマウスドライバはパラメータをひとつだけとり、 ハードウェア IRQ を指定できる。 'msmouse=irq' msmouse ドライバでもこの事情はまったく同じである。 ATARI マウスの設定 構文は以下の通り。 atamouse=threshold[,y-threshold] パラメータがひとつだけ与えられた場合には、 x-threshold と y-threshold を両方に用い られる。 ふたつ与えられた場合は、最初の値が x-threshold として用いられ、 2 番目の値 が y-threshold として用いられる。 値は 1 から 20 までの数値で指定する。 デフォルト は 2。 ビデオ機器 'no-scroll' このオプションは、コンソールドライバに、 ハードウェアスクロールを用いないよう伝える (ここで言うハードウェアスクロールとは、 ビデオメモリ上のデータを移動させることに よって スクリーン表示領域をスクロールさせることを指す)。 特定の点字マシンではこの指 定が必要となる。
関連項目
klogd(8), mount(8) このマニュアルページの大部分は Paul Gortmaker による Boot Parameter HOWTO (version 1.0.1) を基にしている。 この (あるいは最新の) HOWTO をあたれば、 さらに多くの情報が入手できるだろ う。 最新の情報源はカーネルソースファイル Documentation/kernel-parameters.txt である。
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.54 の一部 である。プロジェクト の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。