Merge the following from the English version:

1.434 -> 1.436	contributors/article.sgml
	1.16  -> 1.17 	diskless-x/article.sgml
	1.4   -> 1.11 	fbsd-from-scratch/article.sgml
This commit is contained in:
Hiroki Sato 2004-12-29 17:28:47 +00:00
parent c949c5a344
commit bc03262347
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=23364
3 changed files with 141 additions and 88 deletions

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.434 Original revision: 1.436
$FreeBSD$ $FreeBSD$
--> -->
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [ <!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
@ -462,19 +462,11 @@
</listitem> </listitem>
</varlistentry> </varlistentry>
<varlistentry>
<term>ギャラリーページ担当</term>
<listitem>
<para>&a.phantom;</para>
</listitem>
</varlistentry>
<varlistentry> <varlistentry>
<term>商用ベンダーページ担当</term> <term>商用ベンダーページ担当</term>
<listitem> <listitem>
<para>&a.josef;</para> <para>&a.brueffer;</para>
</listitem> </listitem>
</varlistentry> </varlistentry>
@ -613,7 +605,6 @@
<para>&a.kris;,</para> <para>&a.kris;,</para>
<para>&a.marcus;,</para> <para>&a.marcus;,</para>
<para>&a.will;,</para>
<para>&a.linimon;,</para> <para>&a.linimon;,</para>
<para>&a.eik;,</para> <para>&a.eik;,</para>
<para>&a.krion;,</para> <para>&a.krion;,</para>

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.16 Original revision: 1.17
$FreeBSD$ $FreeBSD$
--> -->
<!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [ <!DOCTYPE article PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
@ -228,7 +228,7 @@ bootps dgram udp wait root /usr/libexec/bootpd bootpd /etc/bootptab</progra
<para>これらの行は次のような意味です。</para> <para>これらの行は次のような意味です。</para>
<informaltable frame="none"> <informaltable frame="none" pgwide="1">
<tgroup cols="2"> <tgroup cols="2">
<tbody> <tbody>
<row> <row>

View file

@ -4,7 +4,7 @@
<!ENTITY scratch.ap "<application>FreeBSD をゼロから設定する</application>"> <!ENTITY scratch.ap "<application>FreeBSD をゼロから設定する</application>">
<!-- <!--
$FreeBSD$ $FreeBSD$
Original revision: 1.4 Original revision: 1.11
--> -->
]> ]>
@ -21,6 +21,8 @@
</author> </author>
<copyright> <copyright>
<year>2002</year> <year>2002</year>
<year>2003</year>
<year>2004</year>
<holder>Jens Schweikhardt</holder> <holder>Jens Schweikhardt</holder>
</copyright> </copyright>
@ -123,7 +125,7 @@
</itemizedlist> </itemizedlist>
<para>システム全体を構築してインストールする方法は、 <para>システム全体を構築してインストールする方法は、
<ulink url="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html" <ulink url="http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html"
>ハンドブック</ulink>にある方法が有名です。 >ハンドブック</ulink>にある方法が有名です。
これはデフォルトで既存のシステムを置き換えるもので、 これはデフォルトで既存のシステムを置き換えるもので、
カーネルとモジュールだけが保存され、 カーネルとモジュールだけが保存され、
@ -191,8 +193,8 @@
<para>また、「&scratch.ap;」方法にも、 <para>また、「&scratch.ap;」方法にも、
次のような欠点があることを心に留めておいてください。</para> 次のような欠点があることを心に留めておいてください。</para>
<!-- XXX: A nice idea would be to write stage2.sh using a jail <!-- XXX: A nice idea would be to write stage_2.sh using a jail
that runs into the newly installed world from stage1. Having that runs into the newly installed world from stage_1. Having
properly set up a network address as the jail's primary IP properly set up a network address as the jail's primary IP
address, it might even be possible to build ports in a chroot address, it might even be possible to build ports in a chroot
without uninstalling anything from the 'host' system. But without uninstalling anything from the 'host' system. But
@ -204,12 +206,12 @@
システムは通常の用途に使用することができません。 システムは通常の用途に使用することができません。
もしプロダクションサーバを運用しているなら、 もしプロダクションサーバを運用しているなら、
第 2 段階でダウンタイムが発生することを考慮に入れなければなりません。 第 2 段階でダウンタイムが発生することを考慮に入れなければなりません。
<filename>stage_2.sh</filename> の ports のコンパイルには、 <filename>stage_2.conf.default</filename> の ports のコンパイルには、
AMD1800+、10,000rpm SCSI、1GB の RAM を搭載したシステムで、 AMD1800+、10,000rpm SCSI、1GB の RAM を搭載したシステムで、
約 4 時間かかります。</para> 約 4 時間かかります。ports の代わりに package
をインストールすれば、この時間を 10 分程度にまで大幅に短縮することも可能です。</para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect1> </sect1>
<sect1 id="prerequisites"> <sect1 id="prerequisites">
@ -249,17 +251,42 @@
教えることができること</para> 教えることができること</para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
</sect1> </sect1>
<sect1 id="stage1"> <sect1 id="stage1">
<title>第 1 段階: システムのインストール</title> <title>第 1 段階: システムのインストール</title>
<para>次に紹介するのは、わたしが作成した <filename>stage_1.sh</filename> <para>この文書の初版では、第 1 段階にひとつのシェルスクリプトを使っていました。
です。あなたが<quote>求めているシステム</quote>に合うように、 カスタマイズはすべて、そのスクリプトを編集する必要があったのですが、
カスタマイズしてください。カスタマイズしなければならないところには、 利用者からの意見を参考にして、スクリプトのコードとデータを分離することにしました。
なるべく詳細なコメントを付けてあります。重要なポイントは、 そのため新しいスクリプトでは、コードスクリプトを変更せずに、
以下のとおりです。</para> 複数の異なるシステムに異なる構成のデータを置くことが可能になりました。</para>
<para>第 1 段階のコードスクリプトは
<filename>stage_1.sh</filename> であり、次のように 1
個の引数をつけて実行すると</para>
<informalexample>
<screen>&prompt.root; <userinput>./stage_1.sh <replaceable>default</replaceable></userinput></screen>
</informalexample>
<para>設定ファイルとして
<filename>stage_1.conf.default</filename> を読み込み、
ログファイルとして
<filename>stage_1.log.default</filename> に書き込みます。</para>
<para>文末にわたしが使っている <filename>stage_1.conf.default</filename>
が添付してあります。
あなたが考える <quote>完璧なシステム</quote> に合わせて、
各設定をカスタマイズしてください。あなたが変更しそうな設定には、
詳細なコメントを追加してあります。設定スクリプトでは、
<command>create_file_systems</command>,
<command>create_etc_fstab</command>, <command>copy_files</command>,
<command>all_remaining_customization</command> という、
4 個のシェル関数を提供しなければなりません (これは、
<filename>stage_1.sh</filename> から呼ばれる順に書いてあります)。</para>
<para>考慮すべき点は、以下のとおりです。</para>
<itemizedlist> <itemizedlist>
<listitem> <listitem>
@ -287,22 +314,17 @@
<para>これは、新しいシステムの起動後にすぐに実行したいことや、 <para>これは、新しいシステムの起動後にすぐに実行したいことや、
第 2 段階の前に実行したい内容のことです。 第 2 段階の前に実行したい内容のことです。
わたしの場合は、<filename>/etc/passwd</filename> に なぜ第 1 段階で単純に新しいシステムに chroot してお気に入りの
ログインシェルとして <filename role="package">shells/zsh</filename> ports をインストールしないのかというと、理論的にも、
が登録してあるので、それになります。 実際の手順にも卵鶏問題があるからです。第 1 段階では、
厳密には、この「その他の項目」を実行する必要は必ずしもありません。 古いカーネルが動作していますが、chroot 環境には、
root ユーザでログインして、次の段階を実行できさえすればよいからです。</para> 新しいバイナリとヘッダが使われています。もしその新しいバイナリが、
古いカーネルには存在しない新しいシステムコールを使っていたら、
<para>第 1 段階で単純に好みの ports をすべてインストールしないのは、 <literal>SIGSYS, Bad system call</literal>
理論的、あるいは実践的な面においてブートストラップ問題と依存問題があるからです。 というエラーが出て停止してしまうでしょう。わたしは
第 1 段階では古いカーネルが動作しているのですが、 <filename role="package">lang/perl5</filename>
chroot した環境では新しいバイナリとヘッダが含まれています。 を構築する時にも問題が発生することを確認しています。
たとえば、新しいシステムが (新しいヘッダに従って) </para>
新しいシステムコールをサポートしていた場合、
configure スクリプトがそれを使おうとしてしまうかも知れません。
そうすると、古いカーネルは対応していないので異常終了してしまうでしょう。
わたしが <filename role="package">lang/perl5</filename>
をコンパイルした時には、他にも問題が発生するのを確認しています。</para>
</listitem> </listitem>
</itemizedlist> </itemizedlist>
@ -336,7 +358,7 @@
もし、何度も質問に答えるのが面倒であれば、 もし、何度も質問に答えるのが面倒であれば、
<emphasis>稼働中の</emphasis>システムのファイルを更新しておきましょう <emphasis>稼働中の</emphasis>システムのファイルを更新しておきましょう
(ただしこれは、そうできればの話です。 (ただしこれは、そうできればの話です。
<literal>-STABLE</literal> のシステムを実行していて、 <literal>-STABLE</literal> のシステムを実行していて、
<literal>-CURRENT</literal> を構築する、 <literal>-CURRENT</literal> を構築する、
もしくはその逆のようなケースでは、そうしてはいけません)。 もしくはその逆のようなケースでは、そうしてはいけません)。
次に <command>mergemaster</command> を実行した時、 次に <command>mergemaster</command> を実行した時、
@ -347,7 +369,8 @@
<command>set -e</command> が指定されており、 <command>set -e</command> が指定されており、
最初のコマンドが失敗 (終了コードが 0 以外) すると停止します。 最初のコマンドが失敗 (終了コードが 0 以外) すると停止します。
そのため、エラーを見逃してしまうということはないでしょう。 そのため、エラーを見逃してしまうということはないでしょう。
次に進む前に、<filename>stage_1.sh</filename> これは、タイプミスなどで未定義の変数を使った場合にもエラーになります。
次に進む前に、<filename>stage_1.conf.default</filename>
にあるエラーを全部修正しておいてください。</para> にあるエラーを全部修正しておいてください。</para>
<para><filename>stage_1.sh</filename> では <para><filename>stage_1.sh</filename> では
@ -390,29 +413,26 @@ Do you wish to delete what is left of /var/tmp/temproot.stage1? [no] <userinput>
<para>これに対する答えはどちらでも構いません。 <para>これに対する答えはどちらでも構いません。
どう答えても、スクリプトから &man.cap.mkdb.1; が実行されます。</para> どう答えても、スクリプトから &man.cap.mkdb.1; が実行されます。</para>
<para>ちゃんと予想どおりに動いているかチェックできるよう、 <para>次に示すのは、筆者の使っている <filename>stage_1.conf.default</filename>
<filename>stage_1.sh</filename> で行なわれたことは、 ですが、たくさんの部分を書き換える必要がありますので注意してください。
すべて <filename>stage_1.log</filename> に記録されます。</para> どこを書き換えればよいのかについては、コメントを読めば十分理解できると思います。</para>
<para>次に示すのは、筆者の使っている <filename>stage_1.sh</filename> です。
特にステップ 1, 2, 5, 6 は書き換える必要があるでしょう。</para>
<warning> <warning>
<para>&man.newfs.8; コマンドには注意してください。 <para>&man.newfs.8; コマンドには注意してください。
マウントずみのパーティションに新しいファイルシステムを作成することはできないものの、 マウントずみのパーティションに新しいファイルシステムを作成することはできないものの、
このスクリプトはマウントされていない このスクリプトはマウントされていない
<filename>/dev/da3s1a</filename>, <filename>/dev/vinum/var_a</filename>, <filename>/dev/da0s1a</filename>, <filename>/dev/da0s1e</filename>,
<filename>/dev/vinum/usr_a</filename> をすべて削除します。 <filename>/dev/da2s1e</filename> をすべて削除します。
ひとつ間違えれば、あなたの環境を破壊してしまう可能性がありますので、 ひとつ間違えれば、あなたの環境を破壊してしまう可能性がありますので、
デバイス名の変更は注意深く行なってください。</para> デバイス名の変更は注意深く行なってください。</para>
</warning> </warning>
<programlisting><inlinegraphic fileref="stage_1.sh" format="linespecific"></programlisting> <programlisting><inlinegraphic fileref="../../../en_US.ISO8859-1/articles/fbsd-from-scratch/stage_1.conf.default" format="linespecific"></programlisting>
<para>ダウンロード: <ulink
url="../../../en_US.ISO8859-1/articles/fbsd-from-scratch/stage_1.conf.default"><filename>stage_1.conf.default</filename>
</ulink>.</para>
<!--
<para>Download <ulink
url="stage_1.sh"><filename>stage_1.sh</filename></ulink>.</para>
-->
<para>このスクリプトを実行すると、 <para>このスクリプトを実行すると、
起動した時に次のような状態になっているシステムがインストールされます。</para> 起動した時に次のような状態になっているシステムがインストールされます。</para>
@ -458,19 +478,26 @@ Do you wish to delete what is left of /var/tmp/temproot.stage1? [no] <userinput>
これは何度でも実行でき、インストールずみの ports があれば、 これは何度でも実行でき、インストールずみの ports があれば、
飛ばして処理されます。スクリプトは <emphasis>実行せず、実行される内容だけ 飛ばして処理されます。スクリプトは <emphasis>実行せず、実行される内容だけ
を表示する (dryrun)</emphasis> オプション (<option>-n</option>) を表示する (dryrun)</emphasis> オプション (<option>-n</option>)
があります。ports リストの編集や、環境変数の設定を変更しましょう。</para> があります。実行時には <filename>stage_1.sh</filename> と同様、
設定スクリプトを示すためのひとつの引数を指定します。</para>
<informalexample>
<screen>&prompt.root; <userinput>./stage_2.sh <replaceable>default</replaceable></userinput></screen>
</informalexample>
<para>これは、ports のリストを
<filename>stage_2.conf.default</filename> というファイルから読み込みます。</para>
<para>ports リストは、空白で区切られた 2 個以上のキーワードからなっています。 <para>ports リストは、空白で区切られた 2 個以上のキーワードからなっています。
カテゴリ、port 名に始まり、オプションとして カテゴリ、port 名に始まり、オプションとして
port をコンパイルしてインストールするためのコマンド port をコンパイルしてインストールするためのコマンド
(デフォルトは <command>make install</command>) が続きます。 (デフォルトは <command>make install BATCH=yes &lt; /dev/null</command>) が続きます。
空白行と # から始まる行は無視されます。 空白行と # から始まる行は無視されます。
おそらく多くの場合に考えなければならないのは、カテゴリ名と port 名だけでしょう。 おそらく多くの場合に考えなければならないのは、カテゴリ名と port 名だけでしょう。
ports によっては、たとえば次のように ports によっては、たとえば次のように
<command>make</command> 変数を使って微調整することができます。</para> <command>make</command> 変数を使って微調整することができます。</para>
<programlisting>www mozilla make WITHOUT_MAILNEWS=yes WITHOUT_CHATZILLA=yes install <programlisting>www mozilla make WITHOUT_MAILNEWS=yes WITHOUT_CHATZILLA=yes install</programlisting>
mail procmail make BATCH=yes install</programlisting>
<para>実際には任意のシェルコマンドを指定できますので、 <para>実際には任意のシェルコマンドを指定できますので、
<command>make</command> を使う以外にも応用は可能です。</para> <command>make</command> を使う以外にも応用は可能です。</para>
@ -501,19 +528,15 @@ news inn-stable CONFIGURE_ARGS="--enable-uucp-rnews --enable-setgid-inews" make
ある port が飛ばされたり、動作が止まってしまうようなことがあれば、 ある port が飛ばされたり、動作が止まってしまうようなことがあれば、
おそらくこれが原因でしょう。</para> おそらくこれが原因でしょう。</para>
<para>次に示すのが、実際の <filename>stage_2.sh</filename> です。 <para>次に示すのは <filename>stage_2.conf.default</filename> です。
これは、インストールされる port それぞれに対して これは、インストールされる port それぞれに対して
<filename>LOGDIR/category+port</filename> <filename>LOGDIR/category+port</filename>
という名前のログファイルを作成します。 という名前のログファイルが作成されます。</para>
<filename>stage_2.sh</filename> が共有パーティションになければ、
実行前に新しいシステムにこれをコピーするようにしてください。</para>
<programlisting><inlinegraphic fileref="stage_2.sh" format="linespecific"></programlisting> <programlisting><inlinegraphic fileref="../../../en_US.ISO8859-1/articles/fbsd-from-scratch/stage_2.conf.default" format="linespecific"></programlisting>
<!-- <para>ダウンロード: <ulink
<para>Download <ulink url="../../../en_US.ISO8859-1/articles/fbsd-from-scratch/stage_2.conf.default"><filename>stage_2.conf.default</filename></ulink>.</para>
url="stage_2.sh"><filename>stage_2.sh</filename></ulink>.</para>
-->
</sect1> </sect1>
<sect1 id="stage3"> <sect1 id="stage3">
@ -538,13 +561,6 @@ news inn-stable CONFIGURE_ARGS="--enable-uucp-rnews --enable-setgid-inews" make
新しいシステムのどこかにコピーするなどして、 新しいシステムのどこかにコピーするなどして、
新しいシステムが起動した時に 新しいシステムが起動した時に
<filename>stage_3.mk</filename> が使えるようにしておきましょう。</para> <filename>stage_3.mk</filename> が使えるようにしておきましょう。</para>
<programlisting><inlinegraphic fileref="stage_3.mk" format="linespecific"></programlisting>
<!--
<para>Download <ulink
url="stage_3.mk"><filename>stage_3.mk</filename></ulink>.</para>
-->
</sect1> </sect1>
<sect1 id="limitations"> <sect1 id="limitations">
@ -558,8 +574,8 @@ news inn-stable CONFIGURE_ARGS="--enable-uucp-rnews --enable-setgid-inews" make
そのように入力が標準入力から読みとられる場合は、 そのように入力が標準入力から読みとられる場合は、
適切な回答をインストールコマンド (通常は <command>make 適切な回答をインストールコマンド (通常は <command>make
install</command>) にパイプで渡すことができます install</command>) にパイプで渡すことができます
(<filename>stage_2.sh</filename> の (わたしが <filename>stage_2.conf.default</filename> の
<filename role="package">java/linux-sun-jdk13</filename> <filename role="package">java/linux-sun-jdk14</filename>
でとった方法がそうです)。</para> でとった方法がそうです)。</para>
<para>しかしこの方法は、たとえば <filename <para>しかしこの方法は、たとえば <filename
@ -602,13 +618,25 @@ Creating bzip'd tar ball in '/usr/ports/editors/staroffice52/staroffice-5.2_1.tb
サードパーティ製ソフトウェアには、 サードパーティ製ソフトウェアには、
リリースのたびに設定ファイルのフォーマットが変更され、 リリースのたびに設定ファイルのフォーマットが変更され、
わたしをイライラさせるようなものもあります。 わたしをイライラさせるようなものもあります。
注意すること以外にできることはありませんが、 このような予告なしの変更を検出するために、
特にメジャーバージョンがあがった時は気を付けてください。 わたしは変更した設定ファイルを <filename>stage_3.mk</filename>
わたしは以前、ウェブサーバ、 と同じディレクトリにコピーしておき、
ニュースサーバ、ニュースリーダのファイルを書き換えたり、 <application>make</application> ルールを使って結果を比較しています。
書き直すはめになったことがあります。 たとえば、<application>apache</application> の
活発に開発が進められているソフトウェアはすべて、 <filename>httpd.conf</filename> であれば、次のような
設定ファイルの書式が変更されていないか確認しておきましょう。</para> <command>config_apache</command> というターゲットを用意しておきます。
<programlisting>
@if ! cmp -s /usr/local/etc/apache2/httpd.conf httpd.conf; then \
echo "ATTENTION: the httpd.conf has changed. Please examine if"; \
echo "the modifications are still correct. Here is the diff:"; \
diff -u /usr/local/etc/apache2/httpd.conf httpd.conf; \
fi
</programlisting>
<para>差分が無害なものであると確認できたら、
<command>cp /usr/local/etc/apache2/httpd.conf
httpd.conf</command> を実行するわけです。</para>
<para>わたしは <para>わたしは
<literal>5-CURRENT</literal> から <literal>5-CURRENT</literal> <literal>5-CURRENT</literal> から <literal>5-CURRENT</literal>
@ -624,10 +652,44 @@ Creating bzip'd tar ball in '/usr/ports/editors/staroffice52/staroffice-5.2_1.tb
<literal>4-STABLE</literal> のユーザは、次の点を考慮してください。</para> <literal>4-STABLE</literal> のユーザは、次の点を考慮してください。</para>
<note> <note>
<para>デバイスファイルシステム (&man.devfs.5;) を使ってなければ、 <para>デバイスファイルシステム &man.devfs.5; を使ってなければ、
第 1 段階のステップ 6 で &man.MAKEDEV.8; を使い、 <command>all_remaining_customization</command> の中で
&man.MAKEDEV.8; を使い、
ハードウェア用のデバイスファイルを作成するとよいでしょう。</para> ハードウェア用のデバイスファイルを作成するとよいでしょう。</para>
</note> </note>
</sect1>
<sect1 id="files">
<title>ファイル</title>
<para>ここでは、すでに説明した設定ファイルの他に必要な、
3 個のファイルを示します。</para>
<para>これは <ulink
url="../../../en_US.ISO8859-1/articles/fbsd-from-scratch/stage_1.sh"><filename>stage_1.sh</filename></ulink>
スクリプトです。内容を変更する必要はないでしょう。</para>
<programlisting><inlinegraphic fileref="../../../en_US.ISO8859-1/articles/fbsd-from-scratch/stage_1.sh" format="linespecific"></programlisting>
<para>ダウンロード: <ulink
url="../../../en_US.ISO8859-1/articles/fbsd-from-scratch/stage_1.sh"><filename>stage_1.sh</filename></ulink>.</para>
<para>これは <ulink
url="../../../en_US.ISO8859-1/articles/fbsd-from-scratch/stage_2.sh"><filename>stage_2.sh</filename></ulink>
スクリプトです。最初の部分にある変数を変更しましょう。</para>
<programlisting><inlinegraphic fileref="../../../en_US.ISO8859-1/articles/fbsd-from-scratch/stage_2.sh" format="linespecific"></programlisting>
<para>ダウンロード: <ulink
url="../../../en_US.ISO8859-1/articles/fbsd-from-scratch/stage_2.sh"><filename>stage_2.sh</filename></ulink>.</para>
<para>これは、わたしが使っている <ulink
url="../../../en_US.ISO8859-1/articles/fbsd-from-scratch/stage_3.mk"><filename>stage_3.mk</filename></ulink> です。
設定を自動的におこなうための手順を、ここに入れます。</para>
<programlisting><inlinegraphic fileref="../../../en_US.ISO8859-1/articles/fbsd-from-scratch/stage_3.mk" format="linespecific"></programlisting>
<para>ダウンロード: <ulink
url="../../../en_US.ISO8859-1/articles/fbsd-from-scratch/stage_3.mk"><filename>stage_3.mk</filename></ulink>.</para>
</sect1> </sect1>
</article> </article>