|
次のページ
前のページ
目次へ
3. 一般的なデバイス非依存の起動時引数デバイスやペリフェラルに依存しない引数もあります。これらはデバイス等 ではなく、特定の内部カーネルパラメータに関連しています。たとえば主記憶 の取り扱い、RAM ディスクの取り扱い、ルートファイルシステムの取り扱いな どです。
3.1 ルートファイルシステムのオプション以下のオプションは、カーネルがどのようにルートファイルシステムを選ぶか、 また、どのように扱うかに関連しています。
`root=' 引数この引数はカーネルに起動時にどのデバイスをルートファイルシステムとして 使用するかを指定します。この設定のデフォルト値は、システムのカーネルが組み込 まれていたルートデバイスです。例えば、`/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= は、カーネル内部にデフォルト値がある起動時引数の一つです。
したがって、この値は
`ro' 引数カーネルの起動時、基本的な部分を読み込むためのルートファイルシステムが 必要になります。これが起動時にマウントされるルートファイルシステムです。 しかし、このファイルシステムが読み書き可能な状態で マウントされていると、書き込み途中のファイルがあるためにファイルシステムの 一貫性を確実に調べられません。`ro'オプションは、カーネルに対して ルートファイルシステムを「読み取り専用」でマウントするよう指示しますので、 ファイルの一貫性を調べるプログラム (fsck) は調査中に書き込み途中のプログラム がないものと仮定して安全に動作できます。当該ファイルシステムは、 読み書き可能を指定して再マウントされるまで、どんなプログラムやプロセス からも書き込みできません。 `ro=' は、カーネル内部にデフォルト値がある起動時引数の一つです。
したがって、この値は
`rw' 引数これは上で説明したものとは正反対で、カーネルにルートファイルシステムを 読み書き可能としてマウントすることを指示します。ただし、デフォルトの動 作ではいずれにせよルートファイルシステムは読み書き可能でマウントされま す。読み書き可能でマウントされているファイルシステムに "fsck" の類を適 用してはいけません。 上の節で説明したカーネルイメージの中の値が、このパラメータでも使用されてい
ます。したがって、
3.2 RAM ディスク管理に関係するオプション以下のオプションは、すべてカーネルが RAM ディスクをどのように扱うか を指定します。RAM ディスクは普通、インストール時のマシンの起動に用いら れたり、ルートファイルシステムを読み書きするのにモジュール化されたドラ イバを必要とするマシンで使用されます。
`ramdisk_start=' 引数カーネルイメージをフロッピーディスクに置いて圧縮 ramdisk イメージととも に配置するために、"ramdisk_start=<offset>" コマンドが追加されま した。圧縮された ramdisk ファイルシステムのイメージにカーネルを含める ことはできません。というのは、BIOS にブートセクターを 読ませてカーネル自身を起動するには、ブロック 0 からの位置に配置しないと いけないからです。 注意: 非圧縮の ramdisk イメージを使用する場合には、カーネルを ramdisk に 読み込むファイルシステムイメージの一部としておき、LILO を使ってフロッ ピーから起動できます。あるいは、イメージを圧縮イメージの時と同じように 2 つに分けておくこともできます。 起動ディスクとルートディスクの 2 枚を使う構成(ディスク 1 にカーネル、 ディスク 2 に ramdisk イメージ)をとる場合には、ramdisk はブロック 0 に配置し、 オフセットとして 0 を指定します。これはデフォルト値なので、実際には このような指定をする必要はありません。
`load_ramdisk=' 引数この引数はカーネルに ramdisk イメージを読み込むか読み込まないかを 指示します。"load_ramdisk=1" を指定すると、カーネルはフロッピーを ramdisk に読み込みます。デフォルト値は 0 であり、カーネルは ramdisk イ メージを読み込みません。 最新の起動時引数とその使用方法については、
`prompt_ramdisk=' 引数このパラメータは、ramdisk イメージが入ったフロッピーの挿入を求めるプロ ンプトをユーザに出すかどうかをカーネルに指定します。 フロッピー 1 枚の構成であれば、ramdisk イメージはロード/起動用の カーネルが入っているのと同じフロッピーに入っていますから、プロンプトは 不要です。この場合は、"prompt_ramdisk=0" とします。フロッピー 2 枚の 構成であれば、フロッピーを差し替える操作が必要です。ですから、 "prompt_ramdisk=1" とします。これはデフォルト値なので、 実際には指定する必要はありません(歴史的経緯に関する注釈: 悪知恵の 働く人たちは、ブートプロセスを一時的に止め、ブートフロッピーをルートフ ロッピーに差し替えられるようにするために LILO の "vga=ask" オプションを使っていました)。 最新の起動時引数とその使用方法については、
`ramdisk_size=' 引数ramdisk は要求に応じて動的に大きくなっていきますから、大きさの上限が 設けられています。このおかげで、有効な RAM を全部使い切って、利用者 がわけのわからない災難に遭うことがないようになっています。デフォルトの 上限は 4096 (つまり 4MB) で、ほとんどの場合はこれで十分なはずです。 "ramdisk_size=" 起動時引数を使うと、この値を好きな値に変更することが できます。 最新の起動時引数とその使用方法については、
`ramdisk=' 引数 (廃止)(注意: この引数は廃止されているので、バージョン 1.3.47 以前の カーネルにだけ使用してください。 ramdisk デバイス用に使用すべきコマンドは先に 説明した通りです。) このオプションは、RAM ディスクデバイスの大きさを kB 単位で指定します。 例えば、1.44MB フロッピーに入っているルートファイルシステムを RAM ディ スクにロードしたければ以下のようにします。
ramdisk=1440 "ramdisk=" は、カーネルが内部にデフォルト値を持っている起動時引数の一つです。
したがって、この値は
`noinitrd' (初期 RAM ディスク) 引数バージョン 2.x 以降のカーネルが持つ機能として、ルートファイルシステム
を最初は RAM ディスクに置いて、その RAM イメージ上でカーネルに
実際の "noinitrd" 引数は、カーネルが起動した後に initrd データがどうな
るのかを指示します。これが指定されると、initrd データを RAM ディスクに
移すのではなく、
3.3 メモリの取り扱いに関する起動時引数以下の引数は、システムの物理および仮想メモリの Linux による 検出・取り扱いの方法を変更します。
`mem=' 引数この引数には二つの目的があります。本来の目的は積んでいる主記憶の総量
(または、Linux で使える主記憶の量を制限したければ、これより小さい数)を
指定することでした。二番目の(そしてあまり使われない)目的は
PC の仕様における本来の BIOS 呼び出しは、組み込まれている主記憶の総量を
最大 64MB までしか報告できないよう設計されています(そう、ディスクで起
こる 1024 シリンダー問題と同種の、将来に関する洞察力の欠如です…タメイキ)。
Linux は起動時にこの BIOS 呼び出しを用いて、積まれている主記憶の量を調
べます。もし 64MB 以上の主記憶を積んでいるならば、積まれている主記憶の
量を 「カーネルはどんな `mem=xx' 引数を指定されても受け付けます。 そして指定が間違っていることが明らかになると、遅かれ早かれクラッシュします。 この引数は利用可能な最上位の RAM アドレスを示します。ですから、例えば `mem=0x1000000' は 16MB の主記憶があるという意味です。96MB の マシンなら、これは `mem=0x6000000' です。実際に積んでいるよりも多くの 主記憶があるように指定すると、まずいことが起こるでしょう。すぐには起き ないかもしれませんが、いつか必ず起こるでしょう」 引数は必ずしも 16 進数である必要はありません。また、後ろに `k' や `M'
(大文字・小文字は関係ありません)を付けることにより、キロバイト単位や
メガバイト単位の指定がそれぞれ可能です(`k' は値を 10 ビットシフトさせ、
`M' は 20 ビットシフトさせます)。128MB のマシンでは普通、
"
`swap=' 引数この引数を使うと、ディスクへのスワッピングに関連する仮想記憶(virtual memory, VM)のパラメータを調整できます。 この引数は以下の 8 つのパラメータを受け取ります。
MAX_PAGE_AGE PAGE_ADVANCE PAGE_DECLINE PAGE_INITIAL_AGE AGE_CLUSTER_FRACT AGE_CLUSTER_MIN PAGEOUT_WEIGHT BUFFEROUT_WEIGHT 興味のあるハッカーは
`buff=' 引数`swap=' と同様の引数です。この引数は、利用者がバッファのメモリ管理 に関するパラメータを調整することを許します。これは以下の 6 つのパラメータ を受け付けます:
MAX_BUFF_AGE BUFF_ADVANCE BUFF_DECLINE BUFF_INITIAL_AGE BUFFEROUT_WEIGHT BUFFERMEM_GRACE 興味のあるハッカーは
3.4 NFS ルートファイルシステムに関する起動時引数Linux は、ルートファイルシステムを NFS (Network File System)から取得す
るディスクレスワークステーションのようなシステムに対応しています。以下
の引数を用いると、ディスクレスワークステーションに対してどのマシンから
システムを持ってくるのかを指示できます。引数
`nfsroot=' 引数この引数はどのマシン、どのディレクトリ、どの 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
`nfsaddrs=' 引数この起動時引数はネットワーク越しに通信を行うために必要な各種ネットワー クインターフェースアドレスを設定します。この引数が与えられない場合、カー ネルは 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' は指定できません。
3.5 その他のカーネル起動時引数以下に示す各種の起動時引数を用いて、カーネルの内部パラメータをユーザが 調整できます。
`debug' 引数カーネルは利用者に対して重要な(あるいはそうでもない)メッセージを
重要なものと重要でないものを区別するための閾値値は
コンソールログレベルは通常、
`init=' 引数カーネルは、デフォルトでは起動時に `init' プログラムを実行します。これ
はユーザのためにコンピュータの設定を行うプログラムであり、getty プログ
ラムの起動や `rc' スクリプトの実行などを行います。
カーネルは最初に
`kbd-reset' 引数i386 ベースのマシンにおいては普通、Linux カーネルは起動時にキーボード コントローラのリセットを行いません。なぜなら、BIOS がキーボードコント ローラをリセットするはずだからです。しかし普通は、必ずしも全てのマシン がリセットを行うことにはなっていません。キーボードの動作に問題がある場 合には、このオプションを指定すると解決するかもしれません。このオプショ ンは単に、初期化の際にリセットを行うことを強制します(このオプション をとにかくデフォルトの動作にすべきだと言う人もいます)。
`maxcpus=' 引数この引数に指定した数値は、SMP モードで有効になる CPU の最大数を制限し
ます。0 を指定するのは、
`mca-pentium' 引数IBM model 95 Microchannel マシンは、CPU と組み合わせて使う数値演算チッ プの種類を Linux が検出するために通常行うテストによって固まってしまう ようです。全ての Pentium チップには数値演算プロセッサが組み込まれてい るので、この起動オプションを使うことによりこのテスト(および固まってし まう問題)を避けられます。
`md=' 引数ルートファイルシステムが MD デバイス(Multiple Device)にある場合には、
このオプションを使ってカーネルに MD デバイスの構成を教えられます
(カーネルには MD デバイスからの起動の対応が組み込まれているものとし
ます)。フォーマットは以下の通りです
(
ここで
`no387' 引数i387 コプロセッサの中には 32 ビット保護モードで発現するバグを 持ったものがあります。例えば、初期の ULSI-387 は浮動小数点演算の実行中 に凍り付いてしまいます。 恐らくこれは FRSAV/FRRESTOR 命令のバグのせい です。`no387' 起動時引数を受け取ると、Linux はたとえ数値演算コプロセッ サが組み込まれていても、これを無視します。もちろん、この場合はカーネル を数値演算エミュレーション対応にコンパイルしておかなければなりません! また、コプロセッサとして 287 を使っているような恐ろしく古い 386 マシンを持っている場合も有用でしょう。Linux は 80287 を使えないからです。
`no-hlt' 引数i386 (とその後継チップ)系のチップには(キーボード、モデム、ディスクなど の)外部機器から仕事をするよう CPU が呼ばれるまで実行を停止するための `hlt' 命令があります。これにより、CPU を「低消費電力」モードにさせ、 外部機器が CPU を(通常は割り込みなどで)起こすまで CPU を死んだように眠 らせておけます。 初期の i486DX-100 の中には、`hlt' 命令に問題があるものがあります。 この場合、hlt 命令が使用されると通常の実行モードにちゃんと戻れなく なります。`no-hlt' 命令を用いると、Linux は何もすることがない時には 無限ループに入ります。そして、他に何もすることがなくても、CPU を hlt 状態に入れません。この引数によって、このような不具合を持つ CPU でも Linux を使えます。もっとも、メーカー補償があるのならそれを使っ て交換することをお勧めしますが。
`no-scroll' 引数この引数を起動時に使うと、点字端末を使いやすいようにスクロールを禁止し てしまいます。
`noapic' 引数このオプションを使うと、SMP カーネルはマルチプロセッサマシンで高度な割
り込み制御機能の一部を使わなくなります。詳しくは
`nosmp' 引数このオプションを使うと、SMP カーネルは SMP マシンをシングルプロセッサ で動作させます。このオプションを使うのは普通、デバッグの時と、ある問題 が SMP 関連のものかどうかを調べるときだけです。
`panic=' 引数滅多にないカーネルパニックが起きた場合(つまり、カーネルが内部エラー
を検出し、大声でうめきながら何もかも中止するほど重要であると判断した場
合)、誰かがやってきて、スクリーン上のパニックメッセージを読み、マシン
を再起動するのを何もしないで待つというのがデフォルトの動作です。
しかし、機械が孤立した場所にあって人がついていない場合は、マシンが自動
的に自分自身をリセットして、動作状態に復帰する方が望ましいかもしれません。
例えば、 この値は
`pci=' 引数
`pirq=' 引数このオプションを用いると、未知の(またはブラックリストに載っていること
が知られている) SMP マザーボードに対して、PCI スロットと IRQ 設定の競合
に関する情報が SMP カーネルに伝えられます。詳しくは
`profile=' 引数カーネル開発者は、このオプションを有効にすることにより、カーネルがどこ
にどれだけの CPU 時間を費しているかのプロファイルを得られます。
これはカーネルの効率と性能を高めるために用いられます。
このオプションを使用して、ユーザはプロファイルシフトカウントを起動時に
指定します。通常は、これには 2 が設定されます。また、最初からプロファ
イルを有効にした状態でカーネルを設定することもできます。いずれの場合に
も、
`reboot=' 引数このオプションは、Linux がコンピュータをリセットする(よくある例とし
ては Control-Alt-Delete を処理する なぜわざわざウォーム指定なんてわずらわしいことをするかですって? キャッシュメモリを持っているディスクコントローラの中には、ウォームリブート を検出でき、キャッシュデータを全部ディスクに書き出すものがあります。 ところがコールド再起動となるとカードがリセットされてしまい、カードの キャッシュメモリに上にあってディスクに書き戻される予定のデータが消えて しまうかもしれません。また、システムによっては、コールドリブートをする とメモリチェックや SCSI BIOS の処理化処理に長い時間が かかるという話もあります。これはウォームリブートを選ぶ十分な理由でしょ う。
`reserve=' 引数これは、 I/O ポート領域を検出させないために使います。 書式は以下の通りです:
機種によっては、特定領域にあるデバイスをデバイスドライバがチェックしな いようにしなければならないことがあります。これは設計のまずいハードウェ アのせいで、(どこかの イーサネットカードのように)起動中に 凍り付いてしまったり、間違って検出されてしまったり、 前の検出によって状態が変わってしまうことがあるからです。あるいは単に、 そのハードウェアをカーネルに初期化させたくないといった場合もあるかもし れません。
指定した範囲の I/O ポートは、領域内の I/O 空間を闇雲に探る前に
例えば、起動時に
reserve=0x300,32 blah=0x300 を与えると `blah' 用ドライバ以外の全てデバイスドライバは
普通の起動時引数と同じく、引数の数は 11 個までという制限があります。
したがって、
`vga=' 引数これは本当は起動時引数ではないことに注意してください。
これは LILO が解釈するオプションであって、他の起動時引数のようにカーネ
ルが解釈するわけではありません。しかしながら、この引数を使うのが大変広
まったので、ここで取り上げることにします。この引数はまた、 ついでながら、新しいカーネル (v2.1以降) はビデオモードを選ぶ機能をオプ ションとして持っています。これはカーネルの設定時に ビデオモード選択のサポート(Video mode selection support) として示 されます。したがって、この機能を使いたければ、このオプションを有効にす る必要があります。
次のページ 前のページ 目次へ |
[ |