Index: head/ja_JP.eucJP/books/handbook/boot/chapter.xml =================================================================== --- head/ja_JP.eucJP/books/handbook/boot/chapter.xml (revision 47892) +++ head/ja_JP.eucJP/books/handbook/boot/chapter.xml (revision 47893) @@ -1,1085 +1,1082 @@ FreeBSD の起動のプロセス この章では 起動 ブートストラップ (bootstrap) 計算機を起動しオペレーティングシステムをロードするプロセスは、 ブートストラッププロセス、 もしくは単に 起動 と呼ばれます。 FreeBSD の起動プロセスを使えば、 - システムをスタートするときに起きることを - かなり柔軟にカスタマイズすることができます。 - 同じ計算機にインストールされた - 別のオペレーティングシステムを選択することもできますし、 + システムをスタートするときに起きることをかなり柔軟にカスタマイズすることができます。 + 同じ計算機にインストールされた別のオペレーティングシステムを選択することもできますし、 同じオペレーティングシステムの違うバージョンを選択することも、 インストールされた別のカーネルを選択することさえできます。 この章では、指定できる設定オプションと FreeBSD の起動プロセスのカスタマイズ方法について詳しく述べます。 この章では FreeBSD カーネルがスタートし、デバイスを検出し、 &man.init.8; を起動するまでに起きることすべてを扱います。 どの最中のことだかはっきりしていない人のために補足すると、 テキストの色が明るい白から灰色に変わるまでに起きていることです。 この章を読むと、以下のことが分かります。 どのように FreeBSD のブートストラップシステムが構成され、 そしてそれらが互いにどう関係しているのか 起動プロセスを制御するために FreeBSD のブートストラップの各要素に付加できるオプション &man.device.hints.5; の基本的な記述方法 x86 限定 この章では Intel x86 システム上で動作する FreeBSD の起動プロセスだけを扱います。 起動時の問題 計算機の電源を入れ、オペレーティングシステムをスタートさせるのには、 おもしろいジレンマがあります。定義により、 計算機は、オペレーティングシステムが起動するまでは、 ディスクからプログラムを動かすことも含めて、 - 何をどうすればよいかまったく知りません。 - では、計算機はオペレーティングシステムなしに - ディスクからプログラムを実行することができず、 + 何をどうすればよいかまったく知りません。では、 + 計算機はオペレーティングシステムなしにディスクからプログラムを実行することができず、 オペレーティングシステムのプログラムがディスク上にあるのなら、 どうやってオペレーティングシステムを起動するのでしょうか? この問題はほらふき男爵の冒険 という本の中に書かれている問題ととてもよく似ています。 登場人物がマンホールの下に半分落っこちて、 靴紐 (ブートストラップ) をつかんで自分を引っぱり、持ち上げるのです。 計算機の黎明期には、ブートストラップ - という用語でオペレーティングシステムをロードする - 機構のことを指していたのですが、 + という用語でオペレーティングシステムをロードする機構のことを指していたのですが、 いまはこれを縮めて ブート (起動) と言います。 BIOS 基本入出力システム (Basic Input/Output System)BIOS x86 ハードウェアでは、基本入出力システム (Basic Input/Output System: BIOS) にオペレーティングシステムをロードする責任があります。 オペレーティングシステムをロードするために、 BIOS がハードディスク上のマスターブートレコード (Master Boot Record: MBR) を探します。 MBR はハードディスク上の特定の場所になければなりません。 BIOS には MBR をロードし起動するのに十分な知識があり、 オペレーティングシステムをロードするために必要な作業の残りは、 場合によっては BIOS の助けを得た上で MBR が実行できることを仮定しています。 マスターブートレコード (Master Boot Record: MBR) ブートマネージャ (Boot Manager) ブートローダ (Boot Loader) MBR 内部のコードは、 通常ブートマネージャと呼ばれます。 とりわけユーザとの対話がある場合にそう呼ばれます。 その場合は、通常もっと多くのブートマネージャのコードが、 ディスクの最初のトラック または OS のファイルシステム上におかれます (ブートマネージャはブートローダ と呼ばれることもありますが、 FreeBSD はこの言葉を起動のもっと後の段階に対して使います)。 よく使われるブートマネージャには、 boot0 (Boot Easy とも呼ばれる &os; 標準のブートマネージャ), Grub, GAGLILO 等があります (MBR 内に収まるのは boot0 だけです)。 ディスク上にインストールされているオペレーティングシステムが 1 つであれば、標準の PC MBR で十分です。 この MBR はディスク上の最初の起動可能な (アクティブな) スライスを探し、 そのスライスにあるコードを起動してオペレーティングシステムの残りをロードします。 デフォルトで &man.fdisk.8; がインストールする MBR は、このような MBR です。/boot/mbr を基にしています。 ディスク上にオペレーティングシステムを複数インストールしているなら、 別のブートマネージャ (複数のオペレーティングシステムの一覧を表示できて、 起動するオペレーティングシステムを選択できるようなもの) をインストールするとよいでしょう。 このようなブートマネージャの中から 2 つを次の節で説明します。 FreeBSD ブートストラップシステムの残りは 3 段階に分かれます。 第 1 ステージは MBR によって起動されるもので、 MBR は計算機を特定の状態にするために必要なことだけ知っていて、 第 2 ステージを起動します。 第 2 ステージでは、第 3 ステージを起動する前に、 もうちょっとやることができます。 第 3 ステージでオペレーティングシステムのロード作業を完了します。 起動作業がこれらの 3 段階に分かれているのは、 PC の規格がステージ 1 とステージ 2 で実行できるプログラムのサイズに制限を課しているからです。 これらの作業をつなぎ合わせることによって、 FreeBSD はより柔軟なローダ (loader) を提供しているのです。 カーネル (kernel) init その後カーネルが起動し、デバイスの検出と初期化を開始します。 そしてカーネルの起動が終わると、制御はユーザープロセスの - &man.init.8; へ移されます。&man.init.8; はまず - ディスクが利用可能であることを確かめ、 + &man.init.8; へ移されます。&man.init.8; + はまずディスクが利用可能であることを確かめ、 ファイルシステムのマウント、 ネットワークで利用するネットワークカードのセットアップ、 そして通常 FreeBSD システムで初期時に起動されるすべてのプロセスの起動、 といったユーザーレベルでのリソース (資源) 設定を行ないます。 ブートマネージャと起動ステージ ブートマネージャ ブートマネージャ - マスターブートレコード (MBR) + マスターブートレコード + (MBR) MBR やブートマネージャのコードは起動プロセスの第 0 ステージと呼ばれることがあります。 この節では前述の 2 つのブートマネージャ、 boot0LILO について説明します。 - <application>boot0</application> ブートマネージャ + <application>boot0</application> + ブートマネージャ + FreeBSD のインストーラや &man.boot0cfg.8; がデフォルトでインストールする MBR は、/boot/boot0 を基にしています (boot0 は非常に単純なプログラムです。 MBR にあるプログラムは、 - スライステーブルと末尾の識別子 0x55AA があるため、 - 446 バイトの大きさでなければならないという制限があるためです)。 + スライステーブルと末尾の識別子 0x55AA + があるため、446 + バイトの大きさでなければならないという制限があるためです)。 ハードディスクに boot0 と複数のオペレーティングシステムをインストールした場合、 起動時に以下のような画面が出るでしょう。 <filename>boot0</filename> のスクリーンショット F1 DOS F2 FreeBSD F3 Linux F4 ?? F5 Drive 1 Default: F2 他のオペレーティングシステム、特に &windows; は、 既存の MBR を自らの MBR で上書きしてしまうことで知られています。 もしそうなってしまったら、 もしくは既存の MBR を FreeBSD の MBR で置き換えたいのなら、 次のコマンドを使ってください。 &prompt.root; fdisk -B -b /boot/boot0 device device は起動するデバイス名で、 - たとえば 1 番目の IDE ディスクは - ad0、 + たとえば 1 番目の IDE ディスクは ad0、 2 番目の IDE コントローラに接続されている 1 番目の IDE ディスクは - ad2、 - 1 番目の SCSI ディスクは - da0 - などとなります。 + ad2、1 番目の SCSI ディスクは + da0 などとなります。 MBR の設定をカスタマイズしたい場合は &man.boot0cfg.8; を使ってください。 - LILO ブートマネージャ + + LILO ブートマネージャ このブートマネージャをインストールして FreeBSD を起動するようにするには、まず Linux を起動して /etc/lilo.conf - コンフィグレーションファイルに以下を追加してください。 + コンフィグレーションファイルに以下を追加してください。 + other=/dev/hdXY table=/dev/hdX loader=/boot/chain.b label=FreeBSD 上記において、FreeBSD のプライマリパーティションとドライブを Linux の識別子を使って指定してください。 X を Linux のドライブ文字に、また Y を Linux のプライマリパーティション番号に置き換えてください。 SCSI ドライブを使っているのであれば、 /dev/hd/dev/sd のように読み替えてください。 同じドライブ上に両方のオペレーティングシステムが置いてあるなら、 行は不要です。 これで /sbin/lilo -v を実行するとシステムに新しい変更が反映されます。 画面のメッセージを見て確認しておきましょう。 - 起動ステージ 1 <filename>/boot/boot1</filename> と起動ステージ 2 - <filename>/boot/boot2</filename> + 起動ステージ 1 <filename>/boot/boot1</filename> + と起動ステージ 2 <filename>/boot/boot2</filename> - 概念上、第 1 ステージと第 2 ステージは - ハードディスクの同じ領域上の同一のプログラムの部分部分です。 + 概念上、第 1 ステージと第 2 + ステージはハードディスクの同じ領域上の同一のプログラムの部分部分です。 スペースの制約のため 2 つに分割されていますが、 いつも一緒にインストールされます。 インストーラまたは bsdlabel は、両者を 1 つにまとめたファイル /boot/boot をコピーします (下記参照)。 第 1 ステージと第 2 ステージは、ファイルシステムの外部、 起動スライスの最初のトラックに置かれ、 先頭が最初のセクタにきます。 boot0 またはその他のブートマネージャは、 起動プロセスを続けるために必要なプログラムがそこにあると想定しています。 使用されるセクタの数は、/boot/boot の大きさから簡単に分かります。 boot1 は 512 バイトの大きさでなければならないという制限があるので、 非常に単純なプログラムです。 このプログラムは boot2 を検索し、 実行するため、そのスライスの情報を保持する FreeBSD の BSD ラベル に関する最低限の情報だけを持っています。 boot2 はもう少し高機能です。 これは FreeBSD のファイルシステム上でファイルを見つける能力を持ち、 実行するカーネルやローダを指定するための簡単なインタフェースを提供します。 ローダ (loader) はさらに高機能なもので、 使いやすく簡単な起動設定が行なえる手段を提供します。 boot2 は通常それを起動します。 以前の boot2 には、 カーネルを直接起動する機能しかありませんでした。 <filename>boot2</filename> のスクリーンショット >> FreeBSD/i386 BOOT Default: 0:ad(0,a)/boot/loader boot: もし仮にインストールされた boot1boot2 を変更したいのであれば、 &man.bsdlabel.8; を使ってください。 &prompt.root; bsdlabel -B diskslice diskslice は起動するディスクとスライスで、 たとえば最初の IDE ディスクの 1 番目のスライスは ad0s1 となります。 Dangerously Dedicated Mode &man.bsdlabel.8; を使うとき、 ad0 のようにディスク名だけを指定すると、 スライスを持たない危険な専用ディスクを作成してしまいます。 これはまず間違いなく、あなたがやりたいことではないでしょうから、 必ず Return キーを押す前に &man.bsdlabel.8; コマンドを二重にチェックしてください。 - - 起動ステージ 3 <filename>/boot/loader</filename> + + 起動ステージ 3 <filename>/boot/loader</filename> - ブートローダ (boot-loader) + ブートローダ (boot-loader) - ローダは三段階の起動プロセスの最終段階です。 - ローダは通常、ファイルシステム上の - /boot/loader - として存在しています。 + ローダは三段階の起動プロセスの最終段階です。 + ローダは通常、ファイルシステム上の + /boot/loader + として存在しています。 - ローダは、よりさまざまなコマンド群をサポートした - 強力なインタプリタによって提供される簡易組み込みコマンド群を利用することで、 - ユーザが利用しやすい設定手段となるように設計されています。 + ローダは、 + よりさまざまなコマンド群をサポートした強力なインタプリタによって提供される簡易組み込みコマンド群を利用することで、 + ユーザが利用しやすい設定手段となるように設計されています。 - - ローダプログラムの処理の流れ + + ローダプログラムの処理の流れ - ローダは初期化の際にコンソールとディスクの検出を行ない、 - どのディスクから起動しているかを調べます。 - そして必要な変数を設定してからインタプリタを起動し、 - スクリプトからコマンドを送ったり手でコマンドを入力したりできます。 + ローダは初期化の際にコンソールとディスクの検出を行ない、 + どのディスクから起動しているかを調べます。 + そして必要な変数を設定してからインタプリタを起動し、 + スクリプトからコマンドを送ったり手でコマンドを入力したりできます。 - ローダ - ローダの設定 + ローダ + ローダの設定 - ローダは次に - /boot/loader.rc - を読み込み、通常、変数の標準値を定義した - /boot/defaults/loader.conf - と、そのマシンにローカルな変数を定義した - /boot/loader.conf - を読み込みます。 - loader.rc - はそれらの変数にもとづき、 - 選択されたモジュールとカーネルをロードします。 + ローダは次に /boot/loader.rc + を読み込み、通常、変数の標準値を定義した + /boot/defaults/loader.conf + と、そのマシンにローカルな変数を定義した + /boot/loader.conf + を読み込みます。 + loader.rc はそれらの変数にもとづき、 + 選択されたモジュールとカーネルをロードします。 - ローダは最後に、標準設定で 10 秒のキー入力待ち時間を用意し、 - 入力がなければカーネルを起動します。 - 入力があった場合、簡易コマンド群が使えるプロンプトが表示され、 - ユーザは変数を調整したり、 - すべてのモジュールをアンロードしたり、 - モジュールをロードしたりすることができます。 - その後、最終的な起動や再起動へ移行します。 + ローダは最後に、標準設定で 10 秒のキー入力待ち時間を用意し、 + 入力がなければカーネルを起動します。 + 入力があった場合、簡易コマンド群が使えるプロンプトが表示され、 + ユーザは変数を調整したり、 + すべてのモジュールをアンロードしたり、 + モジュールをロードしたりすることができます。 + その後、最終的な起動や再起動へ移行します。 + - + + ローダの組み込みコマンド - - ローダの組み込みコマンド + もっともよく使われるローダのコマンドを以下に示します。 + 利用可能なコマンドをすべて知りたい場合、 + &man.loader.8; を参照してください。 - もっともよく使われるローダのコマンドを以下に示します。 - 利用可能なコマンドをすべて知りたい場合、 - &man.loader.8; を参照してください。 + + + autoboot seconds - - - autoboot seconds + + seconds + で与えられた時間内に入力がなければ、 + カーネルの起動へと進みます。 + カウントダウンを表示し、標準設定では 10 秒間です。 + + - - seconds - で与えられた時間内に入力がなければ、 - カーネルの起動へと進みます。 - カウントダウンを表示し、標準設定では 10 秒間です。 - - + + boot + -options + kernelname - - boot - -options - kernelname + + すぐにカーネルの起動へ進みます。 + オプション、カーネル名が指定されている場合は、 + それらが使われます。 + unload コマンドを実行後、 + カーネル名をコマンドラインから指定することができます。 + unload を実行しないと、 + 一度読み込まれたカーネルが使われます。 + + - - すぐにカーネルの起動へ進みます。 - オプション、カーネル名が指定されている場合は、 - それらが使われます。 - unload コマンドを実行後、 - カーネル名をコマンドラインから指定することができます。 - unload を実行しないと、 - 一度読み込まれたカーネルが使われます。 - - + + boot-conf - - boot-conf + + すべてのモジュールの設定を、 + 起動時と同じように変数にもとづいて自動的に行ないます。 + このコマンドは、まず unload を行なって、 + 変数—普通 kernel + など—を変更した場合にのみ有効に働きます。 + + - - すべてのモジュールの設定を、 - 起動時と同じように変数にもとづいて自動的に行ないます。 - このコマンドは、まず unload を行なって、 - 変数—普通 kernel - など—を変更した場合にのみ有効に働きます。 - - + + help + topic - - help - topic + + /boot/loader.help + を読み込み、ヘルプメッセージを表示します。 + topic に + index が指定された場合、利用可能な + topic を表示します。 + + - - /boot/loader.help - を読み込み、ヘルプメッセージを表示します。 - topic に - index が指定された場合、利用可能な - topic を表示します。 - - + + include filename + … - - include filename - … + + 指定されたファイル名のファイルを処理します。 + ローダはファイルを読み込み、行単位で解釈します。 + エラーが発生した場合、 + include コマンドの実行はその時点で停止します。 + + - - 指定されたファイル名のファイルを処理します。 - ローダはファイルを読み込み、行単位で解釈します。 - エラーが発生した場合、 - include コマンドの実行はその時点で停止します。 - - + + load -t type + filename - - load -t - type - filename + + 指定されたファイル名のカーネル、 + カーネルモジュール、あるいは + type に指定された種類のファイルをロードします。 + ファイル名以降に指定された引数はファイルへと渡されます。 + + - - 指定されたファイル名のカーネル、 - カーネルモジュール、あるいは - type に指定された種類のファイルをロードします。 - ファイル名以降に指定された引数はファイルへと渡されます。 - - + + ls -l + path - - ls -l - path + + 指定された path + にあるファイルを表示します。 + path + が指定されていなければ、ルートディレクトリを表示します。 + + が指定されていればファイルサイズも表示されます。 + + - - 指定された path - にあるファイルを表示します。 - path - が指定されていなければ、ルートディレクトリを表示します。 - - が指定されていればファイルサイズも表示されます。 - - + + lsdev + -v - - lsdev -v + + モジュールがロード可能なすべてのデバイスを表示します。 + もし が指定されていれば、 + より詳細な出力がされます。 + + - - モジュールがロード可能なすべてのデバイスを表示します。 - もし が指定されていれば、 - より詳細な出力がされます。 - - + + lsmod + -v - - lsmod -v + + ロード済みのモジュールを表示します。 + が指定されていれば、 + より詳細な内容が出力されます。 + + - - ロード済みのモジュールを表示します。 - が指定されていれば、 - より詳細な内容が出力されます。 - - + + more filename - - more filename + + LINES + 行を表示するごとに停止しながら指定されたファイルを表示します。 + + - - LINES - 行を表示するごとに停止しながら指定されたファイルを表示します。 - - + + reboot - - reboot + + すぐにシステムを再起動します。 + + - - すぐにシステムを再起動します。 - - + + set variable + set + variable=value - - set variable - set - variable=value + + ローダの環境変数を設定します。 + + - - ローダの環境変数を設定します。 - - + + unload - - unload + + すべてのロード済みモジュールを削除します。 + + + + - - すべてのロード済みモジュールを削除します。 - - - - + + ローダの使用例 - - ローダの使用例 + 次にあげるのは、ローダの実践的な使用例です。 - 次にあげるのは、ローダの実践的な使用例です。 + + + 普段使っているカーネルをシングルユーザモードシングルユーザモードで起動します。 - - - 普段使っているカーネルをシングルユーザモードシングルユーザモードで起動します。 + boot -s + - boot -s - + + 普段使っているカーネルとモジュールをアンロードし、 + 古い (もしくは別の) カーネルをロードします。 - - 普段使っているカーネルとモジュールをアンロードし、 - 古い (もしくは別の) カーネルをロードします。 - - unload + unload load kernel.old - kernel.GENERIC とすると、 - インストールディスクに入っていた - generic カーネルを指定することができます。 - また、直前にインストールされていたカーネル (たとえば、 - カーネルを自分で設定したり、 - アップグレードしたりした場合) を指定するには - kernel.oldkernel.old とします。 + kernel.GENERIC とすると、 + インストールディスクに入っていた + generic カーネルを指定することができます。 + また、直前にインストールされていたカーネル (たとえば、 + カーネルを自分で設定したり、 + アップグレードしたりした場合) を指定するには + kernel.oldkernel.old とします。 - - 普段のカーネルで使っているモジュールを - 指定したカーネルでロードする場合は、下のようにします。 + + 普段のカーネルで使っているモジュールを + 指定したカーネルでロードする場合は、下のようにします。 - unload + unload set kernel="kernel.old" boot-conf - + - - カーネルの設定スクリプト (通常、 - カーネル起動時に設定される内容を自動化するスクリプト) - をロードします。 + + カーネルの設定スクリプト (通常、 + カーネル起動時に設定される内容を自動化するスクリプト) + をロードします。 - load -t userconfig_script /boot/kernel.conf - - - + load -t userconfig_script /boot/kernel.conf + + + 起動時のスプラッシュスクリーン Joseph J. Barbish 寄稿: スプラッシュスクリーンは、オリジナルのブートメッセージに比べ、 ビジュアル的により魅力的な画面を提供します。 この画面は、コンソールログインプロンプトまたは X ディスプレイマネージャのログインプロンプトが出るまで表示されます。 &os; には、2 つの基本環境があります。 ひとつは、レガシーなバーチャルコンソールコマンドライン環境です。 システムの起動が終わったら、 コンソールにログインプロンプトが表示されます。 2 つ目の環境は、X11 デスクトップのグラフィカル環境です。X11 と GNOME, KDE または - XFce のような デスクトップ環境 - のどれかをインストールすると、 - startx コマンドで X11 - デスクトップが起動します。 + XFce のような + デスクトップ環境 + のどれかをインストールすると、startx + コマンドで X11 デスクトップが起動します。 ユーザによっては、 伝統的なテキストベースのログインプロンプトより、 X11 グラフィカルログインスクリーンが好まれます。 &xorg; の XDM, GNOMEgdm および KDEkdm のような (そして Ports Collection からインストール可能な他の) ディスプレイマネージャは、 基本的にコンソールにログインプロンプトを表示するかわりに、 グラフィカルなログインスクリーンを提供します。 ログイン後、グラフィカルなデスクトップをユーザに提供します。 コマンドラインの環境では、 スプラッシュスクリーンは、 ブート時の検出結果のメッセージや、 タスクのスタートアップメッセージを、 ログインプロンプトが表示されるまで隠します。 X11 の環境では、ユーザは、ビジュアル的によりきれいな (µsoft; &windows; または、非 unix 型のシステム) のスタートアップに似たような、スタートアップを経験します。 スプラッシュスクリーン機能 スプラッシュスクリーン機能は、 256 色のビットマップ (.bmp) または ZSoft PCX (.pcx) ファイルにのみ対応しています。 さらに、標準の VGA アダプタで動かすには、 スプラッシュイメージは 320x200 ピクセル以下の解像度である必要があります。 (最大解像度 1024x768 ピクセルまでの) もう少し大きなイメージを使いたい場合には、&os; に VESA サポートを追加してください。 起動時に VESA モジュールを読み込むか、 カーネルコンフィグレーションファイルに VESA オプションを追加して、 カスタムカーネルを構築 ( を参照) することで有効にできます。 + linkend="kernelconfig"/> を参照) することで有効にできます。 VESA のサポートにより、 フルスクリーンでスプラッシュスクリーンを表示できるようになります。 スプラッシュスクリーンは、起動プロセスの間、 画面に表示されますが、 キーボードから何かのキーを押すことで、 いつでもやめることができます。 スプラッシュスクリーンは、 X11 の外でのデフォルトでもあります。 一定期間使われないと、 画面がスプラッシュスクリーンに変わり、 イメージの強さが、明るくから暗くなるように変化し、 それが繰り返されます。 このデフォルトのスプラッシュスクリーン (スクリーンセーバ) の振る舞いは、 /etc/rc.confsaver= 行を追加することで変更できます。 saver= オプションは、 いくつかのビルトインのスクリーンセーバが用意されていて、 選ぶことが出来ます。 完全な一覧は、&man.splash.4; マニュアルページで見ることができます。 デフォルトのスクリーンセーバーは warp と呼ばれるものです。 /etc/rc.conf で指定する saver= オプションは、 は仮想コンソールにのみ 適用されるということに気をつけてください。 X11 ディスプレイマネージャには影響しません。 スプラッシュスクリーンを有効に設定していても、起動時には、 ブートオプションメニューや、 タイムウェイトカウントダウンプロンプトなどのブートローダメッセージは表示されます。 http://artwork.freebsdgr.org のギャラリから、 サンプルのスプラッシュスクリーンファイルをダウンロードできます。 sysutils/bsd-splash-changer port をインストールすると、 起動時にスプラッシュイメージのコレクションからランダムに一枚が選択されます。 スプラッシュスクリーン機能を有効にする スプラッシュスクリーン (.bmp) または (.pcx) ファイルは、 ルートパーティション、たとえば /boot ディレクトリに置く必要があります。 デフォルトのブートディスプレイの解像度 (256 色、320x200 ピクセル以下) の場合には、 以下を含むように /boot/loader.conf を編集してください。 splash_bmp_load="YES" bitmap_load="YES" bitmap_name="/boot/splash.bmp" 1024x768 ピクセルまでの、より大きなビデオ解像度の場合には、 以下を含むように /boot/loader.conf を編集してください。 vesa_load="YES" splash_bmp_load="YES" bitmap_load="YES" bitmap_name="/boot/splash.bmp" 上の例では、スプラッシュスクリーンに /boot/splash.bmp を使うことを想定しています。 PCX ファイルを使う場合は、 以下を使ってください。 また、解像度によっては vesa_load="YES" 行を追加してください。 splash_pcx_load="YES" bitmap_load="YES" bitmap_name="/boot/splash.pcx" ファイル名は上記のような splash に限られているわけではありません。 BMP または PCX 形式であれば、 splash_640x400.bmpblue_wave.pcx といった名前でも構いません。 他に興味を持ちそうな loader.conf のオプションを以下で紹介します。 beastie_disable="YES" カウントダウンのプロンプトを除き、 ブートオプションメニューを表示しません。 ブートオプションメニューの画面は利用できませんが、 タイムウェイトカウントダウンプロンプトが表示されている時に、 オプションを選択することで対応するブートオプションを設定できます。 loader_logo="beastie" このオプションは、 これまでのリリースのようにカラーの beastie ロゴと共に、 ブートオプションメニューの右側に表示されている単語 (デフォルトでは &os;) を置き換えます。 より詳細な情報については、&man.splash.4;, &man.loader.conf.5; および &man.vga.4; マニュアルページをご覧ください。 カーネル起動時の応答 カーネル (kernel) 起動時の応答 カーネルがローダ (通常は) かboot2 (ローダを迂回して) によってロードされると、 起動フラグを調べます。 もし起動フラグがあれば、それに応じて動作を調整します。 カーネル起動フラグ カーネル (kernel) 起動フラグ 良く使われる起動フラグは次のとおりです。 カーネル初期化中に、 ルートファイルシステムとしてマウントするデバイスを尋ねます。 CDROM から起動します。 起動時にカーネルコンフィグレーションを行なう UserConfig を実行します。 シングルユーザモードで起動します。 カーネル起動時により詳細な情報を表示します。 起動フラグはこの他にもあります。 それらについては &man.boot.8; を参照してください。 - + + Device Hints TomRhodes寄稿: - - - device.hints 起動プロセスの間に &man.loader.8; は &man.device.hints.5; を読み込みます。 このファイルにはカーネル起動の環境変数が格納されており、 これらの環境変数は device hints と呼ばれることがあります。device hints はデバイスを設定するためにデバイスドライバが使用します。 - device hints は ステージ 3 ブートローダ - でも設定できます。変数は + device hints は ステージ 3 + ブートローダ でも設定できます。変数は set コマンドを用いて追加したり、 unset コマンドを用いて削除できます。 show コマンドを用いて一覧を見ることもできます。 /boot/device.hints に設定されている変数は このときに上書きすることができます。 ローダで設定した device hints の効果は一時的なものであるため、 次回起動するときには無効になります。 システムが起動すると、&man.kenv.1; コマンドでカーネル環境変数をダンプすることができます。 /boot/device.hints は 1 行につき一つの変数を設定でき、行頭の # はその行がコメントであることを示しています。 書式は次の通りです。 hint.driver.unit.keyword="value" ステージ 3 ブートローダ で設定するときの書式は次の通りです。 + set hint.driver.unit.keyword=value driver はデバイスドライバの名前、 unit はデバイスドライバのユニット番号、 keyword はヒントキーワードです。 キーワードは次の設定を指定します: at: デバイスがどのバスに接続されているか指定します。 - port: - 使用する I/O + port: 使用する I/O ポートの開始アドレスを指定します。 - irq: - 使用する IRQ を指定します。 + irq: 使用する IRQ を指定します。 - drq: - 使用する DMA チャネルを指定します。 + drq: 使用する + DMA チャネルを指定します。 maddr: 使用する物理メモリアドレスを指定します。 flags: デバイスに対してさまざまなフラグを設定します。 disabled: 1 が設定されていると、そのデバイスは無効になります。 デバイスドライバはこのリスト以外の変数を設定できるかもしれませんし、 このリスト以外の変数を必要とするかもしれません。 したがって、デバイスドライバのマニュアルを読むことをおすすめします。 より多くの情報を知りたければ、&man.device.hints.5;, &man.kenv.1;, &man.loader.conf.5;, &man.loader.8; などのマニュアルを参照してください。 init: プロセス制御の初期化 init カーネルの起動が完了すると、&man.init.8; というユーザプロセスに制御が移されます。 これは /sbin/init、 もしくは loaderinit_path 変数で指定される場所にあります。 自動再起動 (automatic reboot)の動作 自動再起動では、 システム上で利用できるファイルシステムの一慣性を確認します。 もしそれに問題があって &man.fsck.8; がその不一致を修復できなければ、管理者に直接対処させるため - &man.init.8; はシステムをシングルユーザモードへと移行させます。 + &man.init.8; はシステムを + シングルユーザモード + へと移行させます。 シングルユーザモード シングルユーザモード コンソール (console) このモードには、 自動再起動の処理中か、 ユーザが起動時に オプションを指定した場合、 あるいは loaderboot_single 変数を設定することによって移行します。 また、 マルチユーザモードから 再起動オプション () や停止 (halt) オプション () なしで &man.shutdown.8; を呼び出すとこのモードに移行します。 /etc/ttys でシステムコンソール consoleinsecure に設定されている場合、 システムはシングルユーザモードに移行する前に - root のパスワードを入力するように求めます。 + root + のパスワードを入力するように求めます。 - <filename>/etc/ttys</filename> の insecure コンソール + <filename>/etc/ttys</filename> の + insecure コンソール # name getty type status comments # # If console is marked "insecure", then init will ask for the root password # when going to single-user mode. # # 訳) console に "insecure" という印をつけると、シングルユーザモードへ移行する # 際に init が root のパスワードを要求するようになります。 # console none unknown off insecure insecure コンソールとは、 あなた自身、コンソールが物理的に安全でないと考えていて、 root - のパスワードを知る人だけがシングルユーザモードを - 使えるようにしたいという意味であり、 + のパスワードを知る人だけがシングルユーザモードを使えるようにしたいという意味であり、 コンソールを安全でない状態で使いたいという意味ではありません。 そのため、安全性を求めるならば secure でなく insecure を選んでください。 マルチユーザモード マルチユーザモード &man.init.8; がファイルシステムが正常であると判断するか、 - ユーザがシングルユーザモードを終了すると、 + ユーザがシングルユーザモードを終了すると、 システムはマルチユーザモードへ移行し、 リソースの設定を始めます。 リソース設定 (rc) + rc ファイル群 - rc ファイル群 - リソース設定システムはデフォルト設定を /etc/defaults/rc.conf から、 そのシステム独自の細かな設定を /etc/rc.conf から読み込みます。 そして /etc/fstab に記述されるシステムファイルシステムをマウントし、 ネットワークサービスの開始、 さまざまなシステムデーモンの開始、 そして最後に、ローカルにインストールされた package の起動スクリプトの実行へと進みます。 リソース設定システムに関する参考資料は、&man.rc.8; にあります。 これはスクリプトそのものを調べることと同じくらい優れたものです。 シャットダウン動作 shutdown &man.shutdown.8; を用いてシステムを意図的にシャットダウンした場合、 &man.init.8; は /etc/rc.shutdown というスクリプトの実行を試みます。 そして、すべてのプロセスへ TERM シグナルを送り、続いてうまく終了できなかったプロセスへ KILL シグナルを送ります。 電源管理機能を持ったシステムで稼働している FreeBSD では shutdown -p now コマンドによって、 直ちに電源を落とすことができます。FreeBSD を再起動するには、 shutdown -r now を実行するだけです。 - &man.shutdown.8; を実行するには、root + &man.shutdown.8; を実行するには、 + root であるか、operator グループのメンバでなければなりません。&man.halt.8; や &man.reboot.8; コマンドを利用することもできますが、 より多くの情報を知るために、それらと &man.shutdown.8; のマニュアルページを参照してください。 電源管理機能には &man.acpi.4; がカーネルに組み込まれているか、 モジュールが読み込まれていることが必要です。