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

View file

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