Merge the following from the English version:

1.4   -> 1.32	 books/handbook/config/chapter.sgml
  1.127 -> 1.207 books/handbook/cutting-edge/chapter.sgml

Submitted by:	Hiroo Ono <hiroo _at_ jp dot FreeBSD dot org>
This commit is contained in:
Hideyuki KURASHINA 2006-03-20 18:01:39 +00:00
parent 4118629e80
commit 65ca41af79
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=27380
2 changed files with 522 additions and 350 deletions
ja_JP.eucJP/books/handbook
config
cutting-edge

View file

@ -2,29 +2,93 @@
The FreeBSD Documentation Project The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project The FreeBSD Japanese Documentation Project
Original revision: 1.4 Original revision: 1.32
Waiting for: 1.55 ("soft-updates" referenced from disks).
Waiting for: 1.80 ("config-network-setup" referenced from advanced-networking).
$FreeBSD$ $FreeBSD$
--> -->
<chapter id="config-tuning"> <chapter id="config-tuning">
<title>設定とチューニング</title> <chapterinfo>
<authorgroup>
<author>
<firstname>Chern</firstname>
<surname>Lee</surname>
<contrib>寄稿: </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Mike</firstname>
<surname>Smith</surname>
<contrib>基にしたチュートリアルの執筆: </contrib>
</author>
</authorgroup>
<authorgroup>
<author>
<firstname>Matt</firstname>
<surname>Dillon</surname>
<contrib>基にした tuning(7) の執筆: </contrib>
</author>
</authorgroup>
</chapterinfo>
<para>この章は &a.msmith; と &a.dillon; によって書かれたものをもとに、 <title>設定とチューニング</title>
&a.chern; と &a.murray によって書かれました。</para>
<sect1> <sect1>
<title>この章では</title> <title>この章では</title>
<indexterm><primary>System configuration</primary></indexterm> <indexterm><primary>システムの設定と最適化</primary></indexterm>
<indexterm><primary>System optimization</primary></indexterm>
<para>システムを正しく設定することは、 <para>システムを正しく設定することは、
作業の量を減らしメンテナンスや将来の更新の際の困難を減らします。 メンテナンスや将来の更新の際の作業の量を減らします。
この章では FreeBSD システムの管理上の設定の側面について記述します。</para> この章では FreeBSD システムの管理上の設定の側面について記述します。</para>
<para>またこの章では FreeBSD システムのパフォーマンスを最適化する <para>またこの章では FreeBSD システムのパフォーマンスを最適化する
チューンについても記述します。</para> チューニングについても記述します。</para>
<para>この章を読むと、以下のことがわかります。</para>
<itemizedlist>
<listitem>
<para>ハードディスク上で、ファイルシステムおよびスワップのパー
ティションの大きさと配置を決定する理由と方法</para>
</listitem>
<listitem>
<para><filename>rc.conf</filename> の設定と
<filename>/usr/local/etc/rc.d</filename>
スタートアップシステムの基礎</para>
</listitem>
<listitem>
<para>ネットワークデバイスに対する、仮想ホストの設定方法</para>
</listitem>
<listitem>
<para><filename>/etc</filename> ディレクトリ内のさまざまな設定ファ
イルの使い方</para>
</listitem>
<listitem>
<para><command>sysctl</command> 変数を使った
FreeBSD のチューニング方法</para>
</listitem>
<listitem>
<para>ディスク性能のチューニング方法と、カーネルの制限の変更方法</para>
</listitem>
</itemizedlist>
<para>この章を読む前に、以下のことをやっておくとよいでしょう。</para>
<itemizedlist>
<listitem>
<para>Unix と FreeBSD の基本を理解する (<xref
linkend="basics">)。</para>
</listitem>
<listitem>
<para>FreeBSD のソースコードを最新に保つこと
(<xref linkend="cutting-edge">) と、
カーネルコンフィグレーションおよび構築の基礎
(<xref linkend="kernelconfig">) に親しんでおく。</para>
</listitem>
</itemizedlist>
</sect1> </sect1>
<sect1 id="configtuning-initial"> <sect1 id="configtuning-initial">
@ -34,9 +98,15 @@
<title>パーティションのレイアウト</title> <title>パーティションのレイアウト</title>
<indexterm><primary>パーティションレイアウト</primary></indexterm> <indexterm><primary>パーティションレイアウト</primary></indexterm>
<indexterm><primary>/etc</primary></indexterm> <indexterm>
<indexterm><primary>/var</primary></indexterm> <primary><filename>/etc</filename></primary>
<indexterm><primary>/usr</primary></indexterm> </indexterm>
<indexterm>
<primary><filename>/var</filename></primary>
</indexterm>
<indexterm>
<primary><filename>/usr</filename></primary>
</indexterm>
<sect3> <sect3>
<title>基本パーティション</title> <title>基本パーティション</title>
@ -46,15 +116,16 @@
内周部よりもデータ転送が速いということを覚えておくことが大事です。 内周部よりもデータ転送が速いということを覚えておくことが大事です。
これに従えば、 これに従えば、
ルートやスワップのような小さくて激しくアクセスされるファイルシステムを外周付近に、 ルートやスワップのような小さくて激しくアクセスされるファイルシステムを外周付近に、
/usr のようなより大きなパーティションはその内側に配置すべきでしょう。 <filename>/usr</filename> のようなより大きなパーティションは
そうするなら、パーティションを作成する際には、ルート、スワップ、 その内側に配置すべきでしょう。
そのため、パーティションを作成する際には、ルート、スワップ、
<filename>/var</filename>、<filename>/usr</filename> <filename>/var</filename>、<filename>/usr</filename>
のような順で作ってゆくのがよいでしょう。</para> のような順で作ってゆくのがよいでしょう。</para>
<para><filename>/var</filename> パーティションのサイズは <para><filename>/var</filename> パーティションのサイズは
あなたが計算機をどのように使おうとしているかを反映します。 あなたが計算機をどのように使おうとしているかを反映します。
<filename>/var</filename> は主としてメールボックスやプリントスプール、 <filename>/var</filename> には主としてメールボックスやログファイル、
ログファイルの保持に使われます。 プリンタスプールが置かれます。
特にメールボックスとログファイルは、 特にメールボックスとログファイルは、
あなたのシステムのユーザ数やログの保持期間に依存して予期し得ぬサイズにまで成長します。 あなたのシステムのユーザ数やログの保持期間に依存して予期し得ぬサイズにまで成長します。
もしあなたがメールサーバを運用する予定なら <filename>/var</filename> もしあなたがメールサーバを運用する予定なら <filename>/var</filename>
@ -67,12 +138,12 @@
&man.ports.7; 階層からインストールされたファイル群を収める &man.ports.7; 階層からインストールされたファイル群を収める
<filename>/usr/local</filename> と呼ばれるサブディレクトリを <filename>/usr/local</filename> と呼ばれるサブディレクトリを
その中に含みます。 その中に含みます。
ports をまったく使わずシステムのソース (/usr/src) ports をまったく使わずシステムのソース (<filename>/usr/src</filename>)
も不要だというのであれば、1 ギガバイトの /usr も不要だというのであれば、1 ギガバイトの <filename>/usr</filename>
パーティションだけで充分です。 しかし、ports パーティションだけで充分です。 しかし、ports
(特にウィンドウマネージャや Linux エミュレーションを使うバイナリ) (特にウィンドウマネージャや Linux バイナリ)
を少なからずインストールするのであれば を少なからずインストールするのであれば
少なくとも /usr に 2 ギガバイトを薦め、 少なくとも <filename>/usr</filename> に 2 ギガバイトを薦め、
システムのソースも置こうというなら 3 ギガバイトの システムのソースも置こうというなら 3 ギガバイトの
<filename>/usr</filename> を推奨します。 <filename>/usr</filename> を推奨します。
このパーティションで必要になる量を過小評価してはいけません。 このパーティションで必要になる量を過小評価してはいけません。
@ -123,7 +194,7 @@
カーネルはスワップスペースを最適なかたちで カーネルはスワップスペースを最適なかたちで
ディスクをまたいでストライプさせることができます。 ディスクをまたいでストライプさせることができます。
こだわりすぎる必要はありません。 こだわりすぎる必要はありません。
スワップスペースは UNIX のつつましい美点です。 スワップスペースは Unix のつつましい美点です。
あなたが通常スワップをたくさん使わないとしても、 あなたが通常スワップをたくさん使わないとしても、
プログラムが暴走してもリブートさせられる前に回復する時間を多く得られます。</para> プログラムが暴走してもリブートさせられる前に回復する時間を多く得られます。</para>
</sect3> </sect3>
@ -137,7 +208,7 @@
<para>いくつかの理由からそれはよいアイデアとは言えません。 <para>いくつかの理由からそれはよいアイデアとは言えません。
まず各パーティションはアクセスの特徴がそれぞれ異なっていて、 まず各パーティションはアクセスの特徴がそれぞれ異なっていて、
分離しておくことでそれぞれの特徴に応じたチューができるようになるからです。 分離しておくことでそれぞれの特徴に応じたチューニングができるようになるからです。
root パーティションや <filename>/usr</filename> root パーティションや <filename>/usr</filename>
パーティションはほとんどが読み出しでわずかな書き込みがあるだけですが パーティションはほとんどが読み出しでわずかな書き込みがあるだけですが
<filename>/var</filename> や <filename>/var/tmp</filename> <filename>/var</filename> や <filename>/var/tmp</filename>
@ -156,9 +227,9 @@
<filename>/var</filename> <filename>/var</filename>
を周辺部に移動させることによって大きな効果が得られたのとは対照的に を周辺部に移動させることによって大きな効果が得られたのとは対照的に
意味のあるパフォーマンスの増加は見込めないでしょう。 意味のあるパフォーマンスの増加は見込めないでしょう。
基本的にリードオンリーな root root パーティションを小さくまとめて
パーティションを小さくまとめておくことで 基本的にリードオンリーにすることで、
不幸なクラッシュを生き延びるチャンスが増大します。</para> 不幸にしてクラッシュが起きても無事で済む可能性が大きくなります。</para>
</sect3> </sect3>
</sect2> </sect2>
@ -180,14 +251,16 @@
ファイル群の設定情報であることを示しています。</para> ファイル群の設定情報であることを示しています。</para>
<para>管理者は <filename>/etc/defaults/rc.conf</filename> <para>管理者は <filename>/etc/defaults/rc.conf</filename>
のデフォルトの設定を rc.conf ファイルにエントリを作ることで上書きすべきです。 のデフォルトの設定を <filename>rc.conf</filename> ファイルにエン
トリを作ることで上書きすべきです。
デフォルトのファイルをそのまま <filename>/etc</filename> デフォルトのファイルをそのまま <filename>/etc</filename>
にコピーするのはやめるべきです。 にコピーするのはやめるべきです。
それはデフォルト値であってサンプルではないのです。 それはデフォルト値であってサンプルではないのです。
システム固有のすべての変更は rc.conf ファイルの中でするべきです。</para> システム固有のすべての変更は <filename>rc.conf</filename> ファイ
ルの中でするべきです。</para>
<para>管理の手間を減らす為、クラスター化されたアプリケーションには <para>管理の手間を減らす為、クラスター化されたアプリケーションには
サイト共通の設定とシステム固有の設定を分離する様々な戦略が適用できます。 サイト共通の設定とシステム固有の設定を分離するさまざまな戦略が適用できます。
推奨されるアプローチは、サイト共通の設定は 推奨されるアプローチは、サイト共通の設定は
<filename>/etc/rc.conf.site</filename> のような別のファイルに置き、 <filename>/etc/rc.conf.site</filename> のような別のファイルに置き、
それをシステム固有の設定情報しか含ませない それをシステム固有の設定情報しか含ませない
@ -200,7 +273,7 @@
<itemizedlist> <itemizedlist>
<listitem><para>rc.conf:</para> <listitem><para>rc.conf:</para>
<programlisting> . rc.conf.site <programlisting> . rc.conf.site
hostname="node15.webcompany.com" hostname="node15.example.com"
network_interfaces="fxp0 lo0" network_interfaces="fxp0 lo0"
ifconfig_fxp0="inet 10.1.1.1"</programlisting></listitem> ifconfig_fxp0="inet 10.1.1.1"</programlisting></listitem>
<listitem><para>rc.conf.site:</para> <listitem><para>rc.conf.site:</para>
@ -210,12 +283,12 @@
</itemizedlist> </itemizedlist>
<para><filename>rc.conf.site</filename> ファイルは <para><filename>rc.conf.site</filename> ファイルは
<command>rsync</command> 等を使うことで全システムに配布でき、 <command>rsync</command> のようなプログラムを使うことで全システ
一方 <filename>rc.conf</filename> ムに配布でき、一方 <filename>rc.conf</filename>
ファイルはユニークなままを保つことができます。</para> ファイルはユニークなままを保つことができます。</para>
<para>システムを &man.sysinstall.8; や 'make world' 等で <para>システムを &man.sysinstall.8; や <command>make world</command> 等で
更新した場合 rc.conf ファイルは上書きされません。 更新した場合 <filename>rc.conf</filename> ファイルは上書きされません。
なのでシステムの設定情報が失われることもありません。</para> なのでシステムの設定情報が失われることもありません。</para>
</sect1> </sect1>
@ -223,26 +296,27 @@
<sect1 id="configtuning-appconfig"> <sect1 id="configtuning-appconfig">
<title>アプリケーションの設定</title> <title>アプリケーションの設定</title>
<para>基本的に、インストールされたアプリケーションは独自の文法を持つ <para>基本的に、インストールされたアプリケーションは独自の文法を持つ
固有の設定ファイルを持ちます。 固有の設定ファイルがあります。
これらのファイルがベースシステムから分離されているということは重要で、 これらのファイルがベースシステムから分離されているということは重要で、
このためパッケージ管理ツールによる配置と管理が容易になっています。</para> このためパッケージ管理ツールによる配置と管理が容易になっています。</para>
<indexterm><primary>/usr/local/etc</primary></indexterm> <indexterm><primary>/usr/local/etc</primary></indexterm>
<para>基本的に、それらのファイルは <filename>/usr/local/etc</filename> <para>基本的に、それらのファイルは
にインストールされます。 <filename>/usr/local/etc</filename> にインストールされます。
設定ファイルの数が多数にのぼるアプリケーションに対しては、 設定ファイルの数が多数にのぼるアプリケーションに対しては、
それら用にサブディレクトリが作られます。</para> それら用にサブディレクトリが作られます。</para>
<para>通常、ports やパッケージがインストールされると <para>通常、ports やパッケージがインストールされると
設定ファイルのサンプルが一緒にインストールされます。 設定ファイルのサンプルが一緒にインストールされます。
大抵、識別のためにサフィックスとして ".default" がついています。 大抵、識別のためにサフィックスとして
<quote>.default</quote> がついています。
アプリケーションのための設定ファイルがまだ存在していなければ、 アプリケーションのための設定ファイルがまだ存在していなければ、
.defaults ファイルをコピーすることで作成できます。</para> .defaults ファイルをコピーすることで作成できます。</para>
<para>以下は <para><filename>/usr/local/etc/apache</filename>
<filename>/usr/local/etc/apache</filename> の例です。</para> ディレクトリの例をご覧ください。</para>
<literallayout class="monospaced">-rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf <literallayout class="monospaced">-rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf
-rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf.default -rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf.default
@ -255,7 +329,8 @@
-rw-r--r-- 1 root wheel 7980 May 20 1998 srm.conf -rw-r--r-- 1 root wheel 7980 May 20 1998 srm.conf
-rw-r--r-- 1 root wheel 7933 May 20 1998 srm.conf.default</literallayout> -rw-r--r-- 1 root wheel 7933 May 20 1998 srm.conf.default</literallayout>
<para>srm.conf ファイルだけが変更されていることが即座に見てとれるでしょう。 <para>ファイルサイズの差から、<filename>srm.conf</filename>
ファイルだけが変更されていることが分かります。
後に apache を更新した時にも、 後に apache を更新した時にも、
この変更されたファイルは上書きされることはありません。</para> この変更されたファイルは上書きされることはありません。</para>
@ -274,10 +349,11 @@
<para>Ports collection やパッケージからインストールしたソフトウェアは <para>Ports collection やパッケージからインストールしたソフトウェアは
しばしば <filename>/usr/local/etc/rc.d</filename> にスクリプトを置き、 しばしば <filename>/usr/local/etc/rc.d</filename> にスクリプトを置き、
システムが起動した時には 'start'、システムをシャットダウンする時には システムが起動した時には <option>start</option>、システムをシャッ
'stop' の引数をつけてこれを実行します。 トダウンする時には <option>stop</option> を引数にして実行します。
これは root によって実行されるべきであるようなシステムワイドな これは <username>root</username> で実行すべき、または
サービスを起動する場合に推奨される方法です。 <username>root</username> で起動することを期待されているシステム
ワイドなサービスを起動する場合に推奨される方法です。
これらのスクリプトはパッケージの一部としてインストール時に記録され、 これらのスクリプトはパッケージの一部としてインストール時に記録され、
パッケージとともに削除されます。</para> パッケージとともに削除されます。</para>
@ -331,13 +407,14 @@ exit 0
</note> </note>
<para>この他にサービスの起動に &man.cron.8; を利用することもできます。 <para>この他にサービスの起動に &man.cron.8; を利用することもできます。
このアプローチには、cron がそのプロセスを このアプローチには、&man.cron.8; がそのプロセスを
crontab のオーナ権限で実行したり、サービスが非特権ユーザによって <command>crontab</command> の所有者権限で実行したり、サービスが
立ち上げられ管理されるなどといった有利な点がいくつもあります。</para> 非特権ユーザによって立ち上げられ管理されるなどといった有利な点が
いくつもあります。</para>
<para>これで cron の文書化されていない機能の利点を得ることができます。 <para>これで &man.cron.8; の機能の利点を得ることができます。
日時の指定を '@reboot' で置き換えることでジョブは 日時の指定を <literal>@reboot</literal> で置き換えることでジョブは
システムがブートした直後、cron が起動した時に実行されます。</para> システムがブートした直後、&man.cron.8; が起動した時に実行されます。</para>
</sect1> </sect1>
<sect1 id="configtuning-virtual-hosts"> <sect1 id="configtuning-virtual-hosts">
@ -352,27 +429,29 @@ exit 0
これは一つのネットワークインタフェイスに これは一つのネットワークインタフェイスに
複数のアドレスを割当てることで実現されます。</para> 複数のアドレスを割当てることで実現されます。</para>
<para>ネットワークインタフェイスは "真の" アドレスを一つと <para>ネットワークインタフェイスは <quote>真の</quote> アドレスを
"別名" のアドレスを複数持ちます。 これらの別名は通常 一つと <quote>別名</quote> のアドレスを複数持ちます。これらの別
<filename>/etc/rc.conf</filename> 名は通常 <filename>/etc/rc.conf</filename>
に別名のエントリを置くことで追加されます。</para> に別名のエントリを置くことで追加されます。</para>
<para>'fxp0' インタフェイスへの別名のエントリは以下の様なものです。</para> <para><devicename>fxp0</devicename> インタフェイスへの別名のエント
リは以下の様なものです。</para>
<programlisting>ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"</programlisting> <programlisting>ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx"</programlisting>
<para>別名のエントリは alias0 から始まり _alias1、_alias2 <para>別名のエントリは alias0 から始まり昇順に命名されなければなり
の様に増加してゆかなければなりません。 設定プロセスは ません (たとえば、_alias1, _alias2 の様になります)。設定プロセス
最初に欠けた番号のところで停まります。</para> 最初に欠けた番号のところで停まります。</para>
<para>別名のネットマスクの計算は重要ですが、幸いなことに非常に簡単です。 <para>別名のネットマスクの計算は重要ですが、幸いなことに非常に簡単です。
個々のインタフェイスについてそのネットワークのネットマスクを正しく 個々のインタフェイスについてそのネットワークのネットマスクを正しく
表現しているアドレスが必ず一つ必要です。 表現しているアドレスが必ず一つ必要です。
そのネットワークに所属しているそれ以外のアドレスのネットマスクは そのネットワークに所属しているそれ以外のアドレスのネットマスクは
て 1 でなければなりません。</para> すべて 1 でなければなりません。</para>
<para>例として、fxp0 インタフェイスが二つのネットワークに接続されている <para>例として、<devicename>fxp0</devicename> インタフェイスが二つ
ものを考えてみましょう。 一つはネットマスクが 255.255.255.0 である のネットワークに接続されているものを考えてみましょう。
一つはネットマスクが 255.255.255.0 である
10.1.1.0 ネットワークで、もう一つはネットマスクが 255.255.255.240 である 10.1.1.0 ネットワークで、もう一つはネットマスクが 255.255.255.240 である
202.0.75.16 ネットワークです。 システムは 10.1.1.0 には 10.1.1.1 として、 202.0.75.16 ネットワークです。 システムは 10.1.1.0 には 10.1.1.1 として、
202.0.75.20 には 202.0.75.17 として現れるようにします。</para> 202.0.75.20 には 202.0.75.17 として現れるようにします。</para>
@ -414,7 +493,7 @@ exit 0
</row> </row>
<row> <row>
<entry><filename>/etc/mail</filename></entry> <entry><filename>/etc/mail</filename></entry>
<entry>追加的な sendmail の設定、他の MTA の設定ファイル。 <entry>追加的な &man.sendmail.8; の設定、他の MTA の設定ファイル。
</entry> </entry>
</row> </row>
<row> <row>
@ -424,8 +503,9 @@ exit 0
</row> </row>
<row> <row>
<entry><filename>/etc/namedb</filename></entry> <entry><filename>/etc/namedb</filename></entry>
<entry>bind(8) のデータのデフォルトの置場。 通常 <entry>&man.named.8; のデータのデフォルトの置場。通常
boot ファイルはここに置かれ、/var/db に置かれた他のデータを boot ファイルはここに置かれ、
<filename>/var/db</filename> に置かれた他のデータを
参照するディレクティブを含みます。</entry> 参照するディレクティブを含みます。</entry>
</row> </row>
<row> <row>
@ -440,7 +520,7 @@ exit 0
<row> <row>
<entry><filename>/var/db</filename></entry> <entry><filename>/var/db</filename></entry>
<entry>永続的なシステム固有のデータファイル。 たとえば <entry>永続的なシステム固有のデータファイル。 たとえば
bind(8) のゾーンファイル、データベースファイル等。</entry> &man.named.8; のゾーンファイル、データベースファイル等。</entry>
</row> </row>
</tbody> </tbody>
</tgroup> </tgroup>
@ -450,13 +530,15 @@ exit 0
<sect2> <sect2>
<title>ホスト名</title> <title>ホスト名</title>
<indexterm><primary>hostnames</primary></indexterm> <indexterm><primary>hostname</primary></indexterm>
<indexterm><primary>DNS</primary></indexterm> <indexterm><primary>DNS</primary></indexterm>
<sect3> <sect3>
<title>/etc/resolv.conf</title> <title><filename>/etc/resolv.conf</filename></title>
<indexterm><primary>resolv.conf</primary></indexterm> <indexterm>
<primary><filename>resolv.conf</filename></primary>
</indexterm>
<para><filename>/etc/resolv.conf</filename> は FreeBSD に <para><filename>/etc/resolv.conf</filename> は FreeBSD に
インターネットドメインネームシステム (DNS) インターネットドメインネームシステム (DNS)
@ -475,7 +557,7 @@ exit 0
</row> </row>
<row> <row>
<entry><literal>search</literal></entry> <entry><literal>search</literal></entry>
<entry>ホスト名をルックアップする検索リスト。 <entry>ホスト名をルックアップするための検索リスト。
通常、ローカルなホスト名のドメインから決定されます。</entry> 通常、ローカルなホスト名のドメインから決定されます。</entry>
</row> </row>
<row> <row>
@ -488,12 +570,17 @@ exit 0
<para>基本的な <filename>resolv.conf</filename>。</para> <para>基本的な <filename>resolv.conf</filename>。</para>
<programlisting>search foobar.com <programlisting>search example.com
nameserver 147.11.1.11 nameserver 147.11.1.11
nameserver 147.11.100.30</programlisting> nameserver 147.11.100.30</programlisting>
<para>&man.dhclient.8; は通常 <filename>resolv.conf</filename> <note><para><literal>search</literal> オプションと
を DHCP サーバから受け取った情報で書き換えます。</para> <literal>domain</literal> オプションは、
どちらか一方しか使ってはいけません。</para></note>
<para>DHCP を利用している場合、&man.dhclient.8; は通常
<filename>resolv.conf</filename> を DHCP サーバから受け取っ
た情報で書き換えます。</para>
</sect3> </sect3>
<sect3> <sect3>
@ -511,7 +598,7 @@ nameserver 147.11.100.30</programlisting>
はインターネット名のローカルなレコードを提供し、 はインターネット名のローカルなレコードを提供し、
よくアクセスされる名前を外部に問い合わせるのを減らすためにも使えます。</para> よくアクセスされる名前を外部に問い合わせるのを減らすためにも使えます。</para>
<programlisting># &dollar;FreeBSD$ <programlisting># &dollar;FreeBSD&dollar;
# #
# Host Database # Host Database
# This file should contain the addresses and aliases # This file should contain the addresses and aliases
@ -549,7 +636,7 @@ nameserver 147.11.100.30</programlisting>
<para>例:</para> <para>例:</para>
<programlisting>10.0.0.1 myRealHostname.foobar.com myRealHostname foobar1 foobar2</programlisting> <programlisting>10.0.0.1 myRealHostname.example.com myRealHostname foobar1 foobar2</programlisting>
<para>これ以上の情報は &man.hosts.5; をあたってください。</para> <para>これ以上の情報は &man.hosts.5; をあたってください。</para>
</sect3> </sect3>
@ -567,16 +654,16 @@ nameserver 147.11.100.30</programlisting>
<para><filename>syslog.conf</filename> <para><filename>syslog.conf</filename>
は &man.syslogd.8; プログラムのための設定ファイルです。 は &man.syslogd.8; プログラムのための設定ファイルです。
これはどのタイプの syslog メッセージを対応する これはどのタイプの <command>syslog</command> メッセージを対応する
ログファイルに記録するかを指定します。</para> ログファイルに記録するかを指定します。</para>
<programlisting># $FreeBSD&dollar; <programlisting># &dollar;FreeBSD&dollar;
# #
# Spaces ARE valid field separators in this file. However, # Spaces ARE valid field separators in this file. However,
# other *nix-like systems still insist on using tabs as field # other *nix-like systems still insist on using tabs as field
# separators. If you are sharing this file between systems, you # separators. If you are sharing this file between systems, you
# may want to use only tabs as field separators here. # may want to use only tabs as field separators here.
# Consult the syslog.conf(5) manpage. # Consult the syslog.conf(5) manual page.
*.err;kern.debug;auth.notice;mail.crit /dev/console *.err;kern.debug;auth.notice;mail.crit /dev/console
*.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/messages *.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/messages
security.* /var/log/security security.* /var/log/security
@ -591,7 +678,7 @@ cron.* /var/log/cron
#console.info /var/log/console.log #console.info /var/log/console.log
# uncomment this to enable logging of all log messages to /var/log/all.log # uncomment this to enable logging of all log messages to /var/log/all.log
#*.* /var/log/all.log #*.* /var/log/all.log
# uncomment this to enable logging to a remote loghost named loghost # uncomment this to enable logging to a remote log host named loghost
#*.* @loghost #*.* @loghost
# uncomment these if you're running inn # uncomment these if you're running inn
# news.crit /var/log/news/news.crit # news.crit /var/log/news/news.crit
@ -611,16 +698,17 @@ cron.* /var/log/cron
<indexterm><primary>newsyslog.conf</primary></indexterm> <indexterm><primary>newsyslog.conf</primary></indexterm>
<para><filename>newsyslog.conf</filename> は &man.newsyslog.8; <para><filename>newsyslog.conf</filename> は、通常
のための設定ファイルで、 &man.cron.8; によって予定を決めて実行されるプログラム
通常 &man.cron.8; によって実行されるプログラム &man.newsyslog.8; &man.newsyslog.8; のための設定ファイルです。
がログファイルをいつ保存して再編するかを決定します。 &man.newsyslog.8; は、
<filename>logfile</filename> は <filename>logfile.1</filename> ログファイルをいつ保存して再編するかを決定します。
に移され、<filename>logfile.1</filename> は <filename>logfile</filename> は <filename>logfile.0</filename>
<filename>logfile.2</filename> に、そして以下同様に移されます。 に移され、<filename>logfile.0</filename> は
さらにログファイルを gzip 形式で保存することもできます。 <filename>logfile.1</filename> に、そして以下同様に移されます。
この場合ファイル名は logfile.0.gz、logfile.1.gz また、ログファイルを &man.gzip.1; 形式で保存することもできます。
の様になります。</para> この場合ファイル名は <filename>logfile.0.gz</filename>,
<filename>logfile.1.gz</filename> の様になります。</para>
<para><filename>newsyslog.conf</filename> <para><filename>newsyslog.conf</filename>
はどのログファイルが管理され、どのくらいの期間保存され、 はどのログファイルが管理され、どのくらいの期間保存され、
@ -629,9 +717,9 @@ cron.* /var/log/cron
日時で再編されあるいは保存されます。</para> 日時で再編されあるいは保存されます。</para>
<programlisting># configuration file for newsyslog <programlisting># configuration file for newsyslog
# $FreeBSD&dollar; # &dollar;FreeBSD&dollar;
# #
# logfilename [owner:group] mode count size when [ZB] [/pid_file] [sig_num] # filename [owner:group] mode count size when [ZB] [/pid_file] [sig_num]
/var/log/cron 600 3 100 * Z /var/log/cron 600 3 100 * Z
/var/log/amd.log 644 7 100 * Z /var/log/amd.log 644 7 100 * Z
/var/log/kerberos.log 644 7 100 * Z /var/log/kerberos.log 644 7 100 * Z
@ -662,7 +750,7 @@ cron.* /var/log/cron
<para><filename>sysctl.conf</filename> は <para><filename>sysctl.conf</filename> は
<filename>rc.conf</filename> によく似ています。 <filename>rc.conf</filename> によく似ています。
値は変数=値のかたちでセットされます。 値は<literal>変数=値</literal>のかたちでセットされます。
指定された値はシステムがマルチユーザモードに移行した後でセットされます。 指定された値はシステムがマルチユーザモードに移行した後でセットされます。
すべての変数がこのモードで設定可能というわけではありません。</para> すべての変数がこのモードで設定可能というわけではありません。</para>
@ -692,27 +780,29 @@ compat.linux.osrelease=4.3-STABLE</programlisting>
500 を越えるシステム変数を &man.sysctl.8; で読んだり 500 を越えるシステム変数を &man.sysctl.8; で読んだり
セットしたりできます。</para> セットしたりできます。</para>
<para>中心において &man.sysctl.8; の機能は以下の二つに尽きます。 <para>本質的には &man.sysctl.8; の機能は次の二つ、
すなわちシステムの設定を読んで変更することです。</para> システムの設定を読むことと変更することです。</para>
<para>読むことができるすべての変数を表示するには以下のようにします。</para> <para>読み取り可能なすべての変数を表示するには以下のようにします。</para>
<screen>&prompt.user; <userinput>sysctl -a</userinput></screen> <screen>&prompt.user; <userinput>sysctl -a</userinput></screen>
<para>個々の変数、たとえば <para>個々の変数、たとえば
<literal>kern.maxproc</literal> を読むには以下のようにします。</para> <varname>kern.maxproc</varname> を読むには以下のようにします。</para>
<screen>&prompt.user; <userinput>sysctl kern.maxproc</userinput> <screen>&prompt.user; <userinput>sysctl kern.maxproc</userinput>
kern.maxproc: 1044</screen> kern.maxproc: 1044</screen>
<para>個々の変数をセットするには <literal>=</literal> <para>特定の変数をセットするには、直感的な文法
オプションを使います。</para> <replaceable>変数</replaceable>=<replaceable>値</replaceable>
を使ってください。</para>
<screen>&prompt.root; <userinput>sysctl kern.maxfiles=5000</userinput> <screen>&prompt.root; <userinput>sysctl kern.maxfiles=5000</userinput>
kern.maxfiles: 2088 -> 5000</screen> kern.maxfiles: 2088 -> 5000</screen>
<para>sysctl 変数の値は通常、文字列、数値、真偽値のいずれかです。 <para>sysctl 変数の値は通常、文字列、数値、真偽値のいずれかです。
真偽値は yes の場合には 1 で no の場合には 0 です。</para> (真偽値は yes の場合には <literal>1</literal> で no の場合には
<literal>0</literal> です)。</para>
</sect1> </sect1>
<sect1 id="configtuning-disk"> <sect1 id="configtuning-disk">
@ -722,13 +812,15 @@ kern.maxfiles: 2088 -> 5000</screen>
<title>sysctl 変数</title> <title>sysctl 変数</title>
<sect3> <sect3>
<title>vfs.vmiodirenable</title> <title><varname>vfs.vmiodirenable</varname></title>
<indexterm><primary>vfs.vmiodirenable</primary></indexterm> <indexterm>
<primary><varname>vfs.vmiodirenable</varname></primary>
</indexterm>
<para><varname>vfs.vmiodirenable</varname> sysctl <para><varname>vfs.vmiodirenable</varname> sysctl
はデフォルトは 0 (オフ) であり (しかし近いうちにデフォルトが 1 変数のデフォルトは 1 (オン) で、
になるでしょう)、0 (オフ) または 1 (オン) にセットすることができます。 0 (オフ) または 1 (オン) にセットすることができます。
このパラメータはディレクトリがシステムによってどのように このパラメータはディレクトリがシステムによってどのように
キャッシュされるかを制御します。 キャッシュされるかを制御します。
ほとんどのディレクトリは小さく、 ほとんどのディレクトリは小さく、
@ -754,9 +846,11 @@ kern.maxfiles: 2088 -> 5000</screen>
</sect3> </sect3>
<sect3> <sect3>
<title>hw.ata.wc</title> <title><varname>hw.ata.wc</varname></title>
<indexterm><primary>hw.ata.wc</primary></indexterm> <indexterm>
<primary><varname>hw.ata.wc</varname></primary>
</indexterm>
<para>FreeBSD 4.3 では IDE のライトキャッシュがオフになりました。 <para>FreeBSD 4.3 では IDE のライトキャッシュがオフになりました。
これは IDE これは IDE
@ -773,13 +867,14 @@ kern.maxfiles: 2088 -> 5000</screen>
したがって私たちはデフォルトを安全側に変更しました。 したがって私たちはデフォルトを安全側に変更しました。
残念ながらこれは大変な性能の低下をもたらし、 残念ながらこれは大変な性能の低下をもたらし、
私たちはあきらめてこのリリース後にオンに戻しました。 私たちはあきらめてこのリリース後にオンに戻しました。
hw.ata.wc sysctl 変数を見てデフォルトをチェックしてみるべきです。 <varname>hw.ata.wc</varname> sysctl 変数を見てデフォルトを
チェックしてみるべきです。
もし IDE ライトキャッシュがオフになっていたら、 もし IDE ライトキャッシュがオフになっていたら、
hw.ata.wc カーネル変数を 1 に戻すことでオンに戻すことができます。 hw.ata.wc カーネル変数を 1 に戻すことでオンに戻すことができます。
これはブート時にブートローダから行わなければなりません。 これはブート時にブートローダから行わなければなりません。
カーネルがブートした後に行っても効果はありません。</para> カーネルがブートした後に行っても効果はありません。</para>
<para>&man.ata.4; を見てください。</para> <para>詳しくは &man.ata.4; を見てください。</para>
</sect3> </sect3>
</sect2> </sect2>
@ -789,9 +884,10 @@ kern.maxfiles: 2088 -> 5000</screen>
<indexterm><primary>ソフトアップデート</primary></indexterm> <indexterm><primary>ソフトアップデート</primary></indexterm>
<indexterm><primary>tunefs</primary></indexterm> <indexterm><primary>tunefs</primary></indexterm>
<para>&man.tunefs.8; はファイルシステムを fine チューンするのに使えます。 <para>&man.tunefs.8; プログラムはファイルシステムを細かくチュー
この目的においてはソフトアップデートをオンオフすることを ニングするのに使えます。このプログラムにはさまざまなオプションがありま
考えるだけですみます。 以下の様にしてトグルします。</para> すが、ここではソフトアップデートをオンオフすることだけを考えま
す。以下の様にして切り替えます。</para>
<screen>&prompt.root; tunefs -n enable /filesystem <screen>&prompt.root; tunefs -n enable /filesystem
&prompt.root; tunefs -n disable /filesystem</screen> &prompt.root; tunefs -n disable /filesystem</screen>
@ -801,56 +897,91 @@ kern.maxfiles: 2088 -> 5000</screen>
いい機会はシングルユーザモードでどのパーティションもマウント いい機会はシングルユーザモードでどのパーティションもマウント
されていない時です。</para> されていない時です。</para>
<para>softupdates はメタデータの性能、 <note><para>FreeBSD 4.5 からは、ファイルシステム生成時に
&man.newfs.8; の <literal>-U</literal> オプションを使って
ソフトアップデートを有効化できるようになりました。</para></note>
<para>ソフトアップデートはメタデータの性能、
主にファイルの作成と削除の性能を劇的に改善します。 主にファイルの作成と削除の性能を劇的に改善します。
全てのファイルシステムで softupdates を有効にすることを推奨します。 すべてのファイルシステムでソフトアップデートを有効にすることを推奨します。
softupdates に関して、2 つの欠点を意識すべきです。 ソフトアップデートに関して、2 つの欠点を意識すべきです。
1 つめは、softupdates 1 つめは、ソフトアップデートはクラッシュ時におけるファイルシス
はクラッシュ時におけるファイルシステムの一貫性は保証しますが、 テムの一貫性は保証しますが、
物理ディスクの更新が何秒か (1 分にることもあります!) 物理ディスクの更新が何秒か (1 分に達することもあります!)
遅れる可能性が高いことです。 遅れる可能性が高いことです。
クラッシュした場合、より多くの成果が消えてしまうかもしれません。 システムがクラッシュした場合、より多くの作業結果が消えてしまうかもしれません。
2 つめは、softupdates 2 つめは、ソフトアップデート
はファイルシステムブロックを解放するのを遅らせるということです。 はファイルシステムブロックを解放するのを遅らせるということです。
あるファイルシステム (えばルートファイルシステム) が満杯近くの時に あるファイルシステム (たとえばルートファイルシステム) が満杯近くの時に
それに対する大規模な更新、たとえば make installworld それに対する大規模な更新、たとえば <command>make installworld</command>
をすると、空き領域を使い果たして更新が失敗してしまうことがあります。 をすると、空き領域を使い果たして更新が失敗してしまうことがあります。
</para> </para>
</sect2> </sect2>
</sect1> </sect1>
<sect1 id="configtuning-kernel-limits"> <sect1 id="configtuning-kernel-limits">
<title>kernel の制限をチューニングする</title> <title>Kernel 制限のチューニング</title>
<indexterm><primary>kernel の制限をチューニングする</primary></indexterm> <indexterm><primary>kernel 制限のチューニング</primary></indexterm>
<sect2> <sect2>
<title>File/process 制限</title> <title>File/Process 制限</title>
<sect3> <sect3>
<title>kern.maxfiles</title> <title><varname>kern.maxfiles</varname></title>
<indexterm><primary>kern.maxfiles</primary></indexterm> <indexterm>
<primary><varname>kern.maxfiles</varname></primary>
</indexterm>
<para><varname>kern.maxfiles</varname> はあなたのシステムの要求に <para><varname>kern.maxfiles</varname> はあなたのシステムの要求に
応じて増減させることができます。 応じて増減させることができます。
この変数はあなたのシステムのファイル記述子の最大値を示します。 この変数はあなたのシステムのファイル記述子の最大値を示します。
ファイル記述子テーブルが溢れるような時には dmesg に頻繁に ファイル記述子テーブルが溢れるような時には、システムメッセー
<literal>file: table is full</literal> ジバッファに頻繁に <literal>file: table is full</literal>
と表示されます。</para> と表示されます。これは、
<command>dmesg</command> コマンドで確認できます。</para>
<para>ファイル、ソケット、パイプ(fifo) は <para>ファイル、ソケット、パイプ (fifo) は
それぞれオープンされるとファイル記述子を一つ消費します。 それぞれオープンされるとファイル記述子を一つ消費します。
大規模なプロダクションサーバでは 大規模なプロダクションサーバでは
その時実行されているサービスの種類や数に応じては その時実行されているサービスの種類や数に応じては
あっさり数千のファイル記述子が必要になります。</para> あっさり数千のファイル記述子が必要になります。</para>
<para><varname>kern.maxfile</varname> のデフォルト値は <para><varname>kern.maxfile</varname> のデフォルト値はカーネル
kernel config ファイルの maxusers オプションで決ります。 コンフィグレーションファイルの <option>MAXUSERS</option> オ
<varname>kern.maxfiles</varname> は maxusers の値に応じて増加します。 プションで決まります。<varname>kern.maxfiles</varname> は
</para> <option>MAXUSERS</option> の値に比例して増加します。
カスタムカーネルをコンパイルする際は、このカーネルコンフィグ
レーションオプションをシステムの利用法に合わせて設定するとよ
いでしょう。カーネルは、この数値からほとんどの制限の初期値を
決定します。業務用マシンに、実際に 256 名のユーザが一度に接
続することはないかもしれませんが、大規模なウェブサーバに必要
なリソースは同程度になります。</para>
<note><para>FreeBSD 4.5 からは、
カーネルコンフィグレーションファイルで
<option>MAXUSERS</option> を <literal>0</literal>
に設定すると、システムの RAM
容量に基づいて適切なデフォルト値が選択されます。</para></note>
</sect3> </sect3>
</sect2> </sect2>
<sect2>
<title>ネットワークの制限</title>
<para>カーネルコンフィグレーションオプション
<option>NMBCLUSTERS</option> は、そのシステムで利用可能なネッ
トワーク mbuf の量を決定します。通信量の多いサーバで MBUF の量
が少ないと、FreeBSD の性能が低下してしまいます。クラスタ一つは
およそ 2kB のメモリに対応しているので、1024 だとカーネルメモリ
から約 2 MB をネットワークバッファに予約することになります。ど
れだけ必要になるかを、簡単な計算で出すことができます。同時に最
大 1000 接続までゆくウェブサーバがあり、それぞれの接続によって
受信バッファ 16kB と送信バッファ 16kB が消費されるなら、ウェ
ブサーバをまかなうのに 32MB 程度のネットワークバッファが必要
になります。経験的に有用な値は、それを 2 倍したものなので、
32MBx2 = 64MB/2K = 32768 になります。</para>
</sect2>
</sect1> </sect1>
</chapter> </chapter>

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project The FreeBSD Japanese Documentation Project
Original revision: 1.127 Original revision: 1.207
$FreeBSD$ $FreeBSD$
--> -->
@ -12,7 +12,7 @@
<author> <author>
<firstname>Jim</firstname> <firstname>Jim</firstname>
<surname>Mock</surname> <surname>Mock</surname>
<contrib>再構成、再編成および改訂</contrib> <contrib>再構成、再編成および改訂: </contrib>
</author> </author>
<!-- Mar 2000 --> <!-- Mar 2000 -->
</authorgroup> </authorgroup>
@ -20,7 +20,7 @@
<author> <author>
<firstname>Jordan</firstname> <firstname>Jordan</firstname>
<surname>Hubbard</surname> <surname>Hubbard</surname>
<contrib>原作</contrib> <contrib>原作: </contrib>
</author> </author>
<author> <author>
<firstname>Poul-Henning</firstname> <firstname>Poul-Henning</firstname>
@ -40,7 +40,7 @@
<title>開発の最前線</title> <title>開発の最前線</title>
<sect1> <sect1 id="cutting-edge-synopsis">
<title>この章では</title> <title>この章では</title>
<para>あるリリースから次のリリースまでの期間にも、 <para>あるリリースから次のリリースまでの期間にも、
@ -64,7 +64,7 @@
<application>CTM</application> <application>CTM</application>
を使ったシステム更新方法</para> を使ったシステム更新方法</para>
</listitem> </listitem>
<listitem><para><command>make world</command> <listitem><para><command>make buildworld</command> (等)
を使ってベースシステム全体を再構築しインストールする方法</para> を使ってベースシステム全体を再構築しインストールする方法</para>
</listitem> </listitem>
@ -200,17 +200,19 @@
<sect3> <sect3>
<title>&os.current; を使う</title> <title>&os.current; を使う</title>
<indexterm>
<primary>-CURRENT</primary>
<secondary>使用</secondary>
</indexterm>
<orderedlist> <orderedlist>
<listitem> <listitem>
<para>&a.current; <para>&a.current.name; と &a.cvsall.name; メーリングリスト
&a.cvsall;
に加わってください。 に加わってください。
これは単に良い考えであるというだけでなく、 これは単に良い考えであるというだけでなく、
<emphasis>必須の</emphasis>ことなのです。 <emphasis>必須の</emphasis>ことなのです。
もし もし
<emphasis>&a.current;</emphasis> <emphasis>&a.current.name;</emphasis>
に入っていなければ、 メーリングリストに入っていなければ、
さまざまな人がシステムの現在の状態について さまざまな人がシステムの現在の状態について
述べているコメントを見ることは決してありませんし、 述べているコメントを見ることは決してありませんし、
従って他の人が既に見つけて解決している 従って他の人が既に見つけて解決している
@ -218,33 +220,21 @@
さらに言うと、システムを正常に保つための さらに言うと、システムを正常に保つための
重要な情報を見逃してしまう可能性もあります。</para> 重要な情報を見逃してしまう可能性もあります。</para>
<para>&a.cvsall; では、 <para>&a.cvsall.name; メーリングリストでは、
それぞれの変更についての それぞれの変更についての
commit ログを見ることができます。 commit ログを見ることができます。
また、それに関して起こり得る副作用の情報を得ることができますので、 また、それに関して起こり得る副作用の情報を得ることができますので、
参加する価値のあるメーリングリストです。</para> 参加する価値のあるメーリングリストです。</para>
<para>これらのメーリングリストに入るには、 <para>これらの、もしくは他のメーリングリストに入るには、
&a.majordomo; へ</para> &a.mailman.lists.link; をたどって参加したいメーリングリ
ストをクリックしてください。残りの手順の説明はそこにあり
<programlisting>subscribe freebsd-current ます。</para>
subscribe cvs-all</programlisting>
<indexterm>
<primary><application>majordomo</application></primary>
</indexterm>
<para>と書いたメールを送ってください。
オプションとして本文に
<literal>help</literal>
と書けば、Majordomo からあなたへ、
わたしたちがサポートする様々なメーリングリストに参加
/脱退する方法に関する詳しいヘルプが送られます。</para>
</listitem> </listitem>
<listitem> <listitem>
<para><hostid role="fqdn">ftp.FreeBSD.org</hostid> <para>&os; <link linkend="mirrors">ミラーサイト</link> か
からのソースの入手。 らのソースの入手。以下の 2 つの方法のいずれかでできます。</para>
以下の 3 つの方法で行なうことができます。</para>
<orderedlist> <orderedlist>
<indexterm> <indexterm>
@ -255,50 +245,25 @@ subscribe cvs-all</programlisting>
</indexterm> </indexterm>
<indexterm> <indexterm>
<primary>-CURRENT</primary> <primary>-CURRENT</primary>
<secondary>CVSup を使った同期</secondary> <secondary><application>CVSup</application> を使った同期</secondary>
</indexterm> </indexterm>
<listitem> <listitem>
<para><link linkend="cvsup">cvsup</link> を <para><link linkend="cvsup">cvsup</link> を
<ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/standard-supfile">この supfile</ulink> <filename>/usr/share/examples/cvsup</filename> にある
を用いて使用する。 <filename>standard-supfile</filename> という名称の
これがもっとも推奨される方法です。 <filename>supfile</filename> と合わせて使ってください。
これがもっとも推奨される方法です。
なぜなら、<command>cvsup</command> によって一度全体を入手し、 なぜなら、<command>cvsup</command> によって一度全体を入手し、
後は変更されたところだけを入手することができるからです。 後は変更されたところだけを入手することができるからです。
たくさんの人が自動的にソースを最新のものに保つために 多くの人が <command>cvsup</command> を
<command>cvsup</command> を <command>cron</command> から起動しています。 <command>cron</command> から起動して、自動的にソースコー
上に挙げたサンプル supfile はカスタマイズして、環境に合わせて ドを最新のものに保っています。
<link linkend="cvsup">cvsup</link> を設定する必要があります。 上に挙げた見本の <filename>supfile</filename> をカス
その設定を行なうのにヘルプが必要であれば、単に</para> タマイズするとともに、あなたの環境に合わせて <link
<screen>&prompt.root; <userinput>pkg_add -f ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/All/cvsupit-3.1.tgz</userinput></screen> linkend="cvsup">cvsup</link> を設定する必要がありま
<para>とタイプしてください。</para> す。</para>
</listitem> </listitem>
<indexterm>
<primary>-CURRENT</primary>
<secondary>ftp によるダウンロード</secondary>
</indexterm>
<listitem>
<para><command>ftp</command> を使う。
&os.current; のソースツリーは常に
<ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/">
ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/</ulink>
で <quote>公開</quote> されています。
全体を compress/tar して入手できる FTP ミラーもあります。
たとえば、</para>
<screen>usr.bin/lex</screen>
<para>があったとすると、</para>
<screen><prompt>ftp&gt;</prompt> <userinput>cd usr.bin</userinput>
<prompt>ftp&gt;</prompt> <userinput>get lex.tar</userinput></screen>
<para>とすることにより、ディレクトリ全体 (この場合、
usr.bin/lex以下全体) を tar
ファイルとして入手することができます。</para>
</listitem>
<indexterm> <indexterm>
<primary>-CURRENT</primary> <primary>-CURRENT</primary>
@ -314,7 +279,7 @@ subscribe cvs-all</programlisting>
そのため、最近ではあまり使われなくなっており、 そのため、最近ではあまり使われなくなっており、
長い間使用できなくなってしまう事態が発生する可能性があります 長い間使用できなくなってしまう事態が発生する可能性があります
(訳注: 保守する人が少ないためです)。 (訳注: 保守する人が少ないためです)。
9600bps 以上の速度で接続しているなら、 9600&nbsp;bps 以上の速度で接続しているなら、
<application><link linkend="cvsup">CVSup</link></application> <application><link linkend="cvsup">CVSup</link></application>
を利用されることを推奨します。 を利用されることを推奨します。
</para> </para>
@ -331,16 +296,21 @@ subscribe cvs-all</programlisting>
一部のみをコンパイルしようとすると、 一部のみをコンパイルしようとすると、
ほぼ間違いなくトラブルを起こすからです。</para> ほぼ間違いなくトラブルを起こすからです。</para>
<indexterm>
<primary>-CURRENT</primary>
<secondary>コンパイル</secondary>
</indexterm>
<para>&os.current; をコンパイルする前に <para>&os.current; をコンパイルする前に
<filename>/usr/src</filename> にある Makefile <filename>/usr/src</filename> にある Makefile
を良く読んでください。 を良く読んでください。
アップグレードの処理の一部として、 アップグレードの処理の一部として、
少なくとも一回は最初に 少なくとも一回は最初に
<link linkend="makeworld">make world</link> <link linkend="makeworld">新しいカーネルをインストールし
を行なうべきでしょう。 て、world を再構築</link> すべきでしょう。&a.current; と
&a.current; を読めば、 <filename>/usr/src/UPDATING</filename> を読めば、次のリ
次のリリースへ向けて時々必要になる他のブートストラップの方法に関して、 リースへ向けて移ってゆくに当たって時々必要となる既存シス
常に最新情報を得ることが出来ます。</para> テムからの新システムの構築手順についての最新情報が得られ
るでしょう。</para>
</listitem> </listitem>
<listitem> <listitem>
@ -392,8 +362,8 @@ subscribe cvs-all</programlisting>
永遠にサポートし続けることはできません。 永遠にサポートし続けることはできません。
現時点での古いリリースの FreeBSD のセキュリティポリシーの全説明を知るには、 現時点での古いリリースの FreeBSD のセキュリティポリシーの全説明を知るには、
<ulink <ulink
url="../../../../security/index.html">http://www.FreeBSD.org/security/</ulink> url="&url.base;/security/">http://www.FreeBSD.org/security/</ulink>
を参照してください</para> を参照してください</para>
</footnote> </footnote>
セキュリティ上の理由のみから開発用ブランチ全体を追いかけることは、 セキュリティ上の理由のみから開発用ブランチ全体を追いかけることは、
@ -428,7 +398,7 @@ subscribe cvs-all</programlisting>
<orderedlist> <orderedlist>
<listitem> <listitem>
<para>&a.stable; へ加わってください。 <para>&a.stable.name; メーリングリストに加わってください。
このメーリングリストでは、 このメーリングリストでは、
&os.stable; の構築に関連する事柄や、 &os.stable; の構築に関連する事柄や、
その他の注意すべき点 に関する情報が流れています。 その他の注意すべき点 に関する情報が流れています。
@ -436,84 +406,61 @@ subscribe cvs-all</programlisting>
このメーリングリストで公表し、 このメーリングリストで公表し、
提案された変更に関して問題が生じるかどうかを返答する機会をユーザに与えます。</para> 提案された変更に関して問題が生じるかどうかを返答する機会をユーザに与えます。</para>
<para>また、&a.cvsall; では、 <para>また、&a.cvsall.name; メーリングリストでは、
それぞれの変更がなされると、 変更がなされるごとに作成される commit log やそれに伴う
起こりうる副作用に関するすべての適切な情報と一緒に 起こりうる副作用についての情報を読むことができます。</para>
commit log を読むことができます。subscribe
しておきたいもう一つのメーリングリストです。</para>
<para>メーリングリストに参加するには、 <para>これらの、もしくは他のメーリングリストに入るには、
&a.majordomo; &a.mailman.lists.link; をたどって参加したいメーリングリ
へメッセージの本文に次のように書いたメールを送ってください:</para> ストをクリックしてください。残りの手順の説明はそこにあり
ます。</para>
<programlisting>subscribe freebsd-stable
subscribe cvs-all</programlisting>
<indexterm>
<primary><application>majordomo</application></primary>
</indexterm>
<para>オプションとして本文に `help' と書けば、
Majordomo はわたしたちがサポートするさまざまなメーリングリストに参加 /
脱退する方法に関する詳しいヘルプを送付します。</para>
</listitem> </listitem>
<listitem> <listitem>
<para>もし、あなたが新しいシステムをインストールしようとしていて <para>もし、あなたが新しいシステムをインストールしようとしていて
それを可能な限り安定なものにしておきたいなら、 それを可能な限り安定なものにしておきたいなら、
最新のブランチの snapshot を 最新のブランチの snapshot を
<ulink url="ftp://releng4.freebsd.org/pub/FreeBSD"> <ulink url="ftp://snapshots.jp.FreeBSD.org/pub/FreeBSD/snapshots/"></ulink>
ftp://releng4.freebsd.org/pub/FreeBSD</ulink>
から取得し、 から取得し、
これを一般のリリースのものと同様にインストールしてください。</para> これを一般のリリースと同様にインストールしてください。
もしくは、<link linkend="mirrors">ミラーサイト</link>から最近の
&os.stable; リリースをインストールし、下記の説明に従って最新の
&os.stable; のソースコードに更新することもできます。</para>
<para>もし、既に &os; の以前のリリースが動いている場合で、 <para>もし、既に &os; の以前のリリースが動いている場合で、
これをソースからアップグレードしようとするならば、 これをソースからアップグレードしようとするならば、
<hostid role="fqdn">ftp.FreeBSD.org</hostid> より簡単に &os; <link linkend="mirrors">ミラーサイト</link> から簡
これを行う事が出来ます。これには次の 3 つの方法があります。 単に行えます。これには次の 2 つの方法があります。
</para> </para>
<orderedlist> <orderedlist>
<indexterm> <indexterm>
<primary>-STABLE</primary> <primary><command>cvsup</command></primary>
<secondary>CVSup を使った同期</secondary> </indexterm>
<indexterm>
<primary><command>cron</command></primary>
</indexterm> </indexterm>
<listitem>
<para><link linkend="cvsup">cvsup</link> を
<ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/stable-supfile">この supfile</ulink>
を用いて使用する。
一度コレクション全体を入手してしまえば前回からの変更部分だけですむので、
もっとも推奨される方法です。
多くの人が <command>cron</command> から <command>cvsup</command> を実行し、
自動的にソースコードを最新の状態に保っています。
これを簡単に扱うには次のようにタイプしてください。</para>
<blockquote><screen>&prompt.root; <userinput>pkg_add -f ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CVSup/cvsupit.tgz</userinput></screen></blockquote>
</listitem>
<indexterm> <indexterm>
<primary>-STABLE</primary> <primary>-STABLE</primary>
<secondary>FTP を使ったダウンロード</secondary> <secondary><application>CVSup</application> を使った同期</secondary>
</indexterm> </indexterm>
<listitem> <listitem>
<para><command>ftp</command> を使用する。&os.stable; <para><link linkend="cvsup">cvsup</link> を
用のソースツリーは <filename>/usr/share/examples/cvsup</filename> にある
常に次のところで <quote>公開</quote> されています: <filename>stable-supfile</filename> という名称の
<ulink url="ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-stable/">ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-stable/</ulink></para> <filename>supfile</filename> と合わせて使ってください。
これがもっとも推奨される方法です。
なぜなら、<command>cvsup</command> によって一度全体を入手し、
後は変更されたところだけを入手することができるからです。
多くの人が <command>cvsup</command> を
<command>cron</command> から起動して、自動的にソースコー
ドを最新のものに保っています。
上に挙げた見本の <filename>supfile</filename> をカス
タマイズするとともに、あなたの環境に合わせて <link
linkend="cvsup">cvsup</link> を設定する必要がありま
す。</para>
</listitem>
<para>compress/tar でツリー全体を入手できる
FTP ミラーもあります。
たとえば:</para>
<screen>usr.bin/lex</screen>
<para>に対して:</para>
<screen><prompt>ftp&gt;</prompt> <userinput>cd usr.bin</userinput>
<prompt>ftp&gt;</prompt> <userinput>get lex.tar</userinput></screen>
<para>とすることにより、ディレクトリ全体を tar
ファイルとして入手することができます。</para>
</listitem>
<indexterm> <indexterm>
<primary>-STABLE</primary> <primary>-STABLE</primary>
<secondary>CTM を使って同期する</secondary> <secondary>CTM を使って同期する</secondary>
@ -546,12 +493,12 @@ subscribe cvs-all</programlisting>
<filename>/usr/src</filename> にある Makefile をよ <filename>/usr/src</filename> にある Makefile をよ
く読んでください。 く読んでください。
少なくとも一回はアップグレードの処理の一部として最初に 少なくとも一回はアップグレードの処理の一部として最初に
<link linkend="makeworld">make world</link> <link linkend="makeworld">新しいカーネルをインストールし
を実行するべきでしょう。&a.stable; を読めば、 て、world を再構築</link> すべきでしょう。&a.stable; と
次のリリースに移行する <filename>/usr/src/UPDATING</filename> を読めば、次のリ
に当たって時々必要となる既存システムからの リースへ向けて移ってゆくに当たって時々必要となる既存シス
新システムの構築手順に テムからの新システムの構築手順についての最新情報が得られ
ついての最新情報が得られるでしょう。</para> るでしょう。</para>
</listitem> </listitem>
</orderedlist> </orderedlist>
</sect3> </sect3>
@ -611,7 +558,7 @@ subscribe cvs-all</programlisting>
</para> </para>
<indexterm> <indexterm>
<primary><command>CTM</command></primary> <primary><application>CTM</application></primary>
</indexterm> </indexterm>
<para>一方、<application>CTM</application> <para>一方、<application>CTM</application>
はあなたが持っているソースとマスタアーカイブ上に はあなたが持っているソースとマスタアーカイブ上に
@ -639,16 +586,17 @@ subscribe cvs-all</programlisting>
<application>Anonymous CVS</application> <application>Anonymous CVS</application>
はおそらく他の何よりも深く混乱してしまうことが多いでしょう。 はおそらく他の何よりも深く混乱してしまうことが多いでしょう。
もしソースツリーの一部を消してしまったら、(最新の CVS もしソースツリーの一部を消してしまったら、(最新の CVS
<quote>ベースデルタ</quote> から) 一からやり直し、CTM か anoncvs <quote>ベースデルタ</quote> から) 一からやり直し、
<application>CTM</application> か <application>Anonymous CVS</application>
を使って悪い部分を消去し、再同期させることによって を使って悪い部分を消去し、再同期させることによって
すべてを再構築しなければなりません。</para> すべてを再構築しなければなりません。</para>
</sect1> </sect1>
<sect1 id="makeworld"> <sect1 id="makeworld">
<title><command>make world</command> の利用</title> <title><quote>World</quote> の再構築</title>
<indexterm> <indexterm>
<primary><command>make world</command></primary> <primary><quote>World</quote> の再構築</primary>
</indexterm> </indexterm>
<para>&os; のどれか特定のバージョン (&os.stable;、&os.current; など) <para>&os; のどれか特定のバージョン (&os.stable;、&os.current; など)
について、ローカルのソースツリーを同期させたら、 について、ローカルのソースツリーを同期させたら、
@ -668,7 +616,7 @@ subscribe cvs-all</programlisting>
</para> </para>
<para>まず、バックアップがきちんと作成されていることを確認して、 <para>まず、バックアップがきちんと作成されていることを確認して、
fix-it フロッピーを用意してください。 fixit フロッピーか起動可能な CD を用意してください。
多分、それを使うことはないと思いますが、 多分、それを使うことはないと思いますが、
あとで後悔することのないよう、念のため用意しておきましょう。</para> あとで後悔することのないよう、念のため用意しておきましょう。</para>
</warning> </warning>
@ -711,6 +659,48 @@ subscribe cvs-all</programlisting>
</para> </para>
</warning> </warning>
<warning>
<title><command>make world</command> は使わないこと</title>
<para>古いドキュメントの多くが、この目的に
<command>make world</command> を使うことを薦めています。
これは、重要な手順をいくつか抜かしてしまうので、
何をしているかよく分かっていなければ使うべきではありません。
ほぼあらゆる場合において、<command>make world</command>
を実行するのは間違っており、
ここで説明されている手順を用いるべきです。</para>
</warning>
<sect2>
<title>システムを更新する正式な方法</title>
<para>システムを更新するには、次の手順を踏むべきです。</para>
<screen>&prompt.root; <userinput>make buildworld</userinput>
&prompt.root; <userinput>make buildkernel</userinput>
&prompt.root; <userinput>make installkernel</userinput>
&prompt.root; <userinput>reboot</userinput></screen>
<para>(たとえば、ローダのプロンプトから <command>boot -s</command>
を使って) シングルユーザモードで立ち上げましょう。
それから、以下を実行してください。</para>
<screen>&prompt.root; <userinput>mergemaster -p</userinput>
&prompt.root; <userinput>make installworld</userinput>
&prompt.root; <userinput>mergemaster</userinput>
&prompt.root; <userinput>reboot</userinput></screen>
<warning>
<title>この後の説明を読んでください</title>
<para>上述の手順は、
とりあえず着手するための簡単なまとめにすぎません。
それぞれの手順をきちんと理解するために、
この後の節を読んでください。
カスタムカーネルを利用したいと考えているならなおさらです。</para>
</warning>
</sect2>
<sect2> <sect2>
<title><filename>/usr/src/UPDATING</filename> を読む</title> <title><filename>/usr/src/UPDATING</filename> を読む</title>
@ -737,7 +727,8 @@ subscribe cvs-all</programlisting>
<primary><filename>make.conf</filename></primary> <primary><filename>make.conf</filename></primary>
</indexterm> </indexterm>
<para>まず、<filename>/etc/defaults/make.conf</filename> と <para>まず、<filename>/usr/share/examples/etc/make.conf</filename>
(&os;&nbsp;4.X では <filename>/etc/defaults/make.conf</filename>) と
<filename>/etc/make.conf</filename> を調べてください。そこには <filename>/etc/make.conf</filename> を調べてください。そこには
最初から標準的なものが (多くのものはコメントアウトされていますが) 最初から標準的なものが (多くのものはコメントアウトされていますが)
含まれています。ソースからシステムを再構築するときに make が 含まれています。ソースからシステムを再構築するときに make が
@ -747,7 +738,9 @@ subscribe cvs-all</programlisting>
そのため、システムに必要な設定を書いておくと良いでしょう。</para> そのため、システムに必要な設定を書いておくと良いでしょう。</para>
<para>標準的なユーザならおそらく、 <para>標準的なユーザならおそらく、
<filename>/etc/defaults/make.conf</filename> の <makevar>CFLAGS</makevar> と <filename>/usr/share/examples/etc/make.conf</filename>
(&os;&nbsp;4.X では <filename>/etc/defaults/make.conf</filename>) の
<makevar>CFLAGS</makevar> と
<makevar>NOPROFILE</makevar> のコメントをはずすことを考えると思います。</para> <makevar>NOPROFILE</makevar> のコメントをはずすことを考えると思います。</para>
<para>他の定義 (<makevar>COPTFLAGS</makevar>、 <para>他の定義 (<makevar>COPTFLAGS</makevar>、
@ -774,17 +767,19 @@ subscribe cvs-all</programlisting>
</para> </para>
<para> <para>
<quote>make world</quote> のインストールの段階では、 <quote>make installworld</quote> によるインストールの段階では、
特定のユーザ名、あるいはグループが存在していることを 特定のユーザ名、あるいはグループが存在していることを
要求する場面があります。システムのアップグレードを行なう際には、 要求する場面があります。システムのアップグレードを行なう際には、
それらのユーザ名やグループが削除、あるいは変更されて存在していない可能性が それらのユーザ名やグループが削除、あるいは変更されて存在していない可能性が
考えられますが、そういった場合、システムのアップグレードを 考えられますが、そういった場合、システムのアップグレードを
行なっている間に、問題が発生する原因になります。 行なっている間に、問題が発生する原因になります。
<quote>make buildworld</quote> において、それらのユーザ名やグ
ループが存在するか確認が行われる場合もあります。
</para> </para>
<para>この例で記憶に新しいのは、 <para>この例で記憶に新しいのは、
<username>smmsp</username> ユーザが追加された時です。 <username>smmsp</username> ユーザが追加された時です。
<command>mtree</command> &man.mtree.8;
<filename>/var/spool/clientmqueue</filename> <filename>/var/spool/clientmqueue</filename>
を作成しようとする時、 を作成しようとする時、
そのユーザ名 (およびグループ) そのユーザ名 (およびグループ)
@ -843,12 +838,16 @@ subscribe cvs-all</programlisting>
<para>もう一つの方法として、マルチユーザモードでシステムを再構築して、 <para>もう一つの方法として、マルチユーザモードでシステムを再構築して、
シングルユーザモードに移行してからそれをインストールする、 シングルユーザモードに移行してからそれをインストールする、
というのがあります。もしこのような方法で行ないたい場合は、 というのがあります。もしこのような方法で行ないたい場合は、
以下の手順を構築が完了するところまで飛ばしてください。</para> 以下の手順を構築が完了するところまで飛ばしてください。
シングルユーザモードに移行するのを、
<maketarget>installkernel</maketarget> もしくは
<maketarget>installworld</maketarget> しなければならなくなるま
で後回しにできます。</para>
<para>稼働中のシステムでシングルユーザモードに移行するには、 <para>稼働中のシステムでシングルユーザモードに移行するには、
スーパユーザ (root) 権限で次のコマンドを実行します。</para> スーパユーザ (root) 権限で次のコマンドを実行します。</para>
<screen>&prompt.root; <userinput/shutdown now/</screen> <screen>&prompt.root; <userinput>shutdown now</userinput></screen>
<para>あるいはシステムを再起動し、ブートプロンプトから <para>あるいはシステムを再起動し、ブートプロンプトから
<option>-s</option> フラグを設定することで、シングルユーザモードで <option>-s</option> フラグを設定することで、シングルユーザモードで
@ -871,7 +870,8 @@ subscribe cvs-all</programlisting>
<note> <note>
<para>CMOS クロックが地域時間に設定されていて <para>CMOS クロックが地域時間に設定されていて
GMT ではない場合、 GMT ではない場合 (&man.date.1; コマンドが正しい時間と地域
を表示しないなら当てはまります)、
次のコマンドを実行する必要があるかもしれません。</para> 次のコマンドを実行する必要があるかもしれません。</para>
<screen>&prompt.root; <userinput>adjkerntz -i</userinput></screen> <screen>&prompt.root; <userinput>adjkerntz -i</userinput></screen>
@ -891,7 +891,7 @@ subscribe cvs-all</programlisting>
</para> </para>
<para>このディレクトリをあらかじめ削除しておくことにより、 <para>このディレクトリをあらかじめ削除しておくことにより、
<quote>make world</quote> の行程にかかる時間を短縮させ、 <quote>make buildworld</quote> の行程にかかる時間を短縮させ、
依存問題に悩まされるようなトラブルを回避することができます。 依存問題に悩まされるようなトラブルを回避することができます。
</para> </para>
@ -938,7 +938,7 @@ Script done, &hellip;</screen>
</sect3> </sect3>
<sect3 id="make-buildworld"> <sect3 id="make-buildworld">
<title>ベースシステムの構築とインストール</title> <title>ベースシステムの構築</title>
<para>まず、カレントディレクトリを <filename>/usr/src</filename> に <para>まず、カレントディレクトリを <filename>/usr/src</filename> に
変更しなければなりません。次のように実行してください。</para> 変更しなければなりません。次のように実行してください。</para>
@ -963,7 +963,7 @@ Script done, &hellip;</screen>
コマンドラインの一般的な書式は、次のとおりです。 コマンドラインの一般的な書式は、次のとおりです。
</para> </para>
<screen>&prompt.root; <userinput>make <option>-<replaceable/x/</option> <option>-D<replaceable>VARIABLE</replaceable></option> <replaceable>target</replaceable></userinput></screen> <screen>&prompt.root; <userinput>make -<replaceable>x</replaceable> -D<replaceable>VARIABLE</replaceable> <replaceable>target</replaceable></userinput></screen>
<para> <para>
この例では、<option>-<replaceable>x</replaceable></option> が この例では、<option>-<replaceable>x</replaceable></option> が
@ -980,14 +980,13 @@ Script done, &hellip;</screen>
同様です。これは変数を設定するもう一つの方法として用意されています。 同様です。これは変数を設定するもう一つの方法として用意されています。
</para> </para>
<screen>&prompt.root; <userinput>make -DNOPROFILE=true <replaceable>target</replaceable></userinput></screen> <screen>&prompt.root; <userinput>make -DNOPROFILE <replaceable>target</replaceable></userinput></screen>
<para> <para>
は、プロファイル版のライブラリを構築しないことを指定する は、プロファイル版のライブラリを構築しないことを指定する
もう一つの記法で、<filename>/etc/make.conf</filename> 中の</para> もう一つの記法で、<filename>/etc/make.conf</filename> 中の</para>
<programlisting>NOPROFILE= true <programlisting>NOPROFILE= true # Avoid compiling profiled libraries</programlisting>
# Avoid compiling profiled libraries</programlisting>
<para>の行に対応します。</para> <para>の行に対応します。</para>
@ -1019,6 +1018,9 @@ Script done, &hellip;</screen>
<maketarget>world</maketarget> ターゲットは <maketarget>world</maketarget> ターゲットは
<maketarget>buildworld</maketarget> と <maketarget>buildworld</maketarget> と
<maketarget>installworld</maketarget> の二つに分割されました。 <maketarget>installworld</maketarget> の二つに分割されました。
<maketarget>world</maketarget> ターゲットは、
ほとんどのユーザにとっては実際に危険なものなので、&os;
バージョン 5.3 からは全く動かないように変更されます。
</para> </para>
<para> <para>
@ -1045,11 +1047,13 @@ Script done, &hellip;</screen>
<para> <para>
第二に、NFS マウントを利用することで、 第二に、NFS マウントを利用することで、
ネットワーク上の複数のマシンをアップグレードすることが ネットワーク上の複数のマシンをアップグレードすることが
可能な点があげられます。たとえば三台のマシン、マシン A、マシン B、 可能な点があげられます。たとえば三台のマシン、
マシン C をアップグレードしたい場合には、まず <hostid>A</hostid>, <hostid>B</hostid>, <hostid>C</hostid>
マシン A で <command>make buildworld</command> と をアップグレードしたい場合には、まずマシン <hostid>A</hostid>
で <command>make buildworld</command> と
<command>make installworld</command> を実行します。 <command>make installworld</command> を実行します。
それから、マシン B とマシン C でマシン A の それから、マシン <hostid>B</hostid> とマシン <hostid>C</hostid>
でマシン <hostid>A</hostid> の
<filename>/usr/src</filename> と <filename>/usr/obj</filename> を <filename>/usr/src</filename> と <filename>/usr/obj</filename> を
NFS マウントし、<command>make installworld</command> とすることで NFS マウントし、<command>make installworld</command> とすることで
構築済みのシステムを各マシンにインストールすることができるのです。 構築済みのシステムを各マシンにインストールすることができるのです。
@ -1094,14 +1098,14 @@ Script done, &hellip;</screen>
<title>システムの構築にかかる時間</title> <title>システムの構築にかかる時間</title>
<indexterm> <indexterm>
<primary><command>make world</command></primary> <primary><quote>World</quote> の再構築</primary>
<secondary>時間</secondary> <secondary>時間</secondary>
</indexterm> </indexterm>
<para>構築時間を決める要素はさまざまありますが、 <para>構築時間を決める要素はさまざまありますが、
現時点では Pentium III の 500 MHz、128 MB の RAM という構成で 現時点では Pentium&nbsp;III の 500&nbsp;MHz、128&nbsp;MB の
トリックや近道を使わずに普通に構築した場合、 RAM という構成でトリックや近道を使わずに普通に構築した場合、
&os.stable; の構築に約 2 時間かかります。 &os.stable; の構築に約 2&nbsp;時間かかります。
&os.current; の構築は、もう少し時間がかかります。</para> &os.current; の構築は、もう少し時間がかかります。</para>
</sect3> </sect3>
</sect2> </sect2>
@ -1132,18 +1136,34 @@ Script done, &hellip;</screen>
使って新しいカーネルを構築することで、 使って新しいカーネルを構築することで、
システムが正常に動作しているかどうか確かめることができます。</para> システムが正常に動作しているかどうか確かめることができます。</para>
<para>もし &os; 4.0 以降のシステムにアップグレードする場合、 <para>FreeBSD の最近のバージョンでは、新しいカーネルを構築する前に <link
(<xref linkend="kernelconfig"> に記載されている) linkend="make-buildworld">build world</link> を行うことが重要です。
古いカーネル構築手順はおすすめできません。 </para>
代わりに、
<link linkend="make-buildworld"><maketarget>buildworld</maketarget> <note><para>カスタムカーネルを構築したい場合、既にコンフィグレー
を使ってシステムを構築</link>した<emphasis>あと</emphasis>に、 ションファイルがあるならば、単に
以下のコマンドを実行してください。</para> <literal>KERNCONF=<replaceable>MYKERNEL</replaceable></literal>
を使ってください。</para>
<screen>&prompt.root; <userinput>cd /usr/src</userinput> <screen>&prompt.root; <userinput>cd /usr/src</userinput>
&prompt.root; <userinput>make buildkernel</userinput> &prompt.root; <userinput>make buildkernel KERNCONF=<replaceable>MYKERNEL</replaceable></userinput>
&prompt.root; <userinput>make installkernel</userinput></screen> &prompt.root; <userinput>make installkernel KERNCONF=<replaceable>MYKERNEL</replaceable></userinput></screen>
<para>FreeBSD&nbsp;4.2 以前では、
<literal>KERNCONF=</literal> を <literal>KERNEL=</literal>
に置き換えなければなりません。2001 年 2 月 2 日以前に取得した
4.2-STABLE では <literal>KERNCONF=</literal> を認識しません。</para>
</note>
<para>なお、<literal>kern.securelevel</literal> を 1 より大きく
していて、<emphasis>かつ</emphasis>カーネルのバイナリファイル
に <literal>noschg</literal> のようなフラグを設定している場合
は、<maketarget>installkernel</maketarget> を行うのにシングル
ユーザモードに移行しなければなりません。それ以外の場合は、マル
チユーザモードでこれらのコマンドを問題なく動かせるはずです。
<literal>kern.securelevel</literal> について詳しくは
&man.init.8; を、ファイルの様々なフラグについて詳しくは
&man.chflags.1; をご覧ください。</para>
<para>&os; の 4.0 以前にアップグレードする場合は、 <para>&os; の 4.0 以前にアップグレードする場合は、
古いカーネル構築手順に従う必要があります。 古いカーネル構築手順に従う必要があります。
ただし、以下のコマンドを使って新しいバージョンの ただし、以下のコマンドを使って新しいバージョンの
@ -1188,11 +1208,11 @@ Script done, &hellip;</screen>
<para>たとえば以下のように実行したなら、</para> <para>たとえば以下のように実行したなら、</para>
<screen>&prompt.root; <userinput>make -DNOPROFILE=true buildworld</userinput></screen> <screen>&prompt.root; <userinput>make -DNOPROFILE buildworld</userinput></screen>
<para>以下のようにしてインストールしなければなりません。</para> <para>以下のようにしてインストールしなければなりません。</para>
<screen>&prompt.root; <userinput>make -DNOPROFILE=true installworld</userinput></screen> <screen>&prompt.root; <userinput>make -DNOPROFILE installworld</userinput></screen>
<para>もしそうしなかった場合、 <para>もしそうしなかった場合、
<command>make buildworld</command> の段階で構築されていない <command>make buildworld</command> の段階で構築されていない
@ -1201,7 +1221,7 @@ Script done, &hellip;</screen>
</sect2> </sect2>
<sect2> <sect2>
<title><command>make world</command> で更新されないファイルの更新</title> <title><command>make installworld</command> で更新されないファイルの更新</title>
<para> <para>
システムの再構築は、いくつかのディレクトリ ( システムの再構築は、いくつかのディレクトリ (
@ -1219,8 +1239,17 @@ Script done, &hellip;</screen>
のバックアップを取って不測の事態に備えてください。 のバックアップを取って不測の事態に備えてください。
</para> </para>
<sect3> <sect3 id="mergemaster">
<title><command>mergemaster</command></title> <sect3info>
<authorgroup>
<author>
<firstname>Tom</firstname>
<surname>Rhodes</surname>
<contrib>寄稿: </contrib>
</author>
</authorgroup>
</sect3info>
<title><command>mergemaster</command></title>
<indexterm><primary><command>mergemaster</command></primary></indexterm> <indexterm><primary><command>mergemaster</command></primary></indexterm>
<para>&man.mergemaster.8; ユーティリティは Bourne シェルスクリプトで、 <para>&man.mergemaster.8; ユーティリティは Bourne シェルスクリプトで、
@ -1260,7 +1289,7 @@ Script done, &hellip;</screen>
に現在のファイルを変更しないで新しいバージョンを削除せよと伝えます。 に現在のファイルを変更しないで新しいバージョンを削除せよと伝えます。
この選択は、現在のファイルを変更する理由が分からないのであれば、 この選択は、現在のファイルを変更する理由が分からないのであれば、
お勧めできません。 お勧めできません。
mergemaster のプロンプトで <option>?</option> とタイプすれば、 &man.mergemaster.8; のプロンプトで <keycap>?</keycap> とタイプすれば、
いつでもヘルプが見られます。 いつでもヘルプが見られます。
ファイルのスキップを選ぶと、他のすべてのファイルを終えたあと、 ファイルのスキップを選ぶと、他のすべてのファイルを終えたあと、
もう一度そのファイルが提示されます。</para> もう一度そのファイルが提示されます。</para>
@ -1275,20 +1304,21 @@ Script done, &hellip;</screen>
画面上に並ぶ両方のファイルを見て新しいファイルを作成するために両方から必要な部分を選択し、 画面上に並ぶ両方のファイルを見て新しいファイルを作成するために両方から必要な部分を選択し、
2 つのファイルを統合することができます。 2 つのファイルを統合することができます。
並んでいるファイルを比較するとき、 並んでいるファイルを比較するとき、
<option>l</option> キーで左側の中身を選択し、 <keycap>l</keycap> キーで左側の中身を選択し、
<option>r</option> キーで右側の中身を選択します。 <keycap>r</keycap> キーで右側の中身を選択します。
最終出力は左右両方の部分でできたファイルになるでしょう。 最終出力は左右両方の部分でできたファイルになるでしょう。
このファイルをインストールすることができます。 このファイルをインストールすることができます。
たいてい、このオプシュンはユーザが設定を変更したファイルに使われます。</para> たいてい、このオプシュンはユーザが設定を変更したファイルに使われます。</para>
<para>diff の結果をもう一度見る、を選択すると、 <para>&man.diff.1; の結果をもう一度見る、を選択すると、
ちょうど先ほど &man.mergemaster.8; が選択肢を表示する前と同じように、 ちょうど先ほど &man.mergemaster.8; が選択肢を表示する前と同じように、
ファイルの相異点を見ることができます。</para> ファイルの相異点を見ることができます。</para>
<para>&man.mergemaster.8; がシステムファイルの比較を終えたあと、 <para>&man.mergemaster.8; がシステムファイルの比較を終えたあと、
他のオプションについてもプロンプトが表示されます。 他のオプションについてもプロンプトが表示されます。
&man.mergemaster.8; パスワードファイルを再構築したいかどうか、 &man.mergemaster.8; が、パスワードファイルを再構築したいかどうかや、
<filename>MAKEDEV</filename> を実行するかどうかを訊かれることがあります。 FreeBSD 5.0 より前のバージョンを動かしている場合は
&man.MAKEDEV.8; を実行するかどうかを尋ねることがあります。
最後に残った一時ファイルを削除するかどうかを尋ねて終了します。</para> 最後に残った一時ファイルを削除するかどうかを尋ねて終了します。</para>
</sect3> </sect3>
@ -1380,9 +1410,9 @@ Script done, &hellip;</screen>
<filename>/var/tmp/root/</filename> と <filename>/var/tmp/root/</filename> と
<filename>/var/tmp/root/root/</filename> の中にある <filename>/var/tmp/root/root/</filename> の中にある
シェルスタートアップファイルだけですが、 シェルスタートアップファイルだけですが、
他のものがあるかも知れません。 他にもあるかも知れません
(これは、あなたがこれをどの時点で読んでいるかに依存するので、 (これは、あなたがこれをどの時点で読んでいるかに依存します)。
<command/ls -a/ を使って確かめてください)</para> <command>ls -a</command> を使って確かめてください。</para>
<para> <para>
もっとも簡単な方法は、二つのファイルを比較するコマンド もっとも簡単な方法は、二つのファイルを比較するコマンド
@ -1394,7 +1424,7 @@ Script done, &hellip;</screen>
<para> <para>
これは、あなたの これは、あなたの
<filename>/etc/shells</filename> ファイルと <filename>/etc/shells</filename> ファイルと
新しい <filename>/etc/shells</filename> ファイルの 新しい <filename>/var/tmp/root/etc/shells</filename> ファイルの
異なる部分を表示します。 異なる部分を表示します。
これらを、あなたが書き換えたものに変更点をマージするか、 これらを、あなたが書き換えたものに変更点をマージするか、
それとも既存のファイルを新しいもので上書きするかを それとも既存のファイルを新しいもので上書きするかを
@ -1507,15 +1537,16 @@ Script done, &hellip;</screen>
<title><filename>/dev</filename> の更新</title> <title><filename>/dev</filename> の更新</title>
<note> <note>
<title>DEVFS</title>
<indexterm><primary>DEVFS</primary></indexterm> <indexterm><primary>DEVFS</primary></indexterm>
<para>もし DEVFS を利用しているなら、この作業は必要ありません。</para> <para>FreeBSD&nbsp;5.0 以降を利用しているなら、この節は飛ばし
て構いません。それらのバージョンでは、&man.devfs.5; を利用し
てデバイスノードをユーザに意識させずに割り当てています。</para>
</note> </note>
<para>ほとんどの場合、&man.mergemaster.8; は <para>ほとんどの場合、&man.mergemaster.8; は
デバイスの再構築が必要であることを検出して自動的にそれを実行するのですが、 デバイスノードの再構築が必要であることを検出して自動的にそれを
ここではデバイスの再構築を手動で行なう方法について説明します。</para> 実行するのですが、ここではデバイスノードの再構築を手動で行なう
方法について説明します。</para>
<para>安全のため、これはいくつかの段階に分けて行ないます。</para> <para>安全のため、これはいくつかの段階に分けて行ないます。</para>
@ -1556,9 +1587,9 @@ Script done, &hellip;</screen>
</step> </step>
<step> <step>
<para>デバイスファイルをつくり直します。</para> <para>デバイスノードをつくり直します。</para>
<screen>&prompt.root; <userinput/sh MAKEDEV all/</screen> <screen>&prompt.root; <userinput>sh MAKEDEV all</userinput></screen>
</step> </step>
<step> <step>
@ -1566,7 +1597,7 @@ Script done, &hellip;</screen>
もう一度、ディレクトリのファイル一覧を記録します。 もう一度、ディレクトリのファイル一覧を記録します。
今回は <filename>/var/tmp/dev2.out</filename> です。 今回は <filename>/var/tmp/dev2.out</filename> です。
この段階で、この二つのファイル一覧を調べて この段階で、この二つのファイル一覧を調べて
作成に失敗したデバイスを探してください。 作成に失敗したデバイスノードを探してください。
違いは一つもないはずなのですが、安全のために一応チェックしてください。 違いは一つもないはずなのですが、安全のために一応チェックしてください。
</para> </para>
@ -1574,12 +1605,12 @@ Script done, &hellip;</screen>
<para> <para>
次のようなコマンドを使用し、ディスクスライスエントリを 次のようなコマンドを使用し、ディスクスライスエントリを
再作成することで、ディスクスライスの矛盾を検出することができます。 再作成することで、ディスクスライスの矛盾を検出することがで
きます。</para>
<screen>&prompt.root; <userinput>sh MAKEDEV sd0s1</userinput></screen> <screen>&prompt.root; <userinput>sh MAKEDEV sd0s1</userinput></screen>
適当な組み合わせは、環境によって異なります。 <para>適当な組み合わせは、環境によって異なります。</para>
</para>
</step> </step>
</procedure> </procedure>
</sect2> </sect2>
@ -1591,7 +1622,11 @@ Script done, &hellip;</screen>
<para> <para>
この段階は、完全な更新を行なう場合にだけ必要な内容を含んでいます。 この段階は、完全な更新を行なう場合にだけ必要な内容を含んでいます。
悪影響はありませんので、省略しても構いません。 悪影響はありませんので、省略しても構いません。
</para> FreeBSD&nbsp;5.2 以降を利用しているなら、
<command>make installworld</command> の際に、ユーザのために、
<filename>/rescue</filename> ディレクトリが、静的コンパイル
されたその時点のバイナリで更新されます。ですから、
<filename>/stand</filename> を更新する必要はありません。</para>
</note> </note>
<para> <para>
@ -1617,10 +1652,10 @@ Script done, &hellip;</screen>
これで、作業はおしまいです。 これで、作業はおしまいです。
すべてがあるべき正しい場所に存在することをチェックしたら、 すべてがあるべき正しい場所に存在することをチェックしたら、
システムを再起動します。これは、単に システムを再起動します。これは、単に
&man.fastboot.8; を実行するだけです。 &man.shutdown.8; を実行するだけです。
</para> </para>
<screen>&prompt.root; <userinput>fastboot</userinput></screen> <screen>&prompt.root; <userinput>shutdown -r now</userinput></screen>
</sect2> </sect2>
<sect2> <sect2>
@ -1641,7 +1676,7 @@ Script done, &hellip;</screen>
これを修復するには、次のコマンドを実行すれば修復することができます。</para> これを修復するには、次のコマンドを実行すれば修復することができます。</para>
<screen>&prompt.root; <userinput>cd /usr/src/usr.bin/file</userinput> <screen>&prompt.root; <userinput>cd /usr/src/usr.bin/file</userinput>
&prompt.root; <userinput/make all install/</screen> &prompt.root; <userinput>make all install</userinput></screen>
</sect2> </sect2>
<sect2> <sect2>
@ -1726,16 +1761,17 @@ Script done, &hellip;</screen>
<para><filename>/usr/obj</filename> には、 <para><filename>/usr/obj</filename> には、
コンパイルの段階で生成された コンパイルの段階で生成された
すべてのオブジェクトファイルが含まれています。 すべてのオブジェクトファイルが含まれています。
通常 <quote>make world</quote> の最初の段階では、 通常 <quote>make buildworld</quote> の最初の段階では、
このディレクトリを削除して新しくつくり直すようになっています。 このディレクトリを削除して新しくつくり直すようになっています。
その場合には、構築終了後の <filename>/usr/obj</filename> その場合には、構築終了後の <filename>/usr/obj</filename>
を保存しておいても、あまり意味はありません。 を保存しておいても、あまり意味はありません。
削除すれば、大きなディスクスペースを 削除すれば、大きなディスクスペースを
(現在はだいたい 340MB あります) 解放することができます。</para> (現在はだいたい 340&nbsp;MB あります) 解放することができます。</para>
<para> <para>
しかし、もしあなたが何を行なおうとしているのか理解しているなら、 しかし、もしあなたが何を行なおうとしているのか理解しているなら、
この段階を省略して <quote>make world</quote> を行なうことができます。 この段階を省略して <quote>make buildworld</quote>
を行なうことができます。
こうすると、ほとんどのソースは再コンパイルされないため、 こうすると、ほとんどのソースは再コンパイルされないため、
構築はかなり高速化されます。 構築はかなり高速化されます。
これは裏をかえせば、デリケートな依存関係の問題によって、 これは裏をかえせば、デリケートな依存関係の問題によって、
@ -1757,7 +1793,7 @@ Script done, &hellip;</screen>
<para><emphasis>一般的に</emphasis> (そしてこれは確実でしっかりした <para><emphasis>一般的に</emphasis> (そしてこれは確実でしっかりした
規則ではありませんが)、 規則ではありませんが)、
<quote>make world</quote> の過程では、 <quote>make buildworld</quote> の過程では、
基本的なツール ( &man.gcc.1; や &man.make.1; のようなもの) 基本的なツール ( &man.gcc.1; や &man.make.1; のようなもの)
や、システムライブラリの新しいコピーが作成されます。 や、システムライブラリの新しいコピーが作成されます。
その後まず、これらのツールやライブラリはインストールされてから その後まず、これらのツールやライブラリはインストールされてから
@ -1775,7 +1811,7 @@ Script done, &hellip;</screen>
&prompt.root; <userinput>make -DNOCLEAN all</userinput></screen> &prompt.root; <userinput>make -DNOCLEAN all</userinput></screen>
<para> <para>
これは、前回の <quote>make world</quote> これは、前回の <quote>make buildworld</quote>
の作業をやり直しません。 の作業をやり直しません。
</para> </para>
@ -1785,9 +1821,10 @@ Script done, &hellip;</screen>
Building everything.. Building everything..
--------------------------------------------------------------</screen> --------------------------------------------------------------</screen>
が <quote>make world</quote> の出力にある場合には、 <para>
が <quote>make buildworld</quote> の出力にある場合には、
上のようにしてもほとんど悪影響が現れることはありません。 上のようにしてもほとんど悪影響が現れることはありません。
</para> </para>
<para> <para>
もしこのメッセージがないとか、よく分からないという場合には、 もしこのメッセージがないとか、よく分からないという場合には、
@ -1842,8 +1879,10 @@ Building everything..
</listitem> </listitem>
<listitem> <listitem>
<para>&man.make.1; に <option>-j&lt;n&gt;</option> オプションを指定して、 <para>&man.make.1; に
複数のプロセスを並列に実行させてください。 <option>-j<replaceable>n</replaceable></option> オプ
ションを指定して、複数のプロセスを並列に実行させてく
ださい。
これはプロセッサが単一か複数かによらず、 これはプロセッサが単一か複数かによらず、
どちらも同様に恩恵を得ることができます。</para> どちらも同様に恩恵を得ることができます。</para>
</listitem> </listitem>
@ -1871,7 +1910,7 @@ Building everything..
<listitem> <listitem>
<para><filename>/usr/obj</filename> のあるファイルシステムを、 <para><filename>/usr/obj</filename> のあるファイルシステムを、
<quote>async</quote> オプションをつけてマウント (もしくは <option>async</option> オプションをつけてマウント (もしくは
再マウント) してください。これによって、 再マウント) してください。これによって、
ディスクへの書き込みが非同期になります。 ディスクへの書き込みが非同期になります。
つまり、書き込み命令はすぐに完了するのに対し、 つまり、書き込み命令はすぐに完了するのに対し、
@ -1945,16 +1984,17 @@ Building everything..
<author> <author>
<firstname>Mike</firstname> <firstname>Mike</firstname>
<surname>Meyer</surname> <surname>Meyer</surname>
<contrib>寄稿: </contrib>
</author> </author>
</authorgroup> </authorgroup>
</sect1info> </sect1info>
<title>複数のマシンで追かける</title> <title>複数のマシンで追かける</title>
<indexterm> <indexterm>
<primary>NFS</primary> <primary>NFS</primary>
<secondary>複数のマシンにインストール</secondary> <secondary>複数のマシンにインストール</secondary>
</indexterm> </indexterm>
<para>同じソースツリーを追いかけたいマシンを複数持っているなら、 <para>同じソースツリーを追いかけたいマシンを複数持っているなら、
全部のマシンにソースをダウンロードして全部再構築するのは資源、 全部のマシンにソースをダウンロードして全部再構築するのは資源、
つまりディスクスペース、ネットワーク帯域、そして CPU サイクルの無駄使いに思えます。 つまりディスクスペース、ネットワーク帯域、そして CPU サイクルの無駄使いに思えます。
実際これは無駄で、解決策は 1 つのマシンに仕事のほとんどをさせ、 実際これは無駄で、解決策は 1 つのマシンに仕事のほとんどをさせ、
@ -1971,7 +2011,8 @@ Building everything..
このビルドセットから、 このビルドセットから、
<emphasis>ビルドマシン</emphasis>となるマシンを 1 台選びます。 <emphasis>ビルドマシン</emphasis>となるマシンを 1 台選びます。
ベースシステムとカーネルを構築するのはこのマシンになります。 ベースシステムとカーネルを構築するのはこのマシンになります。
理想的には、このマシンは <command>make world</command> 理想的には、このマシンは <command>make buildworld</command>
と <command>make buildkernel</command>
を実行するのに十分な CPU を持った速いマシンであるべきです。 を実行するのに十分な CPU を持った速いマシンであるべきです。
<emphasis>テストマシン</emphasis>となるべきマシンも選びたいでしょう。 <emphasis>テストマシン</emphasis>となるべきマシンも選びたいでしょう。
更新されたソフトウェアを使う前にそのマシンでテストするのです。 更新されたソフトウェアを使う前にそのマシンでテストするのです。