BOOTPARAM(7)

名前
bootparam - Linux カーネル起動時パラメーターの導入

説明
Linux カーネルは「コマンドラインオプション」もしくは「起動時 パラメーター」をシステムのスタート時にのみ受け入れる。一般に 起動時引数はカーネルがハードウェアのパラメーターを決定できな い場合に用いる。また，カーネルが検出したハードウェアのパラメ ーターを意図的に無効にしたり変更したりする際にも用いる。 カーネルが BIOS によって直接起動するときは (たとえば cp zImage /dev/fd0 としてフロッピーにコピーされたカーネルから起 動するような場合)，何かのパラメーターを指定する余地はない。 ゆえに，この起動時パラメーター機能を利用するためには， LILO や loadlin のようにパラメーターを指定できるソフトウェアを使用する必要が ある。いくつかのパラメーターについては rdev を使用することで，カーネルイメージそのものを修正する事ができ る。rdev についての詳しい解説は rdev(8) を参照。 Werner Almesberger による LILO (LInux LOader) プログラムは最も広く使用されている。各種カー ネルを選択してブートする点で優れており，設定情報はテキストフ ァイルに記述する。( lilo(8) と lilo.conf(5) を参照。) LILO は DOS, OS/2, Linux, FreeBSD などを起動でき， 非常に柔軟である。 次によく使われているのが LoadLin である。これは DOS のプログラムでありながら，DOS プロンプト から (起動時パラメーターを指定して) Linux カーネルを起動する ことができる。Linux で利用できるリソースについては DOS プロ グラムから調べることができないため，loadlin はそのリソースが あるものとして Linux を起動する。loadlin は DOS から Linux を起動させる必要があるとき，非常に有用である。 もし，起動の度に DOS のドライバーを使って設定しないと Linux で使用できる状態にできないようなハードウェアを使う必要がある 場合，これは大変便利である。一般的な例として「SoundBlaster 互換」のサウンドカードがある。これらの中には DOS のドライバ ーを使っていくつかの「謎」のレジスタをいじってやらないと，本 当のSB互換モードにはならないカードがある。提供されたドライバ ーを組み込んで DOS を起動する。その後，loadlin を使用して Linux カーネルを読み込むことにより，リブートによってカードの 設定がリセットされるのを無効にできるという仕組みである。

引数リスト
カーネルコマンドラインはスペースで区切られた文字列 ( 起動時引数 ) のリストから成っている。ほとんどの起動時引数は次の書式に従 う。

    name[=value_1][,value_2]...[,value_10]

ここで name は，name に付随する値 (もしあれば) がカーネルの どの部分に対するものなのかを識別するための一意のキーワードで ある。value のリストは 10 までという制限を忘れてはならない。 つまり，一つのキーワードごとにコンマで区切られたパラメーター を 10 個までしか渡せないということである。(しかしながら，複 雑な事情で10個以上のパラメーターを与えなければならない場合に は，同一のキーワードを再度利用してパラメーターを追加すること ができる。ただし，対象となるハードウェアのセットアップ関数が それをサポートしている必要がある。) カーネルコマンドラインの判別はほとんど linux/init/main.c が 行なっている。はじめに，カーネルは次の特別な引数があるかチェ ックする。

    `root=', `nfsroot=', `nfsaddrs=', `ro', `rw', `debug', `init'

これら特別な引数の意味については後述する。 カーネルは次に，セットアップ関数のリスト (配列 bootsetups に 含まれている) へと進み，指定された引数文字列 (例えば foo) が 特定のデバイスやカーネルの一部に対するセットアップ関数(この 場合 foo_setup() となる) に関連しているかどうかを調べる。例 えば，カーネルに foo=3,4,5,6 のようなパラメーターを与えたと すると，カーネルはまず foo が配列 bootsetups に登録されてい るかを調べる。登録されていれば，foo に対応するセットアップ関 数 (foo_setup()) をコールし，カーネルコマンドラインに与えら れた引数である 3, 4, 5, 6 を渡す。 foo=bar という形式を持っていてセットアップ関数に受け入れられ なかった引数は，環境変数を設定するための記述として解釈される。 (あまり役に立たない?) 例として TERM=VT100 がある。 カーネルによって処理されず，環境変数としても解釈されない引数 はプロセス 1 に渡されることになる。通常このプロセス 1 は init プログラムである。プロセス 1 に渡される引数で最も良く使われ るのは，single というキーワードである。これを指定すると init はシングルユーザモードでコンピュータを起動し，通常使われるデ ーモンは一切起動しないよう指示する。どのような引数を記述でき るか知るために，システムにインストールされている init のバー ジョンに適合するマニュアルページをチェックすること。

特別な起動時引数の概要 ― デバイス指定ではないもの

  init=...
カーネルにより実行される初期化プログラムを設定する。このコマ ンドラインの記述を見つけることができない場合，カーネルは /etc/init, 次に /bin/init, その次に /sbin/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=...
起動時にルートファイルシステムとして使われるデバイスを，カー ネルに指定する。既定値はコンパイル時に変更できるため，通常は カーネルの構築時に指定する。既定値を無効にして，ルートデバイ スとして二番目のフロッピーディスクドライブを指定するときは， root=/dev/fd1 とする。(ルートデバイスの省略時の指定を変更す るには rdev(8) を用いる。) ルートデバイスの指定にはシンボル形式と数値形式を用いることが できる。シンボル形式の場合は /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 はラムディスクを使用する場合に用 いる。) 使用するファイルシステムによって，上記のデバイス指定が無意味 なものとなる場合があることを覚えておかねばならない。/dev/ と するのは単に慣習に過ぎない。 扱いにくいが，上記の有効なデバイスを数値形式で指定する方法も 許されている。数値形式の場合はデバイスを major/minor 番号で 指定する。(例えば /dev/sda3 は major 番号 8，minor 番号 3 な ので，root=0x803 と記述することができる。)

  ro と rw
ro オプションは，ルートファイルシステムを「読み出し専用」で マウントするようカーネルに指示し，fsck プログラムがファイル システムの矛盾を検査できるようにする。ファイルシステムが「読 み書き可」として再度マウントされるまでの間は (たとえば ` mount -w -n -o remount /' というように)，いかなるプロセスも ファイルに書き込むことはできない。( mount(8) も参照せよ。) rw オプションはルートファイルシステムを「読み書き可」でマウ ントするようカーネルに指示する。省略時にはこの指定が用いられ る。 rdev(8) を使用すると，省略時の指定を「読み出し専用」か「読み書き可」 のどちらにするか変更できる。

  reserve=...
デバイスの自動認識から I/O ポートを保護するために用いる。コ マンドの形式は以下のとおり。

    reserve=ベースアドレス,範囲[,ベースアドレス,範囲]...

機種によっては，ある特定の範囲のリソースを自動認識の対象外と するようデバイスドライバーを制限することが必要な場合がある。 ハードウェアが検査によって深刻な問題を引き起こす場合や，誤認 識される可能性がある場合，また単にカーネルにハードウェアを初 期化させたくない場合が想定される。 起動時引数 reserve は自動認識の対象外とする I/O ポートの範囲 を予約する。デバイスドライバーは，他の起動時引数によって明示 的に検査するよう指定されない限り，予約された範囲を検査しない。 例として，

    reserve=0x300,32 blah=0x300

と指定したとする。すると blah を除くすべてのデバイスドライバ ーは 0x300 から 0x31f の範囲を自動認識の調査の対象外とする。

  mem=...
PC の仕様によって BIOS コール は実装されているメモリの量の上 限として 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 に実際より多いメモリを教えてしまったとしたら，まず いことが起きるよ。多分すぐにではないかもしれないけど，ゆくゆ くは確実にね。」

  panic=N
既定ではカーネルパニックの後はリブートしない。このオプション によって (もし N > 0 であれば) N 秒後にリブートするようにな る。この値は，起動後に“echo N > /proc/sys/kernel/panic”と して設定することもできる。

  reboot=[warm|cold][,[bios|hard]]
(カーネルコンパイル時に CONFIG_BUGi386 が指定されたときのみ 有効。) カーネルバージョン 2.0.22 からリブートの既定がコール ドブートになった。以前の既定であるウォームブートをするには reboot=warm と指定しなければならない。 (コールドブートは確実 なハードウェアリセットを要求できる。ただし，ディスクキャッシ ュ上のまだ書き込まれていないデータを破壊してしまう可能性があ る。ウォームブートはより速いリブートが可能である。) もう一つ の既定は，キーボードコントローラーにリセットラインを low に するよう要求するハードウェアリブート (reboot=hard) であるが， 一部のマザーボードではそれができない。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 が指定されなかった場合は 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. これはカーネルハッカーのためのオプションで ある。

ラムディスク関連の起動時引数
(カーネルのコンパイル時に CONFIG_BLK_DEV_RAM オプションが指 定されたときのみ有効。) 一般的に， Linux でラムディスクを使 用するのはあまり良い方法ではない。― システムはもっと効率的 な方法でメモリを使用する。しかし，ブート時(またはブートフロ ッピーの作成中)はフロッピーの内容をラムディスクにロードする 方が便利である。メインディスクがアクセス可能になる前に(ファ イルシステムやハードウェアに関する) いくつかのモジュールをロ ードしなければならないシステムもあるであろう。 Linux のバージョン 1.3.48 からラムディスクの取り扱いが根底か ら変化した。それまでは，メモリは静的アロケートであり， ramdisk=N パラメーターでそのサイズを指定していた。(これもま たカーネルのコンパイル時，もしくは rdev(8) によって省略時の値を変更できた。)現在はラムディスクはバッフ ァーキャッシュを使用しており，動的にサイズを増加する。さらに 多くの情報 (たとえば rdev(8) が新しいラムディスクの設定とどのように関係するか) については， /usr/src/linux/Documentation/ramdisk.txt を参照。 次の 4 つのパラメーターはそれぞれ 2 つの論理値と 2 つの整数 値で指定する。

  load_ramdisk=N
N=1 ならラムディスクをロードする。N=0 ならロードしない(省略 時)。

  prompt_ramdisk=N
N=1 ならフロッピー挿入を促すプロンプトを出す(省略時)。N=0 な らプロンプトを出さない。(このパラメーターを指定する必要はま ず無いであろう。)

  ramdisk_size=N もしくは (過去の) ramdisk=N
ラムディスクの最大サイズを N kB(キロバイト) にセットする。省 略時は 4096 (4 MB)。

  ramdisk_start=N
開始ブロック番号を N にセットする。(ラムディスクの開始点をフ ロッピーの先頭からのオフセットで指定。)これはカーネルイメー ジをラムディスクに置く場合に必要である。

  noinitrd
(カーネルのコンパイル時に CONFIG_BLK_DEV_RAM と CONFIG_BLK_DEV_INITRD が指定されているときのみ有効。) 最近は initrd を使用するためにカーネルをコンパイルすることがある。 このオプションが指定されると，ブートプロセスはカーネルとラム ディスクをロードし，カーネルは initrd を「普通の」ラムディス クにコンバートする。この場合のラムディスクはルートデバイスと して「読み書き可」でマウントされる。次に /linuxrc が実行され る。その後，「真の」ルートファイルシステムがマウントされ， initrd ファイルシステムは /initrd に移される。最後に通常のブ ートシーケンス(具体的には /sbin/init の呼び出し)が実行される。 initrd に関する詳細な解説は /usr/src/linux/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 デバイスはいくつもの「サブデバイス」をそれ自身の中に含 むことができる。最も顕著な例として，一時に一枚以上のディスク を扱うことができる (チェンジャー機能付の) 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

詳細は，カーネルソースツリーの 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 バスを占有する時間をμs 単位で指定する。省略 時はそれぞれ 11us on と 4us off になっているので，他のカード (例えば ISA LANCE イーサネットカード)も ISA バスにアクセスす ることができる。 dmaspeed 値は DMA (Direct Memory Access) 転送速度を MB/s 単位で設定す る。省略時は 5MB/s である。新しいリビジョンのカードはこの値 を設定することによりソフトウェアによる設定ができる。古いカー ドはジャンパ設定を必要とする。マザーボードが対応していれば 10MB/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 コマンドラインパラメーターについて は， /usr/src/linux/drivers/scsi/BusLogic.c (バージョン 2.0.30 カーネルソースでは 4350-4497 行目)を参照 すること。以下は簡単な要約である。 パラメーターの N はそれが整数であることを意味する。同様に，S で始まるパラメーターは文字列である。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 は“キーワード[:値]”形式で指定し，各項目はコンマで区切る。 指定可能なキーワードは以下のとおり。ioport:addr, noreset, nosync:x, period:ns, disconnect:x, debug:x, proc:x. これらの パラメーターに対応する機能については， /usr/src/linux/drivers/scsi/in2000.c を参照。

  NCR5380 および NCR53C400 の設定
この起動時引数は以下の書式で指定する。

    ncr5380=iobase,irq,dma

または，

    ncr53c400=iobase,irq

もし IRQ を使用しないカードであれば，255 (0xff) を指定するこ とにより，無効にすることができる。IRQ に 254 を指定すると， 自動検出となる。詳細は /usr/src/linux/drivers/scsi/README.g_NCR5380 を参照せよ。

  NCR53C8xx の設定

    ncr53c8xx=S

S は“キーワード[:値]”形式で指定し，各項目はコンマで区切る。 指定可能なキーワードは以下のとおり。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). これらのオ プションに対応する機能については /usr/src/linux/drivers/scsi/README.ncr53c8xx を参照。

  NCR53c406a の設定

    ncr53c406a=iobase[,irq[,fastpio]]

割り込み不可モードにするには irq に 0 を指定する。高速 PIO モードは fastpio に 1 を指定し，低速モードは 0 を指定する。

  IOMEGA PPA3 の設定

    ppa=iobase[,speed_high[,speed_low[,nybble]]]

iobase はパラレルポートアドレス (無指定時は 0x378 が自動検出 に使われる)，speed_high はデータフェーズのポートディレイタイ ムを μs 単位で (省略時は 1)，speed_low はその他のポートディ レイタイム (μs 単位で省略時はは 6)，nybble は論理値で「強制 nybble (4-bit) モード」を指定する(省略時は 0 つまり偽)。 /usr/src/linux/drivers/scsi/README.ppa も参照。

  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 は“キーワード[:値]”形式の項目をコンマで区切って指定する。 有効なオプションは nosync:bitmask, nodma:x, period:ns, disconnect:x, debug:x, clock:x, next である。詳細は /usr/src/linux/drivers/scsi/wd33c93.c 参照せよ。

ハードディスク

  IDE Disk/CD-ROM ドライバーのパラメーター
IDE ドライバーはディスクのジオメトリ指定から，バグのあるコン トローラーチップのサポートまで数多くのパラメーターを受け入れ る。ドライブを特定するには hdX= を使う。X は a から h の文字 で指定する。 ドライブを特定しない場合は hd= をオプションの前に付けて指定 する。ドライブを特定しないオプションに対してドライブ指定 (hdX=) を行なっても問題はない。指定したドライブにのみオプシ ョンが有効になり，期待通りの動作をする。 hd= は (a から h の順番の) 次の未指定のドライブを指すために 使うことができることも覚えておくと良い。これ以降は簡潔にする ために hd= を使って説明する。さらに詳しい情報を得るために linux/drivers/block ディレクトリにある README.ide ファイルも 見ること。

  hd=cyls,heads,sects[,wpcom[,irq]] オプション
これらのオプションはディスクの物理的なジオメトリを指定するた めに使う。最初の三つの値は必須である。シリンダ (cyls)，ヘッ ド (heads)，セクタ (sects) の各値は fdisk によって使われる。 書き込み補正 (wpcom) 値は IDE ディスクでは無視される。IRQ 値 にはドライブが存在するインターフェースが用いる IRQ を指定す る。ドライブ毎に指定するパラメーターではない。

  hd=serialize オプション
デュアル IDE インターフェースである CMD-640 チップには，セカ ンダリインターフェース上のドライブとプライマリインターフェー ス上のドライブを同時に使用するとデータが破壊されるというバグ がある。このオプションを使用することによって，ドライバーは両 方のインターフェースを同時に使用しないように監視するようにな る。

  hd=dtc2278 オプション
このオプションは，IDE インターフェースに DTC-2278D が使われ ているとドライバーに指示する。その後，ドライバーは DTC セカ ンダリインターフェースと高速転送モードを使用可能にするための 認識動作を試みる。

  hd=noprobe オプション
ドライブの自動認識をしない。例えば

    hdb=noprobe hdb=1166,7,17

として自動認識を無効にし，かつドライブのジオメトリを明示する ことにより，ドライブは正しいブロックデバイスとして登録され， 使用可能になる。

  hd=nowerr オプション
あるドライブは書き込みエラー (WRERR_STAT) ビットが立ったまま になってしまうようである。このオプションはこの種のバグを持つ デバイスに対する対策を施すためのものである。

  hd=cdrom オプション
このオプションは ATAPI コンパチブルの CDROM が IDE ハードデ ィスクの代わりに接続されていることを IDE ドライバーに明示す る。まれな事だが，CD-ROM の自動認識がうまくいかないときに試 してみると良い。

  スタンダード ST-506 ディスクドライバーのオプション (hd=)
スタンダードディスクドライバーは IDE ドライバーと良く似たジ オメトリを引数として指定することができる。しかしながら，要求 される値は三つ (C/H/S) であることを覚えておかねばならない。 ドライバーはそれより多かろうが少なかろうが何も言わずに無視す る。また引数として受け入れられるのは hd= だけである。つまり hda= やその他の指定はここでは正しくない。書式は次のとおり。

    hd=cyls,heads,sects

もし 2 台のディスクが接続されているなら，二番目のディスクに 対しても上記のジオメトリが設定される。

  XT ディスクドライバーのオプション (xd=)
この 8 bit カードを使う必要がある不幸な人のためのオプション である。(125kB/s の転送速度でよくも満足できるものだ。)カード が認識されない場合は以下の書式で起動時引数を指定する必要があ る。

    xd=type,irq,iobase,dma_chan

type 値はカードのメーカーを指定する。以下のとおり。

    0=ノーブランド，1=DTC，2,3,4=Western Digital，5,6,7=Seagate，8=OMTI

同じメーカーに複数の値があるのは検出に使用される BIOS 文字列 の違いである。type が指定されたときには BIOS は使用されない。 xd_setup() 関数は四つの値がすべて指定されることを前提として おり，過不足をチェックしないため，引数を省略してはならない。 例として，BIOS 無効にし，且つ切り離すという設定で WD1002 コ ントローラを規定の XT コントローラで使用する場合を示す。

    xd=2,5,0x320,3

  Syquest 製 EZ* リムーバブルディスク

    ez=iobase[,irq[,rep[,nybble]]]

IBM MCA バス上のデバイス
/usr/src/linux/Documentation/mca.txt を参照せよ。

  PS/2 ESDI ハードディスク
起動時に，要求されるジオメトリを指定することが可能である。

    ed=cyls,heads,sectors.

ThinkPad-720 を使用する場合は以下のオプションを追加すること。

    tp720=1

  IBM Microchannel SCSI サブシステムの設定

    ibmmcascsi=N

N はサブシステムの pun (SCSI ID) を表す。

CD-ROM (SCSI/ATAPI/IDE のいずれでもないもの)

  Aztech インターフェース
このタイプのカードの構文は以下のとおり。

    aztcd=iobase[,magic_number]

magic_number に 0x79 をセットすると，ドライバーはファームウ ェアのバージョンが分からない場合でもとにかく実行を試みる。そ の他の値を指定しても無視される。

  MicroSolutions backpack CD-ROM インターフェース
この CD-ROM インターフェースの構文は以下のとおり。

    bpcd=iobase

  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 インターフェース
この 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 はドライブに問題があり，ドライバー内部のタイムアウトを指定す る必要がある場合に用いる。コンパイル時に CONFIG_MCD オプショ ンが指定されていなければこの機能を使うことはできない。 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' とすることにより自動検出もできる。 ドライバーは 3 から 11 までの数字は IRQ 値と見なし，0x300 か ら 0x370 までの数字は I/O ポートアドレスの指定と見なす。した がって一方だけ指定することも可能である。両方指定する際も順番 は問われない。

  Sanyo インターフェース
このカードのための構文は以下のとおり。

    sjcd=iobase[,irq[,dma_channel]]

  SoundBlaster Pro インターフェース
このカードのための構文は以下のとおり。

    sbpcd=iobase,type

type 値には SoundBlaster, LaserMate, SPEA のうち一つを指定で きる。(大文字小文字が区別される。) iobase はサウンド部ではな く CD-ROM インターフェースの値を指定する。

ETHERNET 機器
必要な値はドライバーによって異なるが，すべてのドライバーは少 なくとも 割り込み要求番号(irq)，I/O ポートベースアドレスの値 (iobase)，名前(name)を必要とする。最も一般的な形式は以下のと おり。

    ether=irq,iobase[,param_1[,...param_8]],name

最初の数字でない値は名前として使用される。param_n 値はカード (ドライバー) ごとに異なる意味を持つ。通常は共有メモリアドレ スの指定やインターフェースの指定，DMA チャネルの指定などに使 われる。 このパラメーターが最もよく使われるのは二番目の Ethernet カー ドを強制的に検出させる場合である。無指定時は一枚しか検出でき ないが，次のようにすることで簡単に解決する。

    ether=0,0,eth1

(IRQ と I/O ベースアドレスに 0 を指定するとドライバーが自動 検出をすることに注意せよ。) Ethernet-HOWTO 文書には，複数のカードの使用，カードやドライ バーごとの param_n 値の指定方法についての徹底的な解説がある。 特定のドライバーについてその文書が述べている項を参照せよ。

フロッピーディスクドライバー
フロッピードライバーのオプションは多数あり，linux/drivers/ block ディレクトリの README.fd ファイルにすべて記されている。 以下はその README.fd に基いている。

  floppy=mask,allowed_drive_mask
ユニットごとに関連付けるドライブを指定するためのビットマスク を mask にセットする。既定では，フロッピーコントローラとして ユニット 0 と 1 だけが許可されている。これはある種の標準でな い (ASUS の PCIマザーボードのような) ハードウェアにおいてユ ニット 2，3 をアクセスする際，キーボードと干渉してしまうこと を防ぐためである。cmos オプション (後述) の存在によってこの オプションはあまり使われなくなった。

  floppy=all_drives
許可されるドライブを示すビットマスクをすべてセットする。一つ のコントローラに二台以上のドライブを接続する場合に使用する。

  floppy=asus_pci
ユニット 0 と 1 のみを許可するようビットマスクをセットする。 (既定値。)

  floppy=daring
満足な動作をするフロッピーコントローラであることをドライバー に伝える。このオプションはデバイス操作のオプティマイズを許可 するが，ドライバーによっては失敗する事がある。これによって動 作が早くなることもある。

  floppy=0,daring
注意して扱わなければならないフロッピーコントローラであること をドライバーに伝える。

  floppy=one_fdc
フロッピーコントローラが一つしかないことをドライバーに伝える。 (既定値。)

  floppy=two_fdc or floppy=address,two_fdc
フロッピーコントローラが二つある事をドライバーに伝える。二番 目のコントローラの I/O アドレスは address で指定する。 address が指定されない場合は 0x370 が使われる。

  floppy=thinkpad
フロッピードライバーにマザーボードが Thinkpad 型である事を伝 える。Thinkpad はディスク取り替え検出ラインの信号を反転して 使っている。

  floppy=0,thinkpad
ドライバーにマザーボードが Thinkpad 型でないことを伝える。

  floppy=drive,type,cmos
ドライブの cmos タイプを type に設定する。加えて，ビットマス クの値が有効になる。この指定が有効なのは，フロッピードライブ が二台以上ある時 (CMOS RAM に記述できるのは二台まで) や， BIOS が CMOS タイプの指定に独自の方式を使っている場合である。 CMOS に 0 を指定する (既定値) と，フロッピードライバーは実際 の CMOS RAM の値を参照する。

  floppy=unexpected_interrupts
予期しない割り込みを受けた時に警告メッセージを印字する。(既 定値。)

  floppy=no_unexpected_interrupts もしくは floppy=L40SX
予期しない割り込みを受けた時でも警告メッセージを印字しない。 これは IBM L40SX ラップトップコンピュータを特定のビデオモー ドで使用する時に必要である。(フロッピーとビデオ間で何らかの やり取りがあると思われる。予期しない割り込みは性能だけに影響 し，無視しても安全である。)

サウンドドライバー
起動時引数により，サウンドドライバーはコンパイル時に指定され た値を書き換えることができる。これは幾分複雑なため推奨できな い。linux/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 は共にカードを識別するための文字列である。カ ーネルメッセージを出力する際に用いられる。

  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]]]

詳細は /usr/src/linux/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

詳細は /usr/src/linux/Documentation/digiboard.txt を参照せよ。

  Baycom シリアル・パラレル ラジオモデム
構文は以下のとおり。

    baycom=iobase,irq,modem

3 つのパラメーターは省略できない。カードごとにそれぞれの `baycom=' コマンドを記述する。modem パラメーターは文字列で， ser12, ser12*, par96, par96* の中から一つを選ぶ。この * はソ フトウェア DCD を使用するということを表している。モデムの種 類に応じて ser12 か par96 かを選択する。詳細は /usr/src/linux/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=
1.3.75 より新しい版のカーネルでは，どのポートを使うか，また どのポートを使わないかをプリンタドライバーに指示することがで きる。後者はプリンタドライバーがパラレルポートをすべて占有し てしまうのを防ぐのに役立つであろう。結果，他のドライバー (PLIP や PPA のような) が代わりにパラレルポートを使うことが できるようになる。 引数は I/O と IRQ の複数の組からなる。例えば lp=0x3bc,0, 0x378,7 は，ポート 0x3bc を IRQ なし (ポーリング) モードで， ポート 0x378 を IRQ 7 で使うことを表す。0x278 のポートは検出 されない。それは自動検出が lp= で指定していない部分を使うか らである。プリンタドライバー全体を無効にするためには lp=0 を 使う。

  WDT500/501 ドライバー
構文は以下のとおり。

    wdt=io,irq

マウスドライバー

  bmouse=irq
バスマウスドライバーにはパラメーター IRQ のみ有効である。

  msmouse=irq
マイクロソフトマウスドライバーに関しても同様。

  ATARI マウスのセットアップ

    atamouse=threshold[,y-threshold]

パラメーターが一つだけ与えられた場合には，x-threshold と y- threshold を両方用いる。そうでなければ，最初の値は x- threshold として用いられ，二番目の値が y-threshold として用 いられる。値は 1 から 20 までの数値で指定しなければならない。 省略時は 2 が用いられる。

ビデオ機器

  no_scroll
このオプションはハードウェアスクロール (ここで言うハードウェ アスクロールとは，ビデオメモリ上のデータを移動させることによ ってスクリーン表示領域をスクロールさせることを指す) を使用し ないようコンソールドライバーに指示する。特定の点字マシンでは これを必要とする。

著者
Linus Torvalds (他多数)

関連項目
klogd(8), lilo.conf(5), lilo(8), mount(8), rdev(8) このマニュアルページは Paul Gortmaker による Boot Parameter HOWTO の バージョン 1.0.1 を基にしている。さらに多くの情報は この (あるいは最新の) HOWTO に見出せるであろう。