デバイスやペリフェラルに依存しない引数もあります。これらはデバイス等 ではなく、特定の内部カーネルパラメータに関連しています。たとえば主記憶 の取り扱い、RAM ディスクの取り扱い、ルートファイルシステムの取り扱いな どです。
以下のオプションは、カーネルがどのようにルートファイルシステムを選ぶか、 また、どのように扱うかに関連しています。
この引数はカーネルに起動時にどのデバイスをルートファイルシステムとして 使用するかを指定します。この設定のデフォルト値は、システムのカーネルが組み込 まれていたルートデバイスです。例えば、`/dev/hda1' をルートパーティショ ンとして使っているシステムに問題のカーネルが 組み込まれていたなら、デ フォルトのルートデバイスは、`/dev/hda1' です。このデフォルト値では なく 2 番目のフロッピーをルートデバイスとして使用するときには `root=/dev/fd1" を使用してください。
以下に有効なルートデバイスを示します:
(1) /dev/hdaN から /dev/hddN: これは ST-506 互換ディスク a から d のパー ティション N である。
(2) /dev/sdaN から /dev/sdeN: これは SCSI 互換ディスク a から e のパー ティション N である。
(3) /dev/xdaN から /dev/xdbN: これは XT 互換ディスク a から b のパーティ ション N である。
(4) /dev/fdN: これは番号 N のフロッピードライブである。 N=0 なら DOS の A: ドライブで、N=1 なら B: ドライブとなる。
(5) /dev/nfs: これは実際はデバイスではなく、ネットワークからルートファ イルシステムを持ってくるようカーネルに指示するためのフラグである。
不細工で可搬性に欠けますが、上に挙げた有効なディスクデバイスをメジャー
/マイナー番号で指定する方法も許されています(例えば /dev/sda3 はメジャー
番号 8、マイナー番号 3 なので、root=0x803
とも指定できます)。
root= は、カーネル内部にデフォルト値がある起動時引数の一つです。
したがって、この値は rdev
ユーティリティ で変更できます。
カーネルの起動時、基本的な部分を読み込むためのルートファイルシステムが 必要になります。これが起動時にマウントされるルートファイルシステムです。 しかし、このファイルシステムが読み書き可能な状態で マウントされていると、書き込み途中のファイルがあるためにファイルシステムの 一貫性を確実に調べられません。`ro'オプションは、カーネルに対して ルートファイルシステムを「読み取り専用」でマウントするよう指示しますので、 ファイルの一貫性を調べるプログラム (fsck) は調査中に書き込み途中のプログラム がないものと仮定して安全に動作できます。当該ファイルシステムは、 読み書き可能を指定して再マウントされるまで、どんなプログラムやプロセス からも書き込みできません。
`ro=' は、カーネル内部にデフォルト値がある起動時引数の一つです。
したがって、この値は rdev
ユーティリティで変更できます。
これは上で説明したものとは正反対で、カーネルにルートファイルシステムを 読み書き可能としてマウントすることを指示します。ただし、デフォルトの動 作ではいずれにせよルートファイルシステムは読み書き可能でマウントされま す。読み書き可能でマウントされているファイルシステムに "fsck" の類を適 用してはいけません。
上の節で説明したカーネルイメージの中の値が、このパラメータでも使用されてい
ます。したがって、rdev
を使用して変更できます。
以下のオプションは、すべてカーネルが RAM ディスクをどのように扱うか を指定します。RAM ディスクは普通、インストール時のマシンの起動に用いら れたり、ルートファイルシステムを読み書きするのにモジュール化されたドラ イバを必要とするマシンで使用されます。
カーネルイメージをフロッピーディスクに置いて圧縮 ramdisk イメージととも に配置するために、"ramdisk_start=<offset>" コマンドが追加されま した。圧縮された ramdisk ファイルシステムのイメージにカーネルを含める ことはできません。というのは、BIOS にブートセクターを 読ませてカーネル自身を起動するには、ブロック 0 からの位置に配置しないと いけないからです。
注意: 非圧縮の ramdisk イメージを使用する場合には、カーネルを ramdisk に 読み込むファイルシステムイメージの一部としておき、LILO を使ってフロッ ピーから起動できます。あるいは、イメージを圧縮イメージの時と同じように 2 つに分けておくこともできます。
起動ディスクとルートディスクの 2 枚を使う構成(ディスク 1 にカーネル、 ディスク 2 に ramdisk イメージ)をとる場合には、ramdisk はブロック 0 に配置し、 オフセットとして 0 を指定します。これはデフォルト値なので、実際には このような指定をする必要はありません。
この引数はカーネルに ramdisk イメージを読み込むか読み込まないかを 指示します。"load_ramdisk=1" を指定すると、カーネルはフロッピーを ramdisk に読み込みます。デフォルト値は 0 であり、カーネルは ramdisk イ メージを読み込みません。
最新の起動時引数とその使用方法については、
linux/Documentation/ramdisk.txt
を参照してください。`rdev' を
使ってこの引数をカーネルイメージに設定する方法は、ここに書いてあります。
このパラメータは、ramdisk イメージが入ったフロッピーの挿入を求めるプロ ンプトをユーザに出すかどうかをカーネルに指定します。 フロッピー 1 枚の構成であれば、ramdisk イメージはロード/起動用の カーネルが入っているのと同じフロッピーに入っていますから、プロンプトは 不要です。この場合は、"prompt_ramdisk=0" とします。フロッピー 2 枚の 構成であれば、フロッピーを差し替える操作が必要です。ですから、 "prompt_ramdisk=1" とします。これはデフォルト値なので、 実際には指定する必要はありません(歴史的経緯に関する注釈: 悪知恵の 働く人たちは、ブートプロセスを一時的に止め、ブートフロッピーをルートフ ロッピーに差し替えられるようにするために LILO の "vga=ask" オプションを使っていました)。
最新の起動時引数とその使用方法については、
linux/Documentation/ramdisk.txt
を
参照してください。"rdev" を使ってこの引数をカーネルイメージに設定する
方法についてもここに書いてあります。
ramdisk は要求に応じて動的に大きくなっていきますから、大きさの上限が 設けられています。このおかげで、有効な RAM を全部使い切って、利用者 がわけのわからない災難に遭うことがないようになっています。デフォルトの 上限は 4096 (つまり 4MB) で、ほとんどの場合はこれで十分なはずです。 "ramdisk_size=" 起動時引数を使うと、この値を好きな値に変更することが できます。
最新の起動時引数とその使用方法については、
linux/Documentation/ramdisk.txt
を参照してください。
"rdev" を使ってこの引数をカーネルイメージに設定する方法についても、こ
こに書いてあります。
(注意: この引数は廃止されているので、バージョン 1.3.47 以前の カーネルにだけ使用してください。 ramdisk デバイス用に使用すべきコマンドは先に 説明した通りです。)
このオプションは、RAM ディスクデバイスの大きさを kB 単位で指定します。 例えば、1.44MB フロッピーに入っているルートファイルシステムを RAM ディ スクにロードしたければ以下のようにします。
ramdisk=1440
"ramdisk=" は、カーネルが内部にデフォルト値を持っている起動時引数の一つです。
したがって、この値は rdev
ユーティリティで変更できます。
バージョン 2.x 以降のカーネルが持つ機能として、ルートファイルシステム
を最初は RAM ディスクに置いて、その RAM イメージ上でカーネルに
/linuxrc
を実行させられます。この機能が
使われるのは普通、実際に使うルートファイルシステムをマウントするために
必要なモジュールをロードできるようにする場合です(例えば、SCSI ドライバ
モジュールをRAM ディスクイメージに読み込んで、SCSI 上の実際のルートファ
イルシステムを読むような場合です)。
実際の "noinitrd" 引数は、カーネルが起動した後に initrd データがどうな
るのかを指示します。これが指定されると、initrd データを RAM ディスクに
移すのではなく、/dev/initrd
を通して扱えるようになります。
これは、RAM が解放されてシステムに返却されるまで読むことができます。
RAM ディスクの詳細については
linux/Documentation/initrd.txt
を参照してください。また、
LILO
や LOADLIN
の最新版にも役に立つ情報が入っているはずです。
以下の引数は、システムの物理および仮想メモリの Linux による 検出・取り扱いの方法を変更します。
この引数には二つの目的があります。本来の目的は積んでいる主記憶の総量
(または、Linux で使える主記憶の量を制限したければ、これより小さい数)を
指定することでした。二番目の(そしてあまり使われない)目的は
mem=nopentium
を指定して、Linux カーネルに
4MB ページテーブル実行機能を使わせないようにすることです。
PC の仕様における本来の BIOS 呼び出しは、組み込まれている主記憶の総量を
最大 64MB までしか報告できないよう設計されています(そう、ディスクで起
こる 1024 シリンダー問題と同種の、将来に関する洞察力の欠如です…タメイキ)。
Linux は起動時にこの BIOS 呼び出しを用いて、積まれている主記憶の量を調
べます。もし 64MB 以上の主記憶を積んでいるならば、積まれている主記憶の
量を mem=
起動時引数を使って Linux に知らせられます。
mem=
引数の使い方に関する Linus の言葉を引用しましょう。
「カーネルはどんな `mem=xx' 引数を指定されても受け付けます。 そして指定が間違っていることが明らかになると、遅かれ早かれクラッシュします。 この引数は利用可能な最上位の RAM アドレスを示します。ですから、例えば `mem=0x1000000' は 16MB の主記憶があるという意味です。96MB の マシンなら、これは `mem=0x6000000' です。実際に積んでいるよりも多くの 主記憶があるように指定すると、まずいことが起こるでしょう。すぐには起き ないかもしれませんが、いつか必ず起こるでしょう」
引数は必ずしも 16 進数である必要はありません。また、後ろに `k' や `M'
(大文字・小文字は関係ありません)を付けることにより、キロバイト単位や
メガバイト単位の指定がそれぞれ可能です(`k' は値を 10 ビットシフトさせ、
`M' は 20 ビットシフトさせます)。128MB のマシンでは普通、
"mem=128m
" といった指定になるでしょう。
この引数を使うと、ディスクへのスワッピングに関連する仮想記憶(virtual memory, VM)のパラメータを調整できます。 この引数は以下の 8 つのパラメータを受け取ります。
MAX_PAGE_AGE PAGE_ADVANCE PAGE_DECLINE PAGE_INITIAL_AGE AGE_CLUSTER_FRACT AGE_CLUSTER_MIN PAGEOUT_WEIGHT BUFFEROUT_WEIGHT
興味のあるハッカーは linux/mm/swap.c
を読んでください。
また、/proc/sys/vm
の中ものぞいてみるといいでしょう。
カーネルの linux/Documentation/vm/
ディレクトリには、
これに関して役立つ文書が入っています。
`swap=' と同様の引数です。この引数は、利用者がバッファのメモリ管理 に関するパラメータを調整することを許します。これは以下の 6 つのパラメータ を受け付けます:
MAX_BUFF_AGE BUFF_ADVANCE BUFF_DECLINE BUFF_INITIAL_AGE BUFFEROUT_WEIGHT BUFFERMEM_GRACE
興味のあるハッカーは linux/mm/swap.c
を読んでください。
また、/proc/sys/vm
の中ものぞいてみるとよいでしょう。
カーネルの linux/Documentation/vm/
ディレクトリには、これに関
する役に立つ文書が入っています。
Linux は、ルートファイルシステムを NFS (Network File System)から取得す
るディスクレスワークステーションのようなシステムに対応しています。以下
の引数を用いると、ディスクレスワークステーションに対してどのマシンから
システムを持ってくるのかを指示できます。引数 root=/dev/nfs
が
必要な点にも注意してください。NFS ルートファイルシステムの使い方の
詳しい情報は、linux/Documentation/nfsroot.txt
にあります。
このファイルは読むべきです。というのも、以下の説明はこのファイルからの
要約に過ぎないからです。
この引数はどのマシン、どのディレクトリ、どの NFS オプションを ルートファイルシステムとして使用するのかをカーネルに指示します。 この引数の書式は以下の通りです:
nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
nfsroot 引数がコマンドラインから与えられない場合、デフォルト値として `/tftpboot/%s' が使用されます。その他のオプションは以下の通りです:
<server-ip> -- NFS サーバの IP アドレスを指定します。これが与えられていない場合、デ フォルト値として nfsaddrs (後述)変数が使用されます。 この引数の用途は例えば、RARP と NFS を別のサーバにする場合です。 普通はこの部分は空のままでかまいません。
<root-dir> -- ルートとしてマウントする、サーバ上のディレクトリの名前です。 文字列に `%s' トークンが使用されている場合、このトークンはクラ イアントの IP アドレスの ASCII 文字列表現で置き換えられます。
<nfs-options> -- 標準の NFS オプションです。全てオプションはコンマで区切ります。 このオプションが与えられない場合には、以下のデフォルト値が使用されます:
port = サーバの portmap デーモンによって与えられた値 rsize = 1024 wsize = 1024 timeo = 7 retrans = 3 acregmin = 3 acregmax = 60 acdirmin = 30 acdirmax = 60 flags = hard, nointr, noposix, cto, ac
この起動時引数はネットワーク越しに通信を行うために必要な各種ネットワー クインターフェースアドレスを設定します。この引数が与えられない場合、カー ネルは RARP か BOOTP のいずれか、または両方を使用してこの値を得ようと します。形式は以下の通りです:
nfsaddrs=<my-ip>:<serv-ip>:<gw-ip>:<netmask>:<name>:<dev>:<auto>
<my-ip> -- クライアントの IP アドレスです。無指定の場合はアドレスが RARP か BOOTP によって決定されます。どのプロトコルが使用されるかは、カーネル設定の時 に有効にした項目と <auto> パラメータによります。 このパラメータを指定していれば、RARP も BOOTP も使用されません。
<serv-ip> -- NFS サーバの IP アドレスです。クライアントアドレスを決定するのに RARP が用いられていており、かつこのパラメータが無指定ではない場合、指 定したサーバからの応答だけが受け付けられます。異なる RARP サーバ および NFS サーバを使用したければ、ここで RARP サーバを指定(あるい は無指定にしておいて)して、nfsroot パラメータ(前述)で NFS サーバを指 定してください。このパラメータが無指定の場合、サーバのアドレスは RARP リクエストか BOOTP リクエストに対して返答したサーバのアドレスが 使用されます。
<gw-ip> -- サーバが違うサブネットにある時に指定するゲートウェイアドレス です。これが無指定であり、かつこの値が BOOTP で受信されなければ、ゲー トウェイは使用されずサーバはローカルなネットワークにあるものと仮定さ れます。
<netmask> -- ローカルネットワークインターフェースのネットマスクです。 これが無指定であり、かつこの値が BOOTP によって受信されなければ、 ネットマスクはクライアントの IP アドレスから求められます。
<name> -- クライアントの名前です。これが無指定であれば、クライアントの IP アドレ スの ASCII 表記か、BOOTP によって受信された値が使われます。
<dev> -- 使用するネットワークデバイスの名前です。これが無指定の場合には、 全てのデバイスが RARP リクエストに使用され、最初に見つかったものが BOOTP に使用されます。NFS の場合は、RARP リクエストか BOOTP リクエスト の応答を受け取ったデバイスが使用されます。デバイスが一つしかないなら、 このパラメータを無指定にしても大丈夫です。
<auto> -- 自動設定の方法を指定します。この引数が `rarp' か `bootp' の時には、 指定されたプロトコルが使用されます。値が `both' か無指定の場合は、 カーネル設定時に有効にされていれば、両者が用いられます。`none' を指定 すると、自動設定は行われません。この場合、先に説明した引数のうち必要な ものを全て自分で設定しなければなりません。
<auto> パラメータは nfsadrs 引数の値として単独で(前に `:' が付く ことなく)使用できます。この場合は自動設定が行われます。しか し、この場合には値 `none' は指定できません。
以下に示す各種の起動時引数を用いて、カーネルの内部パラメータをユーザが 調整できます。
カーネルは利用者に対して重要な(あるいはそうでもない)メッセージを
printk()
関数を通して提示します。メッセージが重要な場合、
printk()
関数は現在のコンソールに表示するとともに、そのメッセージ
をディスクに記録するために klogd()
機能に引き渡します。ディスクに
記録を保管するだけでなくコンソールに表示するのは、不幸にしてメッセージ
がディスクに記録されず失われるような場合(例えばディスクの不良など)を考
慮してのことです。
重要なものと重要でないものを区別するための閾値値は
console_loglevel
変数によって設定されます。デフォルトでは、
DEBUG
(レベル7)よりも重要なものをコンソールに送ります(こういった
レベルはインクルードファイル kernel.h
で定義されています)。
debug
を起動時引数として与えると、コンソールログレベルを 10 に設
定します。その結果、全てのカーネルメッセージがコンソールに現れま
す。
コンソールログレベルは通常、klogd()
プログラムのオプションとして
実行時に設定されます。設定の方法については、システムにインストールされ
ている klogd()
の man ページを参照してください。
カーネルは、デフォルトでは起動時に `init' プログラムを実行します。これ
はユーザのためにコンピュータの設定を行うプログラムであり、getty プログ
ラムの起動や `rc' スクリプトの実行などを行います。
カーネルは最初に /sbin/init
を参照し、これが無ければ
/etc/init
(このファイルは使わないほうがいいでしょう)を参照し、
さらに最後の手段として /bin/sh
を(多分 /etc/rc
の次に)実
行しようとします。例えば、init プログラムに何らかの不具合があり、その
ために起動ができない場合には、単にブートプロンプトに
init=/bin/sh
と書けば、起動時にいきなりシェルに入れます。
そして、その後で壊れているプログラムを取り換えられます。
i386 ベースのマシンにおいては普通、Linux カーネルは起動時にキーボード コントローラのリセットを行いません。なぜなら、BIOS がキーボードコント ローラをリセットするはずだからです。しかし普通は、必ずしも全てのマシン がリセットを行うことにはなっていません。キーボードの動作に問題がある場 合には、このオプションを指定すると解決するかもしれません。このオプショ ンは単に、初期化の際にリセットを行うことを強制します(このオプション をとにかくデフォルトの動作にすべきだと言う人もいます)。
この引数に指定した数値は、SMP モードで有効になる CPU の最大数を制限し
ます。0 を指定するのは、nosmp
オプションを指定するのと同じ意味で
す。
IBM model 95 Microchannel マシンは、CPU と組み合わせて使う数値演算チッ プの種類を Linux が検出するために通常行うテストによって固まってしまう ようです。全ての Pentium チップには数値演算プロセッサが組み込まれてい るので、この起動オプションを使うことによりこのテスト(および固まってし まう問題)を避けられます。
ルートファイルシステムが MD デバイス(Multiple Device)にある場合には、
このオプションを使ってカーネルに MD デバイスの構成を教えられます
(カーネルには MD デバイスからの起動の対応が組み込まれているものとし
ます)。フォーマットは以下の通りです
(linux/Documentation/md.txt
からの引用です):
md=md_device_num,raid_level,chunk_size_factor,fault_level,dev0,dev1,...,devN
ここで md_device_num
は MD デバイスの数です(つまり 0 は md0, 1 は
md1 のようになります)。raid_level
は、リニアモードで使うなら -1
を、ストライピングモードで使うなら 0 を指定してください。他のモードは
現在、サポートされていません。chunk_size_factor
は RAID-0 と
RAID-1 専用のオプションで、PAGE_SIZE を指定された量だけ左にシフトした
値をチャンクのサイズとして設定します。fault_level
は RAID-1 だけ
専用のオプションで、指定された値を最大フォールト数に設定します。
(現在は RAID-1 からの起動がサポートされていないため、サポートされてい
ません。)
dev0-devN
は、MD デバイスを構成する個々のデバイスをコンマで区切っ
て並べたリストです。例えば /dev/hda1,/dev/hdc1,/dev/sda1
のよ
うに指定します。
i387 コプロセッサの中には 32 ビット保護モードで発現するバグを 持ったものがあります。例えば、初期の ULSI-387 は浮動小数点演算の実行中 に凍り付いてしまいます。 恐らくこれは FRSAV/FRRESTOR 命令のバグのせい です。`no387' 起動時引数を受け取ると、Linux はたとえ数値演算コプロセッ サが組み込まれていても、これを無視します。もちろん、この場合はカーネル を数値演算エミュレーション対応にコンパイルしておかなければなりません! また、コプロセッサとして 287 を使っているような恐ろしく古い 386 マシンを持っている場合も有用でしょう。Linux は 80287 を使えないからです。
i386 (とその後継チップ)系のチップには(キーボード、モデム、ディスクなど の)外部機器から仕事をするよう CPU が呼ばれるまで実行を停止するための `hlt' 命令があります。これにより、CPU を「低消費電力」モードにさせ、 外部機器が CPU を(通常は割り込みなどで)起こすまで CPU を死んだように眠 らせておけます。 初期の i486DX-100 の中には、`hlt' 命令に問題があるものがあります。 この場合、hlt 命令が使用されると通常の実行モードにちゃんと戻れなく なります。`no-hlt' 命令を用いると、Linux は何もすることがない時には 無限ループに入ります。そして、他に何もすることがなくても、CPU を hlt 状態に入れません。この引数によって、このような不具合を持つ CPU でも Linux を使えます。もっとも、メーカー補償があるのならそれを使っ て交換することをお勧めしますが。
この引数を起動時に使うと、点字端末を使いやすいようにスクロールを禁止し てしまいます。
このオプションを使うと、SMP カーネルはマルチプロセッサマシンで高度な割
り込み制御機能の一部を使わなくなります。詳しくは
linux/Documentation/IO-APIC.txt
を見てください。
このオプションを使うと、SMP カーネルは SMP マシンをシングルプロセッサ で動作させます。このオプションを使うのは普通、デバッグの時と、ある問題 が SMP 関連のものかどうかを調べるときだけです。
滅多にないカーネルパニックが起きた場合(つまり、カーネルが内部エラー
を検出し、大声でうめきながら何もかも中止するほど重要であると判断した場
合)、誰かがやってきて、スクリーン上のパニックメッセージを読み、マシン
を再起動するのを何もしないで待つというのがデフォルトの動作です。
しかし、機械が孤立した場所にあって人がついていない場合は、マシンが自動
的に自分自身をリセットして、動作状態に復帰する方が望ましいかもしれません。
例えば、panic=30
と起動時に指定すると、カーネルはカーネルパニック
が生じてから 30 秒後に自分自身を再起動しようと試みます。値として 0 を
指定するとデフォルトの動作を行います。つまり、人が来るのを待ち続けます。
この値は /proc/sys/kernel/panic
sysctl インターフェース
を通して読み書き可能であることも知っておくとよいでしょう。
このオプションを用いると、未知の(またはブラックリストに載っていること
が知られている) SMP マザーボードに対して、PCI スロットと IRQ 設定の競合
に関する情報が SMP カーネルに伝えられます。詳しくは
linux/Documentation/IO-APIC.txt
を参照してください。
カーネル開発者は、このオプションを有効にすることにより、カーネルがどこ
にどれだけの CPU 時間を費しているかのプロファイルを得られます。
これはカーネルの効率と性能を高めるために用いられます。
このオプションを使用して、ユーザはプロファイルシフトカウントを起動時に
指定します。通常は、これには 2 が設定されます。また、最初からプロファ
イルを有効にした状態でカーネルを設定することもできます。いずれの場合に
も、/proc/profile
の出力を使用する readprofile.c
等が必
要です。
このオプションは、Linux がコンピュータをリセットする(よくある例とし
ては Control-Alt-Delete を処理する /sbin/init
によって)
ときに、どのようにリブートするかを制御します。
バージョン 2.0 のカーネルのデフォルトは「コールド(cold)」リブート
(完全なリセットであり、BIOS はメモリチェック等を行います)であり、
「ウォーム(warm)」リブート(完全なリブートではなく、メモリチェックは行い
ません)ではありません。デフォルトの動作がコールドリブートに変更された
のは、ウォームリブートを要求するとリブートに失敗する安物や不具合のある
ハードウェアでは、コールドリブートの方がうまく動作するようだからです。
リセット時に以前のような振る舞い(つまりウォームリブート)を行うには、
reboot=w
と指定してください。実際には、w
で始まる言葉であれ
ば何であれウォーム指定したことになります。
なぜわざわざウォーム指定なんてわずらわしいことをするかですって? キャッシュメモリを持っているディスクコントローラの中には、ウォームリブート を検出でき、キャッシュデータを全部ディスクに書き出すものがあります。 ところがコールド再起動となるとカードがリセットされてしまい、カードの キャッシュメモリに上にあってディスクに書き戻される予定のデータが消えて しまうかもしれません。また、システムによっては、コールドリブートをする とメモリチェックや SCSI BIOS の処理化処理に長い時間が かかるという話もあります。これはウォームリブートを選ぶ十分な理由でしょ う。
これは、 I/O ポート領域を検出させないために使います。 書式は以下の通りです:
reserve=iobase,extent[,iobase,extent]...
機種によっては、特定領域にあるデバイスをデバイスドライバがチェックしな いようにしなければならないことがあります。これは設計のまずいハードウェ アのせいで、(どこかの イーサネットカードのように)起動中に 凍り付いてしまったり、間違って検出されてしまったり、 前の検出によって状態が変わってしまうことがあるからです。あるいは単に、 そのハードウェアをカーネルに初期化させたくないといった場合もあるかもし れません。
reserve
起動時引数は、検出してはならない I/O ポート領域を指定する
ことによってこの問題を回避します。指定された領域は、カーネル内部の
ポート登録テーブル内に予約され、その領域で既にデバイスが検出されたかの
ように扱われます(登録名は reserved
です)。ただし、この機構はほと
んどのマシンでは不要であることを覚えておいてください。
この機構を使うのは、何らかの問題や、この機構を使わなければならない特別
な事情がある場合だけにすべきです。
指定した範囲の I/O ポートは、領域内の I/O 空間を闇雲に探る前に
check_region()
を行うデバイス検出から保護されています。
これは NE2000 で止まってしまうドライバがあるときや、
別のデバイスを誤検出したときに使うために追加されました。
正しいデバイスドライバは、他の起動時引数によって
明示的に指示されない限り、reserve
によって指定された範囲を
検出しません。これは、reserve
が他の起動時引数と組み合わせて使
われることが多いことを暗示しています。つまり、reserve
領域を指定
して特定のデバイスを保護するならば、そのデバイスは普通、明示的に検出さ
せなければなりません。ほとんどのドライバは、明示的にアドレスを指定
するとポート登録テーブル(port registration table)を無視します。
例えば、起動時に
reserve=0x300,32 blah=0x300
を与えると `blah' 用ドライバ以外の全てデバイスドライバは
0x300-0x31f
を避けるようになります。
普通の起動時引数と同じく、引数の数は 11 個までという制限があります。
したがって、reserve
キーワード 1 つにつき、 5 個しか領域を予約で
きません。えらく面倒なことをしたければ reserve
を複数個指定すれば
うまくいくでしょう。
これは本当は起動時引数ではないことに注意してください。
これは LILO が解釈するオプションであって、他の起動時引数のようにカーネ
ルが解釈するわけではありません。しかしながら、この引数を使うのが大変広
まったので、ここで取り上げることにします。この引数はまた、rdev -v
やこれと同等の vidmode
を使っても vmlinuz ファイルに設定できます。
このオプションは Linux カーネルが実際に起動する前に、ビデオ BIOS を使っ
てデフォルトの表示モードを変更します。よく用いられるモードは、80x50 や
132x44 等です。このオプションの一番いい使い方は、vga=ask
であり、
これは使用しているビデオアダプタで選択できるモードの一覧をカーネルの起
動前にユーザに示し、どれを使うかを選ばせます。与えられたモードの中から
いいものが見つかったら、今度は先のオプションの `ask' をその値で置き換
えます。詳しい情報に関しては、linux/Documentation/svga.txt
を
参照してください。この文書は最新版のカーネルと一緒に配布されています。
ついでながら、新しいカーネル (v2.1以降) はビデオモードを選ぶ機能をオプ ションとして持っています。これはカーネルの設定時に ビデオモード選択のサポート(Video mode selection support) として示 されます。したがって、この機能を使いたければ、このオプションを有効にす る必要があります。