blob: 166dcda122131560d9e987d1c0043db4f1d04267 (
plain) (
tree)
|
|
<?xml version="1.0" encoding="euc-jp"?>
<!--
The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project
Original revision: r53816
$FreeBSD$
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
xml:id="boot">
<title>&os; の起動のプロセス</title>
<sect1 xml:id="boot-synopsis">
<title>この章では</title>
<indexterm><primary>起動</primary></indexterm>
<indexterm><primary>ブートストラップ (bootstrap)</primary></indexterm>
<para>計算機を起動しオペレーティングシステムをロードするプロセスは、
<quote>ブートストラッププロセス</quote>
もしくは <quote>ブート</quote> と呼ばれます。
&os; の起動プロセスを使えば、
システムをスタートするときに起きることをかなり柔軟にカスタマイズできます。
同じ計算機にインストールされた別のオペレーティングシステムを選択することもできますし、
同じオペレーティングシステムの異なるバージョンを選択することも、
インストールされた別のカーネルを選択することさえできます。</para>
<para>この章では、指定できる設定オプションついて詳しく説明します。
&os; カーネルがスタートし、デバイスを検出し、
&man.init.8; を起動するまでに起きることすべてを含む
&os; の起動プロセスのカスタマイズ方法について説明します。
これは、起動メッセージのテキストの色が、
明るい白から灰色に変わるまでに起きています。</para>
<para>この章を読むと、以下のことが分かります。</para>
<itemizedlist>
<listitem>
<para>&os;
のブートストラップシステムの構成およびそれらが互いにどう関係しているのか</para>
</listitem>
<listitem>
<para>起動プロセスを制御するために &os;
のブートストラップの各要素に付加できるオプション</para>
</listitem>
<listitem>
<para>ブートスプラッシュスクリーンの設定方法</para>
</listitem>
<listitem>
<para>device hints の基本的な記述方法</para>
</listitem>
<listitem>
<para>シングルユーザもしくはマルチユーザモードでの起動方法、
および &os; システムのシャットダウンの方法</para>
</listitem>
</itemizedlist>
<note>
<para>この章では Intel x86 および amd64 システム上で動作する &os;
の起動プロセスだけを扱います。</para>
</note>
</sect1>
<sect1 xml:id="boot-introduction">
<title>&os; の起動プロセス</title>
<para>計算機の電源を入れ、オペレーティングシステムをスタートさせるのには、
おもしろいジレンマがあります。定義により、
計算機は、オペレーティングシステムが起動するまでは、
ディスクからプログラムを動かすことも含めて、
何をどうすればよいかまったく知りません。
計算機はオペレーティングシステムなしにディスクからプログラムを実行することができず、
オペレーティングシステムのプログラムがディスク上にあるのなら、
どうやってオペレーティングシステムを起動するのでしょうか?</para>
<para>この問題は<citetitle>ほらふき男爵の冒険</citetitle>
という本の中に書かれている問題ととてもよく似ています。
登場人物がマンホールの下に半分落っこちて、
靴紐 (ブートストラップ) をつかんで自分を引っぱり、持ち上げるのです。
計算機の黎明期には、<firstterm>ブートストラップ</firstterm>
という用語でオペレーティングシステムをロードする機構のことを指していました。
いまはこれを縮めて <quote>ブート (起動)</quote> と言います。</para>
<indexterm><primary><acronym>BIOS</acronym></primary></indexterm>
<indexterm><primary>基本入出力システム (Basic Input/Output
System)</primary><see><acronym>BIOS</acronym></see></indexterm>
<para>x86 ハードウェアでは、基本入出力システム
(Basic Input/Output System: <acronym>BIOS</acronym>)
にオペレーティングシステムをロードする責任があります。
<acronym>BIOS</acronym> はハードディスク上のマスターブートレコード
(Master Boot Record: <acronym>MBR</acronym>) を探します。
<acronym>MBR</acronym>
はハードディスク上の特定の場所になければなりません。
<acronym>BIOS</acronym> には <acronym>MBR</acronym>
をロードし起動するのに十分な知識があり、
オペレーティングシステムをロードするために必要な作業の残りは、
場合によっては <acronym>BIOS</acronym> の助けを得た上で
<acronym>MBR</acronym> が実行できることを仮定しています。</para>
<note>
<para>&os; は古い標準の <acronym>MBR</acronym>、
または新しい GUID Partition Table (<acronym>GPT</acronym>)
から起動できます。
<acronym>GPT</acronym> パーティションは、Unified
Extensible Firmware Interface (<acronym>UEFI</acronym>)
に対応したコンピュータで良く用いられます。
しかしながら、&os; はレガシーな <acronym>BIOS</acronym>
にのみに対応したコンピュータからも、&man.gptboot.8; により、
<acronym>GPT</acronym> パーティションから起動できます。
<acronym>UEFI</acronym> からの直接の起動への対応は進行中です。</para>
</note>
<indexterm><primary>マスターブートレコード (Master Boot Record:
<acronym>MBR</acronym>)</primary></indexterm>
<indexterm><primary>ブートマネージャ
(Boot Manager)</primary></indexterm>
<indexterm><primary>ブートローダ
(Boot Loader)</primary></indexterm>
<para><acronym>MBR</acronym> 内部のコードは、
一般的に<emphasis>ブートマネージャ</emphasis>と呼ばれます。
とりわけユーザとの対話がある場合にそう呼ばれます。
通常ブートマネージャのもっと多くのコードが、
ディスクの最初のトラック、またはファイルシステム上におかれます。
ブートマネージャの例としては、<application>Boot Easy</application>
とも呼ばれる &os; 標準のブートマネージャの
<application>boot0</application>、
多くの &linux; ディストリビューションが採用している
<application>Grub</application> 等があります。</para>
<para>ディスク上にインストールされているオペレーティングシステムが
1 つの時は、<acronym>MBR</acronym> はディスク上の最初の起動可能な
(アクティブな) スライスを探し、
そのスライスにあるコードを起動してオペレーティングシステムの残りをロードします。
ディスク上に複数のオペレーティングシステムが存在しているのなら、
複数のオペレーティングシステムの一覧を表示できて、
起動するオペレーティングシステムを選択できるような、
別のブートマネージャをインストールすることもできます。</para>
<para>&os; のブートストラップシステムの残りは 3 段階に分かれます。
第 1 ステージは、
計算機を特定の状態にするために必要なことだけを知っていて、
第 2 ステージを起動します。
第 2 ステージでは、第 3 ステージを起動する前に、
もう少しできることがあります。
第 3 ステージでオペレーティングシステムのロード作業を完了します。
起動作業が 3 段階に分かれているのは、
<acronym>MBR</acronym> がステージ 1 とステージ 2
で実行できるプログラムのサイズに制限を課しているからです。
これらの作業をつなぎ合わせることによって、
&os; はより柔軟なローダ (loader) を提供しているのです。</para>
<indexterm><primary>カーネル (kernel)</primary></indexterm>
<indexterm><primary>&man.init.8;</primary></indexterm>
<para>その後カーネルが起動し、デバイスの検出と初期化を開始します。
そしてカーネルの起動が終わると、制御はユーザープロセスの
&man.init.8; へ移されます。&man.init.8;
はディスクが利用可能であることを確認し、
ファイルシステムのマウント、
ネットワークで利用するネットワークカードのセットアップ、
そしてブート時に起動されるように設定されたプロセスの起動、
といったユーザーレベルでのリソース (資源) 設定を行ないます。</para>
<para>この章では、これらのステージについてより詳細に、また、&os;
ブートプロセスにおける対話的な設定方法について説明します。</para>
<sect2 xml:id="boot-boot0">
<title>ブートマネージャ</title>
<indexterm><primary>ブートマネージャ</primary></indexterm>
<indexterm><primary>マスターブートレコード
(<acronym>MBR</acronym>)</primary></indexterm>
<para><acronym>MBR</acronym>
のブートマネージャのコードは起動プロセスの<emphasis>第
0 ステージ</emphasis>と呼ばれることがあります。
デフォルトでは、&os; は <application>boot0</application>
を使います。</para>
<para>&os; のインストーラがインストールする <acronym>MBR</acronym> は、
<filename>/boot/boot0</filename> を基にしています。
<application>boot0</application> のサイズと機能は、
スライステーブルおよび <acronym>MBR</acronym>
末尾の識別子 <literal>0x55AA</literal> のため、
446 バイトの大きさに制限されます。
もし、<application>boot0</application>
と複数のオペレーティングシステムをインストールした場合、
起動時に以下のようなメッセージが表示されます。</para>
<example xml:id="boot-boot0-example">
<title><filename>boot0</filename> のスクリーンショット</title>
<screen>F1 Win
F2 FreeBSD
Default: F2</screen>
</example>
<para>他のオペレーティングシステムは、
&os; の後にインストールを行うと、既存の <acronym>MBR</acronym>
を上書きしてしまいます。
もしそうなってしまったら、
もしくは既存の <acronym>MBR</acronym> を &os; の
<acronym>MBR</acronym> で置き換えるには、
次のコマンドを使ってください。</para>
<screen>&prompt.root; <userinput>fdisk -B -b /boot/boot0 <replaceable>device</replaceable></userinput></screen>
<para><replaceable>device</replaceable> は起動するデバイス名で、
たとえば 1 番目の <acronym>IDE</acronym> ディスクは
<filename>ad0</filename>、2 番目の <acronym>IDE</acronym>
コントローラに接続されている 1 番目の <acronym>IDE</acronym>
ディスクは <filename>ad2</filename>、
1 番目の <acronym>SCSI</acronym> ディスクは
<filename>da0</filename>
などとなります。
<acronym>MBR</acronym> の設定をカスタマイズしたい場合は、
&man.boot0cfg.8; を参照してください。</para>
</sect2>
<sect2 xml:id="boot-boot1">
<title>起動ステージ 1 と起動ステージ 2</title>
<para>概念上、第 1 ステージと第 2
ステージはハードディスクの同じ領域上の同一のプログラムの部分部分です。
スペースの制約のため 2 つに分割されていますが、
いつも一緒にインストールされます。
&os; のインストーラまたは <command>bsdlabel</command> は、
両者を 1 つにまとめた
<filename>/boot/boot</filename> をコピーします。</para>
<para>これらの 2 つのステージは、ファイルシステムの外部、
起動スライスの最初のトラックに置かれ、
先頭が最初のセクタにきます。
<application>boot0</application> またはその他のブートマネージャは、
起動プロセスを続けるために必要なプログラムがそこにあると想定しています。</para>
<para>最初のステージの <filename>boot1</filename> は、
512 バイトの大きさでなければならないという制限があるので、
非常に単純なプログラムです。
このプログラムは <filename>boot2</filename>
を検索して実行するため、そのスライスの情報を保持する &os;
の <firstterm>BSD ラベル</firstterm>
に関する最低限の情報だけを持っています。</para>
<para>次のステージの <filename>boot2</filename> はもう少し高機能です。
これは &os; のファイルシステム上でファイルを見つける機能を持ちます。
実行するカーネルやローダを指定するための簡単なインタフェースを提供します。
<filename>boot2</filename> により起動される
<application>loader</application> はさらに高機能で、
起動設定が行なえる手段を提供します。
ステージ 2 で起動プロセス中断した時には、
次のようながインタラクティブなが画面が表示されます。</para>
<example xml:id="boot-boot2-example">
<title><filename>boot2</filename> のスクリーンショット</title>
<screen>>> FreeBSD/i386 BOOT
Default: 0:ad(0,a)/boot/loader
boot:</screen>
</example>
<para>インストールされた <filename>boot1</filename> と
<filename>boot2</filename> を変更するには、
<command>bsdlabel</command> を使ってください。
以下の例では、<replaceable>diskslice</replaceable>
は起動するディスクとスライスで、たとえば最初の
<acronym>IDE</acronym> ディスクの 1 番目のスライスは
<filename>ad0s1</filename> となります。</para>
<screen>&prompt.root; <userinput>bsdlabel -B <replaceable>diskslice</replaceable></userinput></screen>
<warning>
<para><filename>ad0</filename> のようにディスク名だけを指定すると、
<command>bsdlabel</command> は、スライスを持たない
<quote>危険な専用モード</quote>を作成してしまいます。
これはおそらく、あなたが望んでいることではないでしょうから、
<keycap>Return</keycap> キーを押す前に、
<replaceable>diskslice</replaceable>
の部分を二重にチェックしてください。</para>
</warning>
</sect2>
<sect2 xml:id="boot-loader">
<title>起動ステージ 3</title>
<indexterm><primary>ブートローダ (boot-loader)</primary></indexterm>
<para><application>loader</application>
は三段階の起動プロセスの最終段階です。
これは通常、ファイルシステム上の
<filename>/boot/loader</filename>
として存在しています。</para>
<para><application>loader</application> は、
よりさまざまなコマンド群をサポートした強力なインタプリタによって提供される組み込みコマンド群を利用することで、
インタラクティブな設定手段となるように設計されています。</para>
<para><application>loader</application>
は初期化の際にコンソールとディスクの検出を行ない、
どのディスクから起動しているかを調べます。
そして必要な変数を設定してからインタプリタを起動し、
スクリプトからコマンドを送ったり手でコマンドを入力したりできます。</para>
<indexterm><primary>ローダ</primary></indexterm>
<indexterm><primary>ローダの設定</primary></indexterm>
<para><application>loader</application>
は次に <filename>/boot/loader.rc</filename>
を読み込み、通常、変数の標準値を定義した
<filename>/boot/defaults/loader.conf</filename>
と、そのコンピュータにローカルに変数を定義した
<filename>/boot/loader.conf</filename> を読み込みます。
<filename>loader.rc</filename> はそれらの変数にもとづき、
選択されたモジュールとカーネルをロードします。</para>
<para><application>loader</application> は最後に、
標準設定で 10 秒のキー入力待ち時間を用意し、
入力がなければカーネルを起動します。
入力があった場合、コマンド群が使えるプロンプトが表示され、
ユーザは変数を調整したり、すべてのモジュールをアンロードしたり、
モジュールをロードしたりすることができます。
その後、最終的な起動や再起動へ移行します。
<xref linkend="boot-loader-commands"/>では、
もっともよく使われる <application>loader</application>
のコマンドをまとめています。
利用可能なコマンドをすべて知りたい場合には、
&man.loader.8; を参照してください。</para>
<table xml:id="boot-loader-commands" frame="none" pgwide="1">
<title>ローダの組み込みコマンド</title>
<tgroup cols="2">
<thead>
<row>
<entry>変数</entry>
<entry>説明</entry>
</row>
</thead>
<tbody>
<row>
<entry>autoboot
<replaceable>seconds</replaceable></entry>
<entry><replaceable>seconds</replaceable>
で与えられた時間内に入力がなければ、
カーネルの起動へと進みます。
カウントダウンを表示します。標準設定では 10 秒間です。</entry>
</row>
<row>
<entry>boot
<optional><replaceable>-options</replaceable></optional>
<optional><replaceable>kernelname</replaceable></optional></entry>
<entry>すぐにカーネルの起動へ進みます。
オプション、カーネル名が指定されている場合は、
それらが使われます。
<emphasis>unload</emphasis> を実行後、
カーネル名をコマンドラインから指定することができます。
<emphasis>unload</emphasis> を実行しないと、
一度読み込まれたカーネルが使われます。
<emphasis>kernelname</emphasis>
でパスが指定されていない時には、
<emphasis>/boot/kernel</emphasis> および
<emphasis>/boot/modules</emphasis> から調べられます。</entry>
</row>
<row>
<entry>boot-conf</entry>
<entry>すべてのモジュールの設定を、
起動時と同じように指定された変数
(最も多いのは <envar>kernel</envar>)
にもとづいて自動的に行ないます。
このコマンドは、変数を変更する前に、
最初に <command>unload</command>
を行なった場合にのみ有効に働きます。</entry>
</row>
<row>
<entry>help
<optional><replaceable>topic</replaceable></optional></entry>
<entry><filename>/boot/loader.help</filename>
を読み込み、ヘルプメッセージを表示します。
topic に <literal>index</literal> が指定された場合、
利用可能な topic の一覧を表示します。</entry>
</row>
<row>
<entry>include <replaceable>filename</replaceable>
…</entry>
<entry>指定されたファイルを読み込み、行単位で解釈します。
エラーが発生した場合、
<command>include</command> の実行は直ちに停止します。</entry>
</row>
<row>
<entry>load <optional>-t
<replaceable>type</replaceable></optional>
<replaceable>filename</replaceable></entry>
<entry>指定されたファイル名のカーネル、
カーネルモジュール、あるいは
type に指定された種類のファイルをロードします。
<replaceable>filename</replaceable>
以降に指定された引数はファイルへと渡されます。
<replaceable>filename</replaceable>
でパスが指定されていない時には、
<emphasis>/boot/kernel</emphasis>
および <emphasis>/boot/modules</emphasis>
から調べられます。</entry>
</row>
<row>
<entry>ls <optional>-l</optional>
<optional><replaceable>path</replaceable></optional></entry>
<entry>指定された <replaceable>path</replaceable>
にあるファイルを表示します。
<replaceable>path</replaceable>
が指定されていなければ、ルートディレクトリを表示します。
<option>-l</option>
が指定されていればファイルサイズも表示されます。</entry>
</row>
<row>
<entry>lsdev <optional>-v</optional></entry>
<entry>モジュールがロード可能なすべてのデバイスを表示します。
もし <option>-v</option> が指定されていれば、
より詳細な出力がされます。</entry>
</row>
<row>
<entry>lsmod
<optional>-v</optional></entry>
<entry>ロード済みのモジュールを表示します。
<option>-v</option> が指定されていれば、
より詳細な内容が出力されます。</entry>
</row>
<row>
<entry>more <replaceable>filename</replaceable></entry>
<entry><varname>LINES</varname>
行を表示するごとに停止しながら指定されたファイルを表示します。</entry>
</row>
<row>
<entry>reboot</entry>
<entry>すぐにシステムを再起動します。</entry>
</row>
<row>
<entry>set <replaceable>variable</replaceable>, set
<replaceable>variable</replaceable>=<replaceable>value</replaceable></entry>
<entry>ローダの環境変数を設定します。</entry>
</row>
<row>
<entry>unload</entry>
<entry>すべてのロード済みモジュールを削除します。</entry>
</row>
</tbody>
</tgroup>
</table>
<para>次にあげるのは、ローダの実践的な使用例です。
普段使っているカーネルをシングルユーザモード<indexterm><primary>シングルユーザモード</primary></indexterm>で起動します。</para>
<screen><userinput>boot -s</userinput></screen>
<para>普段使っているカーネルとモジュールをアンロードし、
古いもしくは別のカーネルをロードするには、
以下のように実行してください。</para>
<screen><userinput>unload</userinput>
<userinput>load <replaceable>kernel.old</replaceable></userinput></screen>
<para><filename>kernel.GENERIC</filename> とすると、
インストール時のデフォルトカーネルを指定できます。
また、システムをアップグレードしたり、
もしくはカスタムカーネルを設定した場合に、
直前にインストールされていたカーネルは、
<filename>kernel.old</filename>
で指定できます。</para>
<para>普段のカーネルで使っているモジュールを指定したカーネルでロードする場合は、
次のようにします。</para>
<screen><userinput>unload</userinput>
<userinput>set kernel="<replaceable>kernel.old</replaceable>"</userinput>
<userinput>boot-conf</userinput></screen>
<para>カーネルの自動設定スクリプトをロードします。</para>
<screen><userinput>load -t userconfig_script <replaceable>/boot/kernel.conf</replaceable></userinput></screen>
<indexterm>
<primary>カーネル (kernel)</primary>
<secondary>起動時の応答</secondary>
</indexterm>
</sect2>
<sect2 xml:id="boot-init">
<title>最終ステージ</title>
<indexterm>
<primary>&man.init.8;</primary>
</indexterm>
<para>カーネルがデフォルトの <application>loader</application>
もしくは <application>loader</application> を迂回して
<application>boot2</application> によって読み込まれると、
起動フラグが調べられ、それに応じて動作が調整されます。<xref
linkend="boot-kernel"/> には、
良く使われる起動フラグがまとめられています。
他の起動フラグの詳細については、
&man.boot.8; を参照してください。</para>
<indexterm>
<primary>カーネル (kernel)</primary>
<secondary>起動フラグ</secondary>
</indexterm>
<table xml:id="boot-kernel" frame="none" pgwide="1">
<title>起動時のカーネルオプション</title>
<tgroup cols="2">
<thead>
<row>
<entry>オプション</entry>
<entry>説明</entry>
</row>
</thead>
<tbody>
<row>
<entry><option>-a</option></entry>
<entry>カーネル初期化中に、
ルートファイルシステムとしてマウントするデバイスを尋ねます。</entry>
</row>
<row>
<entry><option>-C</option></entry>
<entry><acronym>CDROM</acronym>
からルートファイルシステムを起動します。</entry>
</row>
<row>
<entry><option>-s</option></entry>
<entry>シングルユーザモードで起動します。</entry>
</row>
<row>
<entry><option>-v</option></entry>
<entry>カーネル起動時に、より詳細な情報を表示します。</entry>
</row>
</tbody>
</tgroup>
</table>
<para>カーネルの起動が完了すると、&man.init.8;
というユーザプロセスに制御が移されます。
これは <filename>/sbin/init</filename>、
もしくは <command>loader</command> の
<envar>init_path</envar> 変数で指定される場所にあります。
これは起動プロセスの最終ステージです。</para>
<para>起動シーケンスでは、
システム上で利用できるファイルシステムの一慣性を確認します。
もし <acronym>UFS</acronym> ファイルシステムにに問題があって
<command>fsck</command> が不一致を修復できなければ、
管理者が問題を直接解決できるように、<application>init</application>
はシステムをシングルユーザモードへと移行させます。
問題がなければ、システムはマルチユーザモードに移行します。</para>
<sect3 xml:id="boot-singleuser">
<title>シングルユーザモード</title>
<indexterm><primary>シングルユーザモード</primary></indexterm>
<indexterm><primary>コンソール (console)</primary></indexterm>
<para>このモードには、ユーザが起動時に <option>-s</option>
を指定した場合、あるいは <application>loader</application> で
<envar>boot_single</envar> 変数を設定することによって移行します。
マルチユーザモードから <command>shutdown now</command>
を呼び出すことでもこのモードに移行できます。
シングルユーザモードは、以下のメッセージで開始します。</para>
<programlisting>Enter full pathname of shell or RETURN for /bin/sh:</programlisting>
<para>ユーザが <keycap>Enter</keycap> を入力すると、
システムは Bourne シェルを起動します。
別のシェルを使うには、シェルのフルパスを入力してください。</para>
<para>シングルユーザモードは、
通常ファイルシステムの一貫性に問題があって起動できないシステムを修復したり、
起動設定ファイルの間違いを修正するために使われます。
また、<systemitem class="username">root</systemitem>
パスワードがわからなくなった場合に、
リセットするために使うことも出来ます。
シングルユーザモードのプロンプトは、
ローカルファイルシステムおよび設定ファイルへのアクセスを与えてくれますが、
ネットワーク接続は出来ません。</para>
<para>シングルユーザモードは、システムの修復には有用ですが、
システムが物理的に安全な場所になければ、
セキュリティのリスクがもたらされます。
デフォルトでは、システムに物理的にアクセス可能なユーザは、
シングルユーザモードで起動後はシステムをすべてコントロールできます。</para>
<para><filename>/etc/ttys</filename>
でシステムの <literal>console</literal>
が <literal>insecure</literal> に設定されている場合、
システムはシングルユーザモードに移行する前に
<systemitem class="username">root</systemitem>
のパスワードを入力するように求めます。
<systemitem class="username">root</systemitem>
パスワードがわからなくなった場合のリセット機能が無効になっている間は、
セキュリティ対策が必要となります。</para>
<example xml:id="boot-insecure-console">
<title><filename>/etc/ttys</filename> の
insecure コンソール</title>
<programlisting># 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 none unknown off <replaceable>insecure</replaceable></programlisting>
</example>
<para><literal>insecure</literal> コンソールとは、
コンソールが物理的に安全でない (insecure) と考えられるため、
<systemitem class="username">root</systemitem>
のパスワードを知る人だけがシングルユーザモードを使えるという意味です。</para>
</sect3>
<sect3 xml:id="boot-multiuser">
<title>マルチユーザモード</title>
<indexterm><primary>マルチユーザモード</primary></indexterm>
<para><application>init</application>
がファイルシステムが正常であると判断するか、
ユーザがシングルユーザモードでのコマンドを終了し、
<command>exit</command> を入力してシングルユーザモードを終了すると、
システムはマルチユーザモードへ移行し、
システムのリソースの設定を開始します。</para>
<indexterm><primary>rc ファイル群</primary></indexterm>
<para>リソース設定システムはデフォルト設定を
<filename>/etc/defaults/rc.conf</filename> から、
また、システム独自の細かな設定を
<filename>/etc/rc.conf</filename> から読み込みます。
そして <filename>/etc/fstab</filename>
に記述されるシステムファイルシステムをマウントします。
その後、ネットワークサービス、さまざまなシステムデーモン、
そして最後に、ローカルにインストールされた package
の起動スクリプトを実行します。</para>
<para>リソース設定システムについてもっと知りたい場合には、
&man.rc.8; を参照してください。また、<filename>/etc/rc.d</filename>
にあるスクリプトを実行してみてください。</para>
</sect3>
</sect2>
</sect1>
<!--
<sect2 id="boot-kernel-userconfig">
<title>UserConfig: The Boot-time Kernel Configurator</title>
<para> </para>
</sect2> -->
<sect1 xml:id="boot-splash">
<info>
<title>起動時のスプラッシュスクリーンの設定</title>
<authorgroup>
<author>
<personname>
<firstname>Joseph J.</firstname>
<surname>Barbish</surname>
</personname>
<contrib>寄稿: </contrib>
</author>
</authorgroup>
</info>
<para>通常、&os; システムが起動すると、
コンソールにはシステムの起動の進捗状況を示すメッセージ群が表示されます。
スプラッシュスクリーンは、
起動時の検出メッセージやサービスのスタートアップメッセージを隠すような、
これまでとは異なる起動画面を表示します。
スプラッシュスクリーンが有効な場合でも、起動時には、
起動オプションメニュー、タイムウェイトカウントダウンプロンプトなど、
いくつかの起動ローダメッセージは表示されます。
スプラッシュスクリーンは、起動プロセスの間、
キーボードから何かのキーを押すことで、
いつでもやめることができます。</para>
<para>&os; には、2 つの基本環境があります。
ひとつは、レガシーな仮想コンソールのコマンドライン環境です。
システムの起動が終わったら、
コンソールにログインプロンプトが表示されます。
2 つ目の環境は、設定可能なグラフィカル環境です。
<xref linkend="x11"/> では、
グラフィカルディスプレイマネージャやグラフィカルログインマネージャのインストールおよび設定方法について説明しています。</para>
<para>システムの起動後は、スプラッシュスクリーンは、
スクリーンセーバのデフォルトとなります。
一定期間使われないと、スプラッシュスクリーンが表示され、
イメージの輝度が、明るくから暗くなるように変化し、
そのサイクルが繰り返されます。
スプラッシュスクリーンセーバの設定は、
<filename>/etc/rc.conf</filename> に <literal>saver=</literal>
行を追加することで変更できます。
いくつかのビルトインのスクリーンセーバが用意されており、
&man.splash.4; で説明されています。
<literal>saver=</literal> オプションは、
仮想コンソールにのみ適用され、
グラフィカルディスプレイマネージャには影響しません。</para>
<para><package>sysutils/bsd-splash-changer</package> package または port
をインストールすると、
起動時にスプラッシュイメージのコレクションからランダムに一枚が表示されます。
スプラッシュスクリーン機能は、
256 色のビットマップ (<filename>.bmp</filename>),
ZSoft <acronym>PCX</acronym> (<filename>.pcx</filename>) または
TheDraw (<filename>.bin</filename>) 形式に対応しています。
<filename>.bmp</filename>,
<filename>.pcx</filename> または <filename>.bin</filename>
イメージは、ルートパーティション、たとえば
<filename>/boot</filename> に置く必要があります。
標準の <acronym>VGA</acronym> アダプタで動かすには、
スプラッシュイメージファイルは 320x200
ピクセル以下の解像度である必要があります。
デフォルトのブートディスプレイの解像度
256 色、320x200 ピクセル以下の場合には、以下を含むように
<filename>/boot/loader.conf</filename> を編集してください。
<replaceable>splash.bmp</replaceable> の部分は、
用いるビットマップフィアルの名前に置き換えてください。</para>
<programlisting>splash_bmp_load="YES"
bitmap_load="YES"
bitmap_name="/boot/<replaceable>splash.bmp</replaceable>"</programlisting>
<para>ビットマップフィアルの代わりに、<acronym>PCX</acronym>
ファイルを使う場合は、以下のようにしてください。</para>
<programlisting>splash_pcx_load="YES"
bitmap_load="YES"
bitmap_name="/boot/<replaceable>splash.pcx</replaceable>"</programlisting>
<para><link
xlink:href="https://en.wikipedia.org/wiki/TheDraw">TheDraw</link>
形式のアスキーアートを使うには、以下を追加してください。</para>
<programlisting>splash_txt="YES"
bitmap_load="YES"
bitmap_name="/boot/<replaceable>splash.bin</replaceable>"</programlisting>
<para>他に興味を持ちそうな <filename>loader.conf</filename>
のオプションを以下で紹介します。</para>
<variablelist>
<varlistentry><term><literal>beastie_disable="YES"</literal></term>
<listitem>
<para>カウントダウンのプロンプトを除き、
ブートオプションメニューを表示しません。
ブートオプションメニューの画面は利用できませんが、
タイムウェイトカウントダウンプロンプトが表示されている時に、
オプションを選択することで対応するブートオプションを設定できます。</para>
</listitem>
</varlistentry>
<varlistentry><term><literal>loader_logo="beastie"</literal></term>
<listitem>
<para>このオプションは、カラーの beastie
ロゴと共にブートオプションメニューの右側に表示されている単語
(デフォルトでは <quote>&os;</quote>) を置き換えます。</para>
</listitem>
</varlistentry>
</variablelist>
<para>より詳細な情報については、&man.splash.4;,
&man.loader.conf.5; および &man.vga.4; をご覧ください。</para>
</sect1>
<sect1 xml:id="device-hints">
<info>
<title>Device Hints</title>
<authorgroup>
<author>
<personname>
<firstname>Tom</firstname>
<surname>Rhodes</surname>
</personname>
<contrib>寄稿: </contrib>
</author>
</authorgroup>
</info>
<indexterm>
<primary>device.hints</primary>
</indexterm>
<para>システムの最初のスタートアップ時に、&man.loader.8; は
&man.device.hints.5; を読み込みます。
このファイルにはカーネル起動の環境変数が格納されており、
これらの環境変数は <quote>device hints</quote>
と呼ばれることがあります。デバイスドライバは、
デバイスを設定するために <quote>device hints</quote>
を使用します。</para>
<para><xref linkend="boot-loader"/> で説明されているように
device hints はステージ 3 ブートローダプロンプトでも設定できます。
変数は <command>set</command> を用いて追加したり、
<command>unset</command> を用いて削除できます。
<command>show</command> を用いて一覧を見ることもできます。
<filename>/boot/device.hints</filename> に設定されている変数は、
上書きすることもできます。
ブートローダで設定した device hints の効果は一時的なものなので、
次回起動するときには無効になります。</para>
<para>システムが起動すると、&man.kenv.1;
コマンドですべてのカーネル環境変数をダンプすることができます。</para>
<para><filename>/boot/device.hints</filename>
は 1 行につき一つの変数を設定でき、行頭の <quote>#</quote>
はその行がコメントであることを示しています。
書式は次の通りです。</para>
<screen><userinput>hint.driver.unit.keyword="<replaceable>value</replaceable>"</userinput></screen>
<para>ステージ 3 ブートローダ で設定するときの書式は次の通りです。</para>
<screen><userinput>set hint.driver.unit.keyword=<replaceable>value</replaceable></userinput></screen>
<para>ここで、<literal>driver</literal> はデバイスドライバの名前、
<literal>unit</literal> はデバイスドライバのユニット番号、
<literal>keyword</literal> はヒントキーワードです。
キーワードは以下のようなオプションです。</para>
<itemizedlist>
<listitem>
<para><literal>at</literal>:
デバイスがどのバスに接続されているか指定します。</para>
</listitem>
<listitem>
<para><literal>port</literal>: 使用する <acronym>I/O</acronym>
ポートの開始アドレスを指定します。</para>
</listitem>
<listitem>
<para><literal>irq</literal>: 使用する IRQ を指定します。</para>
</listitem>
<listitem>
<para><literal>drq</literal>: 使用する
DMA チャネルを指定します。</para>
</listitem>
<listitem>
<para><literal>maddr</literal>:
使用する物理メモリアドレスを指定します。</para>
</listitem>
<listitem>
<para><literal>flags</literal>:
デバイスに対してさまざまなフラグを設定します。</para>
</listitem>
<listitem>
<para><literal>disabled</literal>:
<literal>1</literal>
が設定されていると、そのデバイスは無効になります。</para>
</listitem>
</itemizedlist>
<para>デバイスドライバはこのリスト以外の変数を設定できるかもしれませんし、
このリスト以外の変数を必要とするかもしれないので、
ドライバのマニュアルを読むことをおすすめします。
より多くの情報を知りたければ、&man.device.hints.5;,
&man.kenv.1;, &man.loader.conf.5; および &man.loader.8;
を参照してください。</para>
</sect1>
<sect1 xml:id="boot-shutdown">
<title>シャットダウン動作</title>
<indexterm>
<primary>&man.shutdown.8;</primary>
</indexterm>
<para>&man.shutdown.8;
を用いてシステムを意図的にシャットダウンした場合、
&man.init.8; は
<filename>/etc/rc.shutdown</filename>
というスクリプトの実行を試みます。
そして、すべてのプロセスへ <literal>TERM</literal>
シグナルを送り、続いてうまく終了できなかったプロセスへ
<literal>KILL</literal> シグナルを送ります。</para>
<para>電源管理機能を持ったシステムで稼働している &os;
では <command>shutdown -p now</command> によって、
直ちに電源を落とすことができます。&os; システムを再起動するには、
<command>shutdown -r now</command> を実行してください。
&man.shutdown.8; を実行するには、
<systemitem class="username">root</systemitem>
か、<systemitem class="groupname">operator</systemitem>
のメンバでなければなりません。&man.halt.8; や
&man.reboot.8; を利用することもできます。
より多くの情報を得るために、それらのマニュアルページや
&man.shutdown.8; を参照してください。</para>
<para>グループのメンバを変更するには、
<xref linkend="users-synopsis"/> を参照してください。</para>
<note>
<para>電源管理機能には &man.acpi.4;
がモジュールとして読み込まれるか、
カスタムカーネルにコンパイルされて静的に組み込まれている必要があります。</para>
</note>
</sect1>
</chapter>
|