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

View file

@ -2,7 +2,7 @@
The FreeBSD Documentation Project
The FreeBSD Japanese Documentation Project
Original revision: 1.16
Original revision: 1.17
$FreeBSD$
-->
<!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>
<informaltable frame="none">
<informaltable frame="none" pgwide="1">
<tgroup cols="2">
<tbody>
<row>

View file

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