diff --git a/ja_JP.eucJP/books/handbook/basics/chapter.sgml b/ja_JP.eucJP/books/handbook/basics/chapter.sgml index b08c4aeb91..0ce4d6974b 100644 --- a/ja_JP.eucJP/books/handbook/basics/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/basics/chapter.sgml @@ -1,652 +1,1563 @@ Chris Shumway 改訂 Unix の基礎知識 訳: &a.jp.nakai;, 1996 年 10 月 12 日. この章では 基礎知識(basics) 改訂: Chris Shumway cshumway@osd.bsdi.com, 2000 年 3 月 10 日. この章では FreeBSD オペレーティングシステムの基本的なコマンドと機能について記述しています. + ここに書かれてあることのほとんどは, + どんな Unix オペレーティングシステムにもあてはまります. + この章に書いてあることに馴染みがあるなら, + この章は気軽に流し読みしてください. あなたが FreeBSD の初心者なら, 何か質問する前にこの章を読んでおいた方がきっといいはずです. + + この章を読んで分かることは, 次のようなことです. + + + + Unix のファイルの許可属性の仕組み + + + プロセス, デーモンとシグナルとはなにか + + + シェルとはなにか. また, デフォルトのログイン環境を変える方法 + + + テキストエディタの基本的な使い方 + + + さらに詳しい情報を得るためのマニュアルページの読み方 + + + 許可属性 Unix - FreeBSD は BSD Unix を起源とする歴史を持ち, - いくつかの鍵となる Unix 思想にもとづいた基本設計がされています. + FreeBSD は BSD Unix の直系の子孫であり, + いくつかの鍵となる Unix 思想にもとづいています. まず最も際だった特徴として最初に言えるのは, FreeBSD がマルチユーザのオペレーティングシステムだということです. FreeBSD は同時に働いている複数のユーザすべてを, 完全に分離したタスク上で処理する能力を持っています. また FreeBSD は, ハードウェアデバイス, 周辺装置, メモリ, CPU 時間等への要求を, 各ユーザが平等に利用できるように適切に共有し, 管理する役割を担っています. システムがマルチユーザをサポートしているため, システムが管理する資源はすべて, 誰がその資源を読み・書き・実行できるかを支配する, 一組の許可属性を持っています. これらの許可属性は 3 つの部分からなる 2 桁の 8 進数の形で格納されています. それはそのファイルの所有者(owner)に対するもの, そのファイルが所属するグループ(group)に対するもの, その他(others)に対するものの 3 つです. これを数字を使って表現すると, 次のようになります. 許可属性(permissions) ファイルの許可属性(permissions) 許可属性 ディレクトリの表示 0 読み込み不可, 書き込み不可, 実行不可 --- 1 読み込み不可, 書き込み不可, 実行可能 --x 2 読み込み不可, 書き込み可能, 実行不可 -w- 3 読み込み不可, 書き込み可能, 実行可能 -wx 4 読み込み可能, 書き込み不可, 実行不可 r-- 5 読み込み可能, 書き込み不可, 実行可能 r-x 6 読み込み可能, 書き込み可能, 実行不可 rw- 7 読み込み可能, 書き込み可能, 実行可能 rwx ls ディレクトリ - ls -l で表示される詳細なディレクトリリストでは, + &man.ls.1; に対してコマンドライン引数 を使うと, + 詳細なディレクトリリストを見ることができ, ファイルの所有者, グループ, その他への許可属性を示す欄があるのがわかります. - 次に示すのは, その部分だけ抜き出したものです. + 次に示すのは, ls -l + の最初の部分だけ抜き出したものです. -rw-r--r-- - 左から右へ見たときに最初にあたる文字は, それが + 最初の(一番左の)文字は, それが 普通のファイルなのか, ディレクトリなのか, キャラクタ型のデバイス特殊ファイルなのか, ブロック型のデバイス特殊ファイルなのか, ソケットなのか, その他の特殊な疑似ファイルデバイスなのかといった種類を示す特別な文字です. - その次の rw- と書かれた 3 文字は, + この場合, - という文字は, + 普通のファイルであることを示します. + この例でその次に来る rw- と書かれた 3 文字は, そのファイルの所有者に許可を与えるものです. その次の r-- の 3 文字は, そのファイルが所属しているグループに許可を与えます. 最後の r-- の 3 文字は, システムに存在するその他のユーザに許可を与えます. - は許可が与えられていないことを示します. このファイルの例では, ファイルの所有者はこのファイルを読み書きでき, ファイルの所属しているグループに属するユーザはファイルを読むことだけでき, そのどちらでもないユーザは, このファイルを読むだけできるように許可属性が与えられています. 上の表によれば, このファイルに与えられた許可属性は 644 となります. ここで各数字は, このファイルの許可属性の 3 つの部分を表しています. ファイルについてはここまでの説明で十分です. しかし, デバイスの場合の許可属性はどのようにコントロールされているのでしょうか? FreeBSD は, 大部分のハードウェアをファイルとして取り扱います. そのため, プログラムからは普通のファイルとまったく同じようにオープンし, データの読み書きができるようになっています. これらのデバイス特殊ファイルは /dev ディレクトリに収められています. ディレクトリもまた, ファイルと同様に扱われます. それは読み込み/書き込み/実行の許可属性を持ちます. ディレクトリの実行ビットはファイルのそれとは少し違った意味を持ちます. ディレクトリが実行可能になっているとき, - それはその中が探索できること, たとえば, - そのディレクトリ中のファイルリストが参照できることを意味します. + そのディレクトリに移動することができます. + つまり, そのディレクトリに cd することが可能です. + また, 実行可能属性がついているディレクトリでは, + 名前が分かっているファイルにアクセスすることもできます + (もちろんそのファイル自体の許可属性によります). - この他にも許可属性はありますが, いずれも + 特に, ディレクトリの中の一覧を表示させるためには, + そのディレクトリに読み込み属性が設定されていなければなりません. + 一方, 名前が分かっているファイルを削除するためには, + そのファイルが含まれているディレクトリに + 書き込み属性実行属性 + の両方が必要です. + + この他にも許可属性ビットはありますが, いずれも setuid バイナリや sticky ディレクトリなどといった特殊な状況で使われます. ファイルの許可属性そのものについて, また, それらの設定のしかたに関する詳しい情報は, &man.chmod.1; マニュアルページを参照してください. ディレクトリ構造 ディレクトリの階層構造 - FreeBSD の用いているファイルシステムは多くの基本的なシステム動作を決定するもので, - その階層構造は極めて重要です. - ディレクトリ構造に関する完全な記述が &man.hier.7; - のマニュアルページにありますので, ここでは繰り返しません. - 詳しい情報は, &man.hier.7; をご覧ください. - - - 最も重要なディレクトリは, すべてのディレクトリの根(root)にあたる - / ディレクトリです. このディレクトリは起動時に一番最初にマウントされ, - 起動時に必要な基本システムが含まれています. + FreeBSD のディレクトリ構造は, + システム全体を理解するに当たって重要です. + 把握しておくべき最も重要なものは, / + ディレクトリです. このディレクトリは起動時に一番最初にマウントされ, + オペレーティングシステムをマルチユーザで動作させるために + 必要な基本システムが含まれています. また, ルートディレクトリには, - 追加したい他のファイルシステムをマウントするためのマウントポイントも含まれます. + 他のファイルシステムをマウントするためのマウントポイントも含まれます. マウントポイントとはルートファイルシステムに存在する, 追加のファイルシステムと接続するためのディレクトリのことです. 標準的なマウントポイントには /usr, /var, /mnt, /cdrom があります. 通常これらのディレクトリについては, /etc/fstab というファイル中のエントリが参照されます. /etc/fstab さまざまなファイルシステムとマウントポイントの表であり, システムが参照します. /etc/fstab に書かれたファイルシステムは オプションが指定されていなければ, 起動時に &man.rc.8; スクリプトによって自動的にマウントされます. /etc/fstab ファイルの書式やオプションに関しての詳細は &man.fstab.5; をご覧ください. + + ファイルシステム構造を網羅した説明は &man.hier.7; に書かれています. + ここでは, もっともよく使われるディレクトリについて簡単に + 見るだけで十分でしょう. + + + + + + + ディレクトリ + 説明 + + + + + / + ファイルシステムのルートディレクトリ + + + + /bin/ + シングルユーザ環境とマルチユーザ環境の両方で重要な + ユーザユーティリティ + + + + /boot/ + オペレーティングシステムの起動時に使われるプログラムと設定ファイル + + + + /boot/defaults/ + デフォルトの起動設定ファイル; &man.loader.conf.5; 参照 + + + + /dev/ + デバイスノード; &man.intro.4; 参照 + + + + /etc/ + システム設定ファイルとスクリプト + + + + /etc/defaults/ + デフォルトのシステム設定ファイル; &man.rc.8; 参照 + + + + /etc/mail/ + &man.sendmail.8; のようなメール転送エージェントの設定ファイル + + + + /etc/namedb/ + named 設定ファイル; &man.named.8; 参照 + + + + /etc/periodic/ + &man.cron.8; 経由で毎日・毎週・毎月実行されるスクリプト; + &man.periodic.8; 参照 + + + + /etc/ppp/ + ppp 設定ファイル; + &man.ppp.8; 参照 + + + + /mnt/ + システム管理者が一時的なマウントポイントとしてよく使う + 空のディレクトリ + + + + /proc/ + プロセスファイルシステム; &man.procfs.5; と + &man.mount.procfs.8; 参照 + + + + /root/ + root アカウントのホームディレクトリ + + + + /sbin/ + シングルユーザ環境とマルチユーザ環境の両方で重要な + システムプログラムと管理ユーティリティ + + + + /stand/ + スタンドアロン環境で使われるプログラム + + + + + /tmp/ + 一時的なファイル, &man.mfs.8; メモリファイルシステムであることが多い + (普通 /tmp + の内容はシステムの再起動で失われる) + + + + + /usr/ + 大部分のユーザユーティリティとアプリケーション + + + + /usr/bin/ + よく使うユーティリティとプログラミングツールとアプリケーション + + + + /usr/include/ + C の標準ヘッダファイル + + + + /usr/lib/ + ライブラリ + + + + + /usr/libdata/ + いろいろなユーティリティのデータファイル + + + + /usr/libexec/ + システムデーモンとシステムユーティリティ + (他のプログラムから実行される) + + + + /usr/local/ + + ローカルのプログラムやライブラリなど. + FreeBSD ports 構成のデフォルトインストール先としても使われます. + /usr/local 内では, + &man.hier.7; に書かれている /usr + のための一般構造が使われます. + 例外は man ディレクトリで, + /usr/local/share の下ではなく + /usr/local の下に直接置かれ, + ports 関係文書は + share/doc/port + にあります. + + + + + /usr/obj/ + /usr/src ツリーのビルドで作られる + アーキテクチャ依存のターゲットツリー + + + + /usr/ports + FreeBSD ports 集 (インストールしなくてもよい). + + + + /usr/sbin/ + (ユーザが実行する)システムデーモンとシステムユーティリティ + + + + /usr/share/ + アーキテクチャに依存しないファイル + + + + /usr/src/ + BSD のソースファイルまたはローカルのソースファイル, + あるいは両方 + + + + /usr/X11R6/ + X11R6 のプログラム, ライブラリなど(インストールしなくてもよい) + + + + /var/ + ログ・一時的なファイル・スプールファイルなどいろいろな用途 + + + + + /var/log/ + いろいろなシステムログファイル + + + + /var/mail/ + ユーザのメールボックスファイル + + + + /var/spool/ + プリンタとメールシステムのスプールディレクトリなどなど + + + + /var/tmp/ + システムが再起動しても消えない一時的なファイル + + + + /var/yp + NIS のマップ + + + + + + + + + + + ファイルシステムのマウントとアンマウント + + ファイルシステムは / + をルート (根) とする木構造として考えると視覚的に理解しやすいでしょう. + ルートディレクトリにある + /dev/usr, + その他のディレクトリは枝に相当し, + それらには, /usr/local + などのように, さらに枝分かれすることができます. + + ルートファイルシステム + さまざまな理由がありますが, + ディレクトリをいくつかの異なるファイルシステム上に構築するのが良いでしょう. + たとえば /var には, + log/spool/ + など, さまざまな種類の一時ファイルを置くディレクトリがあるため, + あふれてしまう可能性があります. + ルートファイルシステムをあふれさせるのは得策ではありませんので, + 普通は /var/ + から分離します. + + また, 次のような場合も, ディレクトリツリーを + 別のファイルシステムに置く理由として良くあげられます. + それは, たとえば物理的に別のディスクにディレクトリツリーを置く場合, + ネットワークファイルシステム (Network File System) や + CDROM ドライブのような別の仮想ディスクに置くという場合です. + + + <filename>fstab</filename> ファイル + + ファイルシステム + fstab を使ったマウント + + + /etc/fstab に書かれているファイルシステムは + ( オプションがなければ) + 起動プロセスの途中で + 自動的にマウントされます. + + /etc/fstab ファイルは, + 次のような書式で書かれた行のリストになっています. + + device /mount-point fstype options dumpfreq passno + + + + device + + デバイスの名前 (存在していなければなりません). + に説明があります. + + + + + mount-point + + + ファイルシステムがマウントするディレクトリの名前 + (存在していなければなりません). + + + + + fstype + + + &man.mount.8; に渡されるファイルシステムタイプ. + FreeBSD ファイルシステムのデフォルトは + ufs です. + + + + + options + + + 読み書きするファイルシステムには + , 読み込み専用のファイルシステムには + を, 必要な他のオプションの前に指定します. + よく使われるオプションは で, + 起動時にはマウントされないファイルシステムに使います. + その他のオプションは &man.mount.8; + マニュアルページに載っています. + + + + + dumpfreq + + + これは &man.dump.8; が使うもので, + どのファイルシステムにダンプが必要なのかを決めます. + この項目がなければ, 0 であるものとみなされます. + + + + + passno + + + これはファイルシステムをチェックする順番を決めます. + ファイルシステムチェックを飛ばしたいファイルシステムには, + passno を 0 に設定してください. + ルートファイルシステム + (どれよりも先にチェックしなければなりません) + は passno を 1 に設定してください. + 他のファイルシステムの passno + は 1 以上に設定してください. + 同じ passno のファイルシステムがあった場合, + &man.fsck.8; は可能であれば並行してファイルシステムのチェック + を行なおうとします. + + + + + + + <command>mount</command> コマンド + + ファイルシステム + マウント + + + &man.mount.8; コマンドは, + ファイルシステムをマウントするために使われるものです. + + 基本的には, 次のように使います. + + + &prompt.root; mount device mountpoint + + + &man.mount.8; マニュアルページにはたくさんのオプションが書かれていますが, + いちばんよく使われるのは次のものです. + + + マウントオプション + + + + + + /etc/fstab + にある全てのファイルシステムをマウントします. + 例外は noauto の印がついているものと, + フラグで除外されたものと, + すでにマウントされているファイルシステムです. + + + + + + + + 実際にシステムコールする以外の全てのことをします. + このオプションは + フラグと組み合わせて使い, + &man.mount.8; が実際なにをしようとしているのか調べるのに便利です. + + + + + + + + クリーンでないファイルシステムを強制的にマウントします + (危険です). もしくは, ファイルシステムのマウント状態を + 読み書き可能から読み込みのみに変更するとき, + 書き込みアクセスを強制的に取り消します. + + + + + + + + ファイルシステムを読み込み専用でマウントします. + これは 引数を + オプションに使うのと同じです. + + + + + + fstype + + + ファイルシステムを指定のファイルシステムタイプでマウントします. + または, を使った場合, + 指定したタイプのファイルシステムのみマウントします. + + デフォルトのファイルシステムタイプは + ufs です. + + + + + + + + ファイルシステムのマウントオプションを更新します. + + + + + + + + 詳細な出力にします. + + + + + + + + ファイルシステムを読み書き可能にマウントします. + + + + + には, + 次のようなオプションを複数カンマで区切って指定します. + 以下に挙げるのはその一部です. + + + + nodev + + + ファイルシステム上のスペシャルデバイスを解釈しません. + セキュリティのために有用なオプションです. + + + + + noexec + + + そのファイルシステム上のバイナリの実行を禁止します. + セキュリティのために有用なオプションです. + + + + + nosuid + + + そのファイルシステム上の setuid や setgid フラグを解釈しません. + これもセキュリティのために有用なオプションです. + + + + + + + <command>umount</command> コマンド + + ファイルシステム + アンマウント + + + &man.umount.8; コマンドは, パラメータとしてマウントポイントの一つ, + デバイス名, もしくは + といったオプションを取ります. + + いずれの形式でも で強制的なアンマウントを行ない, + で詳細な出力を出します. + ただしほとんどの場合, は使わないほうがよいでしょう. + 強制的にファイルシステムをアンマウントすると, + 計算機がクラッシュしたりファイルシステム上部のデータが + 破壊されたりする恐れがあるためです. + + オプション + はマウントされているファイルシステムすべてをアンマウントするのに使います. + にファイルシステムタイプを指定すると, + 指定されたものだけがアンマウントされます. + また, を使うとルートファイルシステムはアンマウントしません. + + + + + プロセス + + FreeBSD はマルチタスクのオペレーティングシステムです. + つまり, 1つ以上のプログラムがあたかも同時に動いているかのように見える, + ということです. 動作中のプログラムはそれぞれ + プロセス と呼ばれます. + コマンドを実行すると, 最低でも1つの新しいプロセスがスタートします. + システムを正常に機能させるために常に動作しているシステムプロセスもたくさんあります. + + 各プロセスはプロセス ID, もしくは + PID と呼ばれる数字でただ一つに識別されます. + また, ファイルのように各プロセスには所有者とグループがあります. + 所有者とグループの情報は, + これまでに見たファイル許可属性を用い, + そのプロセスが開けるファイルやデバイスを決定するために使われます. + 多くのプロセスには親プロセスもあります. + 親プロセスとは, そのプロセスをスタートさせたプロセスのことです. + 例えば, シェルにコマンドを打ち込んでいるときはシェルがプロセスで, + 動かすコマンドもまたどれもプロセスです. + このようにして起動するプロセスはそれぞれシェルが親プロセスになります. + これの例外は init という特別なプロセスです. + init は常に最初のプロセスなので, + PID は必ず 1 になります. + init は FreeBSD + がスタートするときカーネルによって自動的に起動されます. + + &man.ps.1; と &man.top.1; という2つのコマンドが + システム上のプロセスを確認するために特に便利です. + &man.ps.1; コマンドは現在動作中のプロセスのリストを見るために使い, + PID やプロセスが使っているメモリの量, + どういうコマンドラインで起動されたのか, + などを表示させることができます. + &man.top.1; コマンドは動作中の全てのプロセスを表示し, + 数秒ごとに表示を更新するので, + 計算機がなにをしているのかインタラクティブに知ることができます. + + デフォルトでは, &man.ps.1; は動作中かつ所有者が自分のコマンドのみを表示します. + 例えば: + + &prompt.user; ps + PID TT STAT TIME COMMAND + 298 p0 Ss 0:01.10 tcsh + 7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14) +37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14) +48630 p0 S 2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi +48730 p0 IW 0:00.00 (dns helper) (navigator-linux-) +72210 p0 R+ 0:00.00 ps + 390 p1 Is 0:01.14 tcsh + 7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y + 6688 p3 IWs 0:00.00 tcsh +10735 p4 IWs 0:00.00 tcsh +20256 p5 IWs 0:00.00 tcsh + 262 v0 IWs 0:00.00 -tcsh (tcsh) + 270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16 + 280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16 + 284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc + 285 v0 S 0:38.45 /usr/X11R6/bin/sawfish + + この例で分かるとおり, + &man.ps.1; の出力はいくつかの行に整形されています. + PID は先ほど見たプロセス ID です. + PID は 1 から順に 99999 まで割り当てられ, + 足りなくなると最初に戻って使い回されます. + TT はプログラムが動いている tty を示します. + 差し当たって無視してもかまわないでしょう. + STAT はプログラムの状態を示しますが, + これもまた無視してよいでしょう. + TIME はプログラムがその CPU + 上で動いている時間の長さです—これはプログラムをスタートさせたとき + からの経過時間であるとはかぎりません. + CPU 上で時間を使う必要があるまでかなりの時間を費すようなプログラムもあるからです. + 最後に, COMMAND + はそのプログラムを起動するのに使われたコマンドラインとなります. + + &man.ps.1; は表示する情報を変えるためのオプションをたくさんサポートしています. + いちばん便利なのは auxww でしょう. + は自分のプロセスだけではなく, + 動作中のプロセス全部についての情報を表示します. + はプロセスの所有者の名前をメモリ使用量と同様に表示します. + はデーモンプロセスについての情報を表示し, + で, スクリーンに入りきらないほど長くなったコマンドラインでも省略せず, + &man.ps.1; に全コマンドラインを表示させます. + + &man.top.1; の出力も同様です. 例は以下の通りです. + + &prompt.user; top +last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:10 +47 processes: 1 running, 46 sleeping +CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle +Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free +Swap: 256M Total, 38M Used, 217M Free, 15% Inuse + + PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND +72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top + 7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14 + 281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA + 296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm +48630 nik 2 0 29816K 9148K select 3:18 0.00% 0.00% navigator-linu + 175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd + 7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt +... + + 出力は2つのセクションに分かれています. + ヘッダ(最初の5行です)は動作している最新のプロセスの PID, + システムの平均負荷(システムがどれくらい忙しいかの指標), + システムの稼働時間(最後の再起動からの時間) + と現在の時刻を示します. + ヘッダの中の他の数字は動作中のプロセスの数(この場合 47 ですね), + 使われているメモリとスワップ領域の量, + そしてシステムが異なる CPU 状態に消費した時間と関係します. + + その下には &man.ps.1; の出力と同じような情報を持った行が続きます. + 前と同様 PID にユーザ名, 消費 CPU 時間と実行中のコマンドを知ることができます. + &man.top.1; を使うとデフォルトでプロセスが使っているメモリ容量も分かります. + メモリ使用量の欄は2項目に分かれており, + 一方は合計使用量, + そしてもう一方は実使用量です—合計使用量はアプリケーションが必要としているメモリ量で, + 実使用量はその時点で実際に使われているメモリ量です. + この例では, Netscape がだいたい 30MB の RAM を必要としていますが, + いまのところ 9MB しか使っていないことが分かります. + + &man.top.1; は自動的に2秒ごとに画面を更新します. + オプションを使えば更新間隔を変更することができます. + + + + デーモン, シグナルとプロセス終了 + + エディタを使っている場合, エディタを操作するのは簡単です. + ファイルを開く, などと動かせばよいのです. + このように操作できるのは, エディタにそういった機能があり, + かつエディタが端末に関連づけられているからです. + 一方, ユーザから始終入力があるように設計されていないプログラムもあり, + そういったプログラムは最初から端末と切り離されます. + 例えば, ウェブサーバは一日中ウェブのリクエストばかり処理するので, + 通常全く入力を必要としません. + サイトからサイトへとメールを転送するプログラムも, + こういった種類のアプリケーションの一例です. + + このようなプログラムは, デーモンと呼ばれます. + デーモンはギリシャ神話の登場人物で, + 善でも悪でもなく, 大雑把にいうと, + 人間のために役立つことをしてくれる小さな妖精さんです. + 今日の便利なウェブサーバやメールサーバととてもよく似ていますね. + このため, 長い間 BSD のマスコットはスニーカーをはいてフォークを携えた + かわいらしい姿のデーモンなのです. + + 通常デーモンとして動作するプログラムには末尾に d + を持った名前をつける慣習があります. + BIND は Berkeley Internet Name Daemon ですし + (実際実行されるプログラムは named という名前です), + Apache ウェブサーバのプログラムは + httpd と呼ばれますし, + ラインプリンタスプーリングデーモンは lpd, + などなどです. + これは単なる慣習で, しっかりがっちりとしたルールではありません. + 例えば, Sendmail + アプリケーションの主なメールデーモンは + sendmail という名前で, + 連想しそうな maild ではありません. + + 時々, デーモンプロセスと通信したいときがあります. + この通信はシグナルと呼ばれ, + デーモンにシグナルを送ることによってデーモン + (に限らずどんな動作中のプロセスでも)と通信することができます. + 送信可能なシグナルはたくさんあります—特別な意味があるものもあれば, + アプリケーションによって解釈されるものもありますし, + アプリケーションがシグナルをどう解釈するかは + そのアプリケーションの文章を読めば分かるでしょう. + 自分が持っているプロセスにしかシグナルを送ることはできません. + 他人のプロセスに &man.kill.1; や &man.kill.2; + を使ってシグナルを送っても, 許可されないでしょう. + これの例外は root ユーザで, + ルートユーザは誰のプロセスでもシグナルを送ることができます. + + FreeBSD もアプリケーションにシグナルを送ることがあります. + アプリケーションを下手に書くと, + 予想外のメモリにアクセスしようとするので, + FreeBSD がプロセスに セグメンテーション違反 + シグナル (SIGSEGV) を送ります. + ある程度の時間が経ったら &man.alarm.3; + システムコールを使って警告してもらうようなアプリケーションには, + 警告シグナル (SIGALRM) が送信される, + などです. + + プロセスを止めるためには2つのシグナル, + SIGTERMSIGKILL + を使います. + SIGTERM は穏かにプロセスを終了させる方法です. + プロセスはシグナル受け取ることができ, + 終了させたいのだなということを理解し, + 開いているログファイルを全部を閉じ, + 一般的に終了前にしていたことを終えることができます. + 中断できない処理の途中だと, SIGTERM + をプロセスが無視することもあるかもしれません. + + プロセスは SIGKILL を無視することができません. + これは, なにをしていようが構わないから今すぐ止まれ + というシグナルです. プロセスに SIGKILL を送ると, + FreeBSD はそのプロセスをそこで止めます + 正確ではありません—中断できないものはわずかながら存在します. + 例えば, プロセスがネットワーク上の別の計算機にあるファイルを読もうとして, + その計算機がなんらかの理由 + (電源を落とされたとか, ネットワークに問題があるとか) + でいなくなった場合, そのプロセスは中断不可能と言われます. + 最終的にはそのプロセスはタイムアウトします. 普通は2分後です. + タイムアウトした直後, そのプロセスは終了します. + . + + 使う可能性のあるシグナルは, 他に + SIGHUP, SIGUSR1, と + SIGUSR2 があります. + これらは一般的な用途のシグナルで, + このシグナルが送信されたときアプリケーションによって別のことをします. + + ウェブサーバの設定ファイルを変更したとしましょう—ウェブサーバに新しい設定を再読み込みさせたいですね. + httpd を止めて再起動することもできますが, + そうするとウェブサーバは一瞬ながら停止してしまいますし, + ちょっとでも止まってほしくないこともあるでしょう. + ほとんどのデーモンは SIGHUP + シグナルに対して設定ファイルを再読み込みする反応を返すよう書かれています. + 従って, httpd を止めて再起動する代わりに, + SIGHUP シグナルを送りましょう. + これらのシグナルへの標準的な反応というものがないために, + デーモンごとに行動が違うので, + 疑問があれば必ずそのデーモンの文書を読んでください. + + &man.kill.1; コマンドを使って送るシグナルはこの例をご覧ください. + + + プロセスにシグナルを送る + + この例では, &man.inetd.8; にシグナルを送る方法を示します. + &man.inetd.8; の設定ファイルは + /etc/inetd.conf で, + &man.inetd.8; は SIGHUP + が送信されるとこの設定ファイルを再読み込みします. + + + シグナルを送りたいプロセスのプロセス ID を探します. + それには &man.ps.1; と &man.grep.1; を使います. + &man.grep.1; コマンドは出力を検索するために使い, + 指定した文字列を探します. + このコマンドは一般ユーザで実行しますが, + &man.inetd.8; は root で実行されているので, + &man.ps.1; には + オプションを与える必要があります. + + &prompt.user; ps -ax | grep inetd + 198 ?? IWs 0:00.00 inetd -wW + + ということで, &man.inetd.8; の PID は 198 です. + grep inetd コマンドがこの出力に出てくる場合もあります. + それは, &man.ps.1; が動作中のプロセスのリストを見つける方法によります. + + + + &man.kill.1; を使ってシグナルを送ります. + &man.inetd.8; は root で起動されているために, + まず &man.su.1; を使って root + にならなければなりません. + + &prompt.user; su +Password: +&prompt.root; /bin/kill -s HUP 198 + + 大部分の Unix コマンドと同じく, + 成功したら &man.kill.1; は何の出力も表示しません. + 自分のものではないプロセスにシグナルを送ると, + kill: + PID: Operation not + permitted と表示されます. + PID を打ち間違えると, + 悪いことに間違ったプロセスにシグナルを送ってしまうか, + もしくは運がよければその時点で使われていない PID + にシグナルを送ったことになり,kill: + PID: No such process + と表示されます. + + + なぜ <command>/bin/kill</command> を使うんでしょう? + + 多くのシェルは kill + コマンドを組み込みコマンドとして備えています. + つまり, /bin/kill を実行するのではなく, + シェルが直接シグナルを送ります. + これはとても便利なのですが, + シェルが違うと送るシグナルの名前の指定の仕方が違います. + シェルによって異なるシグナルの指定の仕方を全部覚えようとはせずに, + /bin/kill ... + コマンドを直接使うほうが簡単です. + + + + + 他のシグナルの送り方はほとんど同じで, + コマンドラインの TERMKILL + を必要に応じて変えるだけです. + + + システム上のランダムプロセスを終了させるのはよくありません. + 特に, プロセス ID が 1 の &man.init.8; は特別です. + Running + /bin/kill -s KILL 1 + を使うといとも簡単にシステムをシャットダウンさせることができます. + Return を押すに + &man.kill.1; を実行する引数を二重にチェックするをつけてください. + シェル シェル(shell) コマンドライン FreeBSD では日々の作業のほとんどは, 「シェル」と呼ばれるコマンドラインインタフェイスを通して行われます. シェルの主な仕事はコマンドを入力チャンネルから受け取り, そしてそれらを実行することです. 大部分のシェルはさらに組み込みの機能を持っていて, 日々の作業, ファイル管理やファイル名の展開, コマンドライン編集, コマンドマクロ, 環境変数などに便利です. FreeBSD には sh (Bourne Shell) や - csh (C-shell) が含まれています. + tcsh (高機能 C-shell) が含まれています. また, - これ以外にもたくさんのシェルが FreeBSD Ports Collection から利用可能です. - tcshbash - などの高機能なものは FreeBSD Ports Collection に含まれています. + これ以外にも zshbash + などたくさんのシェルが FreeBSD Ports Collection から利用可能です. 「あなたは, どのシェルを使いますか?」という質問は, まったく趣味の問題です. あなたが C のプログラマだったとすれば, tcsh のような C 風のシェルの方が落ち着くかもしれません. Linux から来た人や Unix のコマンドラインインタフェイスになじみがなければ, bash を試すのも良いでしょう. ポイントは, それぞれのシェルは, あなたの好みの作業環境で利用できる(もしくはできない)独自の機能を持っているということ, そして, どのシェルを使うことにするかを決めるのはあなた自身だということです. シェルの一般的な機能の一つに, ファイル名の補完があります. - コマンドやファイル名の最初の数文字を与えて TAB キーを押すことで, + コマンドやファイル名の最初の数文字を与えて Tab キーを押すことで, シェルにコマンドやファイル名の残りの部分を自動的に補完させることができます. 例をあげましょう. 二つのファイル foobar, foo.bar が あったとします. ここで foo.bar の方を削除するには, - rm fo[TAB].[TAB] と入力します. + rm fo[Tab].[Tab] と入力します. 環境変数(environment variables) するとシェルは rm foo[BEEP].bar と出力するでしょう. [BEEP] のところはコンソールのベル(訳注: 通常はビープ音が鳴ります)です. これは複数のファイルがマッチしたため, ファイル名の補完を完全に行なえなかったことを伝えています. foobarfoo.bar は 両方とも fo ではじまるため, 補完できるのは foo までです. - ここで . を入力して TAB を押せば, + ここで . を入力して Tab を押せば, シェルはファイル名の残りの部分を補完できます. - もう一つあげられるシェルの機能として, 環境変数があります. + もう一つあげられるシェルの特徴として, 環境変数があります. 環境変数とは, シェルの環境変数空間におけるキーと値とのペアです. この変数空間は, そのシェルから起動されたプログラムから参照でき, それを利用してプログラムの設定を保存するのに利用されます. 下の表は, 一般的な環境変数とその意味を示したものです. 環境変数(environment variables) 変数名 意味 USER 現在のログインユーザのユーザ名. PATH コロンで区切られた実行ファイル探索のための ディレクトリのリスト. DISPLAY 接続する X11 ディスプレイのネットワーク名(存在する場合のみ). SHELL 現在のシェル. TERM ユーザの端末名. 端末のケーパビリティを決定するのに使われる. TERMCAP 種々の端末の機能を実現する端末のエスケープコードの データベースのエントリ. OSTYPE オペレーティングシステムの種別. たとえば FreeBSD. MACHTYPE システムが動作している CPU のアーキテクチャ. EDITOR ユーザの選んだテキストエディタ. PAGER ユーザの選んだテキストページャ. MANPATH コロンで区切られたマニュアルページ探索のための ディレクトリのリスト. Bourne シェル(Bourne shells) - 環境変数をセットしたりその値を見る方法は, + 環境変数をセットする方法は, それぞれのシェルごとに多少異なります. たとえば, tcshcsh 等の C シェルでは setenv を使います. shbash 等の Bourne シェルでは setexport を使います. たとえば cshtcshEDITOR 環境変数の値を /usr/local/bin/emacs に セットするか変更するには, 次のようにします. &prompt.user; setenv EDITOR /usr/local/bin/emacs Bourne シェルでは次のようになります. &prompt.user; export EDITOR="/usr/local/bin/emacs" ほとんどのシェルでは, コマンドライン中の変数名の前に $ 文字を置くことで, 環境変数を展開させることができます. たとえば, echo $TERM$TERM が セットされている内容を表示します. それはシェルが $TERM を展開して - echo に渡しているからです. + echo に渡しているからです. シェルはさまざまな特殊文字を, 特別なデータを表すものとして扱います. その特殊文字はメタキャラクタと呼ばれます. もっとも一般的なものは * で, これはファイル名に含まれる, あらゆる文字を表します. これらの特殊なメタキャラクタはファイル名の展開に使われます. たとえば, echo * と入力すると ls と入力したのとほとんど同じ結果を得られます. - これはシェルが * とマッチするすべてのファイルを - 受け取って echo のコマンドラインに渡し, 表示するからです. + これはシェルが * とマッチするすべてのファイルを + 受け取って echo のコマンドラインに渡し, 表示するからです. これらの特殊文字をシェルに解釈させないようにするため, 特殊文字の前にバックスラッシュ文字 (\) を置くことができます. echo $TERM は, あなたの端末が何にセットされているかを表示します. echo \$TERM$TERM と そのまま表示します. シェルの変更 シェルを変更する一番簡単な方法は chsh コマンドを使うことです. chsh を実行すると 環境変数 EDITOR で示されたエディタが立ち上がります. 環境変数をセットしていなかった時は vi が立ち上がります. Shell: の行を適宜変更してください. chsh オプションをつけると, エディタを起動せずにシェルを変更することが可能です. - たとえば, シェルを bash に変えたいなら, 次のようにしてください. + たとえば, シェルを bash に変えたいなら, 次のようにしてください. &prompt.user; chsh -s /usr/local/bin/bash chsh をパラメータなしで実行し, エディタでシェルを変更しても同じことができます. 使おうと思っているシェルは必ず /etc/shells 中に書かれているものでなければなりません. シェルを Ports コレクションから インストールしていたのであれば, すでにそれは行なわれていますが, 手動でインストールした場合は, それを忘れずに行ってください. たとえば, bash を手動で /usr/local/bin にインストールした場合 以下のようにする必要があります. &prompt.root; echo "/usr/local/bin/bash" >> /etc/shells そして chsh を実行してください. テキストエディタ テキストエディタ エディタ さまざまな FreeBSD の設定は, テキストファイルを編集することで行われます. そのため, テキストエディタの扱いに慣れると良いでしょう. FreeBSD には, 基本システムの一部として二, 三提供されるものと, Ports collection から利用できる, たくさんのテキストエディタが用意されています. ee 最も学習が簡単なエディタは, easy editor の略で ee と呼ばれるものです. ee を立ち上げるには, コマンドラインから ee filename と入力します. ここで filename は, 編集しようとしているファイルの名前です. たとえば, /etc/rc.conf を編集するには ee /etc/rc.conf と入力します. 一旦 ee の中に入れば, エディタの機能を操作するコマンドはすべてディスプレイの上部に 表示されています. キャレット ^ 文字は - キーボードのコントロールキーを意味しますので, ^e はコントロールキーと - e を一緒に押すという意味になります. - ee を終了するにはエスケープキーを押し, + キーボードの Ctrl キーを意味しますので, + ^e はキーのコンビネーション + Ctrle + を押すという意味になります. + ee を終了するには Esc キーを押し, そして leave editor を選びます. ファイルが更新されていたときは, エディタは変更をセーブするかどうかプロンプトを出します. vi エディタ vi emacs エディタ emacs FreeBSD には, 基本システムの一部として vi, - Ports Collection の一部として - emacsvim - といった, より強力なテキストエディタが用意されています. + 一方 emacsvim + といった他のエディタは Ports Collection の一部として, + より強力なテキストエディタが用意されています. これらのエディタはやや学習が複雑ですが, より強力で高い機能性を提供します. しかし, あなたが多量のテキストを編集することを考えているなら, vimemacs といった強力なエディタを習得することは, より多くの時間を節約することでしょう. + + デバイスとデバイスノード + + デバイスとはシステム上のハードウェアに関するものに対してよく使われる用語で, + ディスクやプリンタ, グラフィックカードやキーボードが含まれます. + FreeBSD が起動するとき, FreeBSD + が表示しているものの大部分は検出されたデバイスです. + /var/run/dmesg.boot + を眺めれば起動メッセージを読み直すことができます. + + 例えば, acd0 は最初の + IDE CDROM ドライブで, kbd0 + はキーボードを表します. + + Unix オペレーティングシステムにおけるデバイスのほとんどは, + デバイスノードと呼ばれる /dev + ディレクトリにあるスペシャルファイルを通してアクセスしなければなりません. + + + デバイスノードを作成する + 新しいデバイスをシステムにつけ足したり, + 追加デバイスのサポートをコンパイルして加えたりするとき, + デバイスドライバを作成する必要がよくあります. + + + MAKEDEV スクリプト + DEVFS がないシステムでは, + 以下に示すように &man.MAKEDEV.8; + スクリプトを使ってデバイスノードを作成します. + + &prompt.root; cd /dev +&prompt.root; sh MAKEDEV ad1 + + + この例では, 取りつけられたとき2番目に当たる IDE + ドライブにとって適切なデバイスノードを作ります. + + + + devfs (デバイスファイルシステム: Device File System) + + デバイスファイルシステム, つまり devfs は, + グローバルファイルシステム名前空間の中のカーネルデバイス名前空間へのアクセスを提供します. + デバイスノードを作成したり変更したりするのではなく, + devfs がこの特別なファイルシステムを管理するのです. + + 詳しくは &man.devfs.5; マニュアルページをご覧ください. + + FreeBSD 5.0 では devfs がデフォルトで使われています. + + + + さらに詳しい情報を得るには... オンラインマニュアル マニュアルページ FreeBSD についてのもっとも包括的な文書は, マニュアルページの形式になっているものです. FreeBSD システム上のほとんどすべてのプログラムには, 基本的な操作方法とさまざまな引数を説明しているリファレンスマニュアルが添付されています. - これらのマニュアルは man コマンドで見ることができます. man + これらのマニュアルは man コマンドで見ることができます. man コマンドの使い方は簡単です. &prompt.user; man コマンド名 コマンド名 のところには, 知りたいコマンドの名前を入れます. たとえば ls コマンドについて知りたい場合には, 次のように入力します. &prompt.user; man ls オンラインマニュアルは, セクション番号で分類されています. ユーザコマンド システムコールとエラー番号 C のライブラリ関数 デバイスドライバ ファイル形式 ゲームや娯楽 さまざまな情報 システムの管理と操作のためのコマンド カーネル開発者のための情報 時折, 同じトピックがオンラインマニュアルの複数のセクションに記載されている場合があります. たとえば, chmod ユーザコマンドと chmod() システムコールの場合がそれに該当します. - この場合, man コマンドにセクション番号を与えることで, + この場合, man コマンドにセクション番号を与えることで, どちらを参照したいかを指定することができます. &prompt.user; man 1 chmod 上のようにすれば, ユーザコマンド chmod のマニュアルページが表示されます. オンラインマニュアルの特定セクションへの参照は, 慣習的に書かれている文書で括弧の中に示されます. すなわち, &man.chmod.1; は chmod ユーザコマンドを, &man.chmod.2; はシステムコールの方を示しています. コマンドの名前を知っていて, 単純にその使い方を知りたい場合はここまでの説明で十分でしょう. しかし, もしコマンドの名前を思い出せない場合にはどうしたら良いのでしょうか? - man に スイッチをつければ, + man スイッチをつければ, コマンド解説(description)の文章から, 指定したキーワードを検索することができます. &prompt.user; man -k mail このコマンドにより, mail というキーワードをコマンド解説に含むコマンドの一覧が表示されます. - 実際には, これは apropos コマンドを使う場合と同等の機能です. + 実際には, これは apropos コマンドを使う場合と同等の機能です. それでは, /usr/bin にあるさまざまなコマンドすべてを見ていて, それらが実際にどう働くのかが, まったく見当もつかないときには どうしたら良いでしょう? そのときは単純に, &prompt.user; cd /usr/bin &prompt.user; man -f * とするか, あるいは同じ働きをする &prompt.user; cd /usr/bin &prompt.user; whatis * としてください. GNU の Info ファイル Free Software Foundation FreeBSD には Free Software Foundation (FSF) によるアプリケーションや ユーティリティがたくさん含まれています. これらのプログラムには, マニュアルページに加えて info ファイルと呼ばれる ハイパーテキスト形式の文書が付属しています. この文書は info コマンド, あるいは emacs をインストールしているなら emacs の info モードで読むことができます. &man.info.1; コマンドを使うには, 単に次のように入力します. &prompt.user; info h と入力すると, 簡単な手引きを読むことができます. クイックコマンドリファレンスは ? を入力してください. diff --git a/ja_JP.eucJP/books/handbook/disks/chapter.sgml b/ja_JP.eucJP/books/handbook/disks/chapter.sgml index 99429c56cd..2d0b09a566 100644 --- a/ja_JP.eucJP/books/handbook/disks/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/disks/chapter.sgml @@ -1,1139 +1,916 @@ ディスク この章では この章では, FreeBSD 上でどのようにして物理的なディスクやメモリディスク, もしくはネットワークに接続されたディスクを使うのか, ということを解説します. BIOS ドライブの番号付け FreeBSD をインストールして設定する前に, 特に複数のハードディスクを持っているならば気をつけておかなければならない重要なことがあります. DOS が動いている PC や WINxxx のような BIOS 依存のオペレーティングシステムでは, BIOS がディスクドライブの順序を構成し, OS はその変化に追従します. これにより, ユーザはいわゆる プライマリーマスター 以外のディスクから起動することができます. この仕組みを用いればシステムのバックアップを取る最も簡単で安価な方法を構築できます. もう一つ同じディスクを買い, Ghost や XCOPY を用いて一つ目のディスクから二つめのディスクへのコピーを定期的に取ればいいのです. そして, 一つ目のディスクに障害が起きた時には, BIOS に対してドライブを論理的に交換するように指示することで簡単に復旧できるのです. この方法はドライブのケーブルを交換するのと同じようなことなのですが, ケースを開ける必要がありません. SCSI コントローラを備えたもっと高価なシステムでは, しばしば BIOS に拡張が施されており同じように 7 台までのドライブの順番を組み換えることができるようになっています. 以上のような機能を便利に使っているユーザは, FreeBSD では同じような結果にならないことに驚くかもしれません. FreeBSD は BIOS を利用しないため, 論理 BIOS ドライブマッピングについては知らないのです. このため, 特にいくつかのドライブが同じジオメトリを持っている時に, そしてまたあるものをもう一つのクローンとして使っている時に非常にややこしい状況になり得ます. FreeBSD を使う時は, インストール前にドライブの番号付けが自然なものになるように, BIOS の設定を忘れずに戻しておきましょう. もしドライブの番号付けを変更する必要がある場合には, そうすればいいのですが, ハードウェア的にケースを開けジャンパーやケーブルを移動しましょう. Bill と Fred のイケイケ冒険記 Bill は Fred のためにもう一つ FreeBSD 箱を作ろうと古い Wintel 箱を潰しました. Bill は ユニット番号 0 の SCSI ドライブを一つ追加し, そこに FreeBSD を入れました. Fred はこのシステムを使い始めましたが, 数日後その古い SCSI ドライブがたくさんのソフトエラーを吐いているのに気付き, Bill に報告しました. さらに数日後, Bill はその問題に対処しようと決意し, 倉庫のディスクドライブアーカイブから同じ SCSI ドライブを取ってきました. まずドライブのサーフィススキャンを行なってみましたが特に問題なかったため, Bill はこのドライブをユニット番号 4 として付け, ドライブ 0 からドライブ 4 へのイメージコピーを行ないました. 新しいドライブがインストールされ, しかもうまく動いているため, Bill はそれを使い始めてもいいだろうと思いました. そこで彼は SCSI BIOS の機能を使ってシステムがユニット 4 から起動するようにディスクドライブの順序を入れ換えました. FreeBSD が起動し, 調子良く動き始めました. Fred は数日作業を続けましたが, すぐに Bill と Fred は新しい冒険に挑戦することにしました. 新しいバージョンの FreeBSD にアップグレードするのです. Bill は SCSI ユニット 0 のディスクは当てにならないので取りはずし, アーカイブから持ってきた別の新しいドライブと交換しました. そして, 新しいバージョンの FreeBSD を, Fred の持っていた魔法のインターネット FTP フロッピーを用いて新しい SCSI ユニット 0 にインストールしたのです. インストールはうまくいきました. Fred は新しいバージョンの FreeBSD を数日使ってみて, 技術部門でも使えるくらい十分に良いものだと確認しました. 古いバージョンから全ての作業をコピーする時が来たのです. そこで Fred は SCSI ユニット 4 (古い FreeBSD で行なっていた作業の最新のものを置いてあるドライブです) をマウントしました. ところが, Fred は SCSI ユニット 4 には自分の貴重な作業がなにも残っていないことを発見して慌てふためきました. データはどこへ行ったのでしょう? Bill がオリジナルの SCSI ユニット 0 のイメージをユニット 4 にコピーした時, ユニット 4 は「新クローン」になりました. Bill がユニット 4 から起動するように SCSI BIOS で順序の入れ換えを行なった時, 実はおバカなことにそう変更したと思い込んでいただけなのです. FreeBSD は依然として SCSI ユニット 0 上で動いていたのです. BIOS にこのような変更を行なっても Boot と Loader のコードの一部もしくは全部は選択された BIOS ドライブから取得されるものの, 処理が FreeBSD のカーネルドライバーに引き渡された時から BIOS ドライブの順序は無視され, FreeBSD は通常のドライブ番号順に移行するのです. さきほどの例では, システムはオリジナルの SCSI ユニット 0 で動き続けており, Fred のデータは全て SCSI ユニット 4 ではなくそのディスクに残っていたのです. システムが SCSI ユニット 4 で動いているように見えたのは単に人の期待からくる妄想だったのです. こういった現象の発見のどの時点においてもデータは全く失なわれても損なわれてもいないことを喜びをもって伝えておきます. 古い SCSI ユニット 0 はガラクタの山から見つけ出され, Fred の作業は全て彼のもとへ返ってきたのです (そして Bill は自分が 0 までは数えられることを学んだのでした). この例では SCSI ドライブが用いられましたが, その概念は IDE ドライブにも同じように当てはまります. ディスクの名前付け 物理ディスクには主に二つの種類, IDESCSI がありますが, 他にも RAID コントローラによって提供されるものやフラッシュメモリなどがあります. これらのディスクの振舞いはかなり異なるため, それぞれにドライバーとデバイスがあります. 物理ディスクへの名前付け ドライブの種類 ドライブのデバイス名 IDE ハードドライブ 4.0-RELEASE では ad, 4.0-RELEASE より前のものでは wd. IDE CD-ROM ドライブ 3.1-RELEASE 以降は acd, 4.0-RELEASE より前のものでは wcd. SCSI ハードドライブ 3.0-RELEASE 以降は da, 3.0-RELEASE より前は sd. SCSI CD-ROM ドライブ cd その他の非標準的 CD-ROM ドライブ ミツミ CD-ROM は mcd, Sony CD-ROM は scd, 松下/パナソニック CD-ROM は matcd フロッピードライブ fd SCSI テープドライブ 3.0-RELEASE 以降は sa, 3.0-RELEASE よりも前では st. IDE テープドライブ 4.0-RELEASE 以降では ast, それよりも前のものでは wst. フラッシュドライブ 3.3-RELEASE 以降の DiskOnChip フラッシュデバイスは fla. RAID ドライブ myxd は Mylex 用, amrd は AMI MegaRAID 用, idad は Compaq Smart RAID 用. これらは全て 4.0-RELEASE 以降. 3.2-RELEASE から 4.0-RELEASE までは id.
スライスとパーティション 物理ディスクは危険な専用(原文はdangerously dedicated)ディスクでない限り, 通常はスライスを含んでいます. スライス番号はデバイス名の後に続き, s という接頭文字が付きます. da0s1 といった感じです. スライスや危険な専用 (原文はdangerously dedicated) ディスクや他のディスクはパーティションを含んでおり, パーティションは a から h までの文字で表現されます. b はスワップパーティション用に予約されており, c はスライスもしくはドライブの全体を表わす未使用パーティションです. このあたりのことは で解説します.
- - - ファイルシステムのマウントとアンマウント - - - ファイルシステムは / を根とする木構造として最もうまく視覚化できます. - /dev/usr, - ルートディレクトリにあるその他のディレクトリは枝であり, - /usr/local のようにそれぞれが自身の枝を持つことができます. - - - - 様々な理由がありますが, これらのディレクトリのいくつかは異なるファイルシステム上に構築するのが良いでしょう. - /var はログやスプール, - そして様々な種類の一時ファイルなどを含むため溢れてしまう可能性があります. - ルートファイルシステムが溢れるのは良くないため, たいての場合は /var を - / と切り離すのです. - - - - あるディレクトリツリーを他のファイルシステムに含まれるようにするもう一つのよくある理由は, - それらが別の物理ディスクや, ネットワークファイルシステムや - CD-ROM といった仮想ディスクに置かれる場合です. - - - - fstab ファイル - - - 起動プロセスにおいて, /etc/fstab - にリストされているファイルシステムは自動的にマウントされます - (ただし オプションがない場合). - - - - /etc/fstab ファイルは以下のようなフォーマットの行からなります. - - - device /mount-point fstype options dumpfreq passno - - - device は上の ディスクの名前付けのセクションで解説したデバイス名 (存在している必要があります) です. - - - - mount-point はそのファイルシステムをマウントするディレクトリです - (存在していなければなりません). - - - - fstype は &man.mount.8; に渡されるファイルシステムタイプです. - デフォルトの FreeBSD ファイルシステムは ufs です. - - - - options では読み書き可能なファイルシステム用の , - か読み込み専用ファイルシステム用の のどちらかと, - 他に必要なものをそれに続けます. よくあるのは で, - これは起動中にはマウントしたくないファイルシステムに用います. - 他のオプションはマニュアル &man.mount.8; を参照してください. - - - - dumpfreq はファイスシステムを dump すべき日数で, - passno は起動中でファイルシステムがマウントされる時のパスナンバーです. - - - - - マウントコマンド - - - &man.mount.8; コマンドはファイルシステムをマウントする時に使われるコマンドです. - - - 最も基本的な形は以下の通りです. - - - &prompt.root; mount device mountpoint - - - - マニュアル &man.mount.8; にあるように非常にたくさんのオプションがありますが, - 最も頻繁に使われるものは次のようなものです. - - - - マウントオプション - - - - - - - /etc/fstab にあるファイルシステムを全てマウントします. - もし があればそれが効きます. - - - - - - - - - 実際のファイルシステムのマウント以外の全てを行ないます. - - - - - - - - 強制的にファイルシステムをマウントします. - - - - - - - - ファイルシステムを読み込み専用でマウントします. - - - - - - fstype - - - - 与えられたファイルシステムを与えられたファイルシステムタイプでマウントします. - もしくは オプションも与えられている場合は与えられたタイプのファイルシステムのみマウントします. - - - ufs がデフォルトのファイルシステムタイプです. - - - - - - - - (既にマウントされている) ファイルシステムのマウントオプションを更新します. - - - - - - - - 冗長になります. - - - - - - - - ファイルシステムを読み書き可能でマウントします. - - - - - - は次のようなオプションを複数カンマで区切って指定します. - - - - - nodev - - - - ファイルシステム上のデバイススペシャルファイルを解釈しません. - 便利なセキュリティオプションです. - - - - - - noexec - - - このファイルシステム上のバイナリの実行を許可しません. - セキュリティに便利なオプションです. - - - - - nosuid - - - - setuid や setgid といったオプションを解釈しません. - セキュリティに便利なオプションです. - - - - - - - - umount コマンド - - - umount コマンドは, パラメータとしてマウントポイントの一つ, - デバイス名, もしくは - といったオプションを取ります. - - - - 全ての形式において, は強制アンマウント, - は冗長性を高めるために用いることができます. - - - - - はマウントされている全てのファイルシステムをアンマウントするために用いられますが, - の後にファイルシステムタイプがリストされていればそれだけがアンマウントされます. - はルートファイルシステムはアンマウントしません. - - - ディスクの追加 オリジナルは &a.obrien; によって 1998 年 4 月 26 日に寄贈されました. 現在一つしかドライブがない計算機に新しく SCSI ディスクを追加したいとしましょう. まずコンピュータの電源を切り, コンピュータやコントローラ, ドライブの製造元の指示に従ってドライブを取り付けます. このあたりの手順は非常にバラエティに富んでいるため, 細かいことはこのドキュメントの範囲外です. root ユーザでログインします. ドライブの取り付け後は /var/run/dmesg.boot を調べて新しいディスクが見つかっていることを確認しておきます. この例では, 新しく付けたドライブは da1 で, 我々はそれを /1 にマウントしたいとしましょう (もし IDE ドライブを付けようとしているのなら, 4.0 以前のシステムでは wd1, ほとんどの 4.x システムでは ad1 になるでしょう). FreeBSD は IBM-PC 互換のコンピュータで動くため, PC BIOS のパーティションを考慮に入れる必要があります. これは従来の BSD パーティションとは異なります. PC ディスクは 4 つまでの BIOS パーティションエントリを持つことができます. もしそのディスクを本当に FreeBSD 専用にしたい場合には専用モードで用いることもできます. そうでない場合には, FreeBSD は PC BIOS パーティションのどれか一つの中に入れることになります. FreeBSD では, 従来の BSD パーティションと混乱しないように PC BIOS パーティションのことをスライスと呼びます. また, 別の OS がインストールされていたコンピュータで使われていたが FreeBSD 専用にするディスク上でもスライスを用いることができます. これは, 他の OS の fdisk ユーティリティを混乱させないためです. スライスの場合, ドライブは /dev/da1s1e として加えられるでしょう. これは, SCSI ディスクでユニット番号は 1 (二つめの SCSI ディスク), スライスは 1 (PC BIOS のパーティションが 1) で BSD パーティション e, と読みます. 専用ディスクの場合だと単純に /dev/da1e として加えられるでしょう. sysinstall を利用 /stand/sysinstall の使い易いメニューを利用して新しいディスクのパーティション分けやラベル付けを行なうことができます. root ユーザでログインするか su コマンドを用いるかして root 権限を取得します. /stand/sysinstall を実行し, Configure メニューに入ります. FreeBSD Configuration Menu の中でスクロールダウンして Partition の項目を選びます. するとシステムに付けられているハードディスクのリストが表示されるはずです. もし da1 がリストされていない場合には物理的な取り付け及び, /var/run/dmesg.boot ファイルへの dmesg 出力をチェックし直してください. da1 を選んで FDISK Partition Editor に入ります. ディスク全体を FreeBSD で使うために A を選びます. remain cooperative with any future possible operating systems と聞かれたら YES と答えます. W で変更をディスクに書き込みます. ここで q と入力して FDISK エディタを抜けます. マスターブートレコードについて聞かれますが, ここでは既に動いているシステムにディスクを追加しようとしているのですから None を選びます. 次に Disk Label Editor に入ります. ここでは従来の BSD パーティションを作成します. 一つのディスクは a から h までのラベルがついた最大 8 つのパーティションを持つことができます. いくつかのパーティションラベルは特殊な用途に用いられます. a パーティションはルートパーティション (/) です. 従って, システムディスク (つまり起動ディスク) のみが a を持ちます. b パーティションはスワップパーティションに用いられ, 複数のディスクにスワップパーティションを作ることができます. c は専用モードにおけるディスク全体, もしくはスライスモードにおけるスライス全体を指します. 他のパーティションは汎用的に用いられます. sysinstall の Label Editor は非ルートで非スワップなパーティションには e を好んで付けます. ラベルエディタでは C を用いて一つのファイルシステムを作成します. FS (ファイルシステム) かスワップかを聞かれたら FS を選びマウントポイント (例えば /mnt) を入力します. インストール後のモードでディスクを追加する場合, sysinstall は /etc/fstab にエントリを追加しないため, ここで指定するマウントポイントはそれほど重要ではありません. さて, ディスクに新しいラベルを書き込み, そこにファイルシステムを作る準備が整いました. 早速 W を叩いて実行しましょう. sysinstall からの, 新しいパーティションをマウントできない, というエラーは無視してください. Label Editor から抜け, sysinstall を終了します. 最後に /etc/fstab を編集し, 新しいディスクを追加します. コマンドラインユーティリティの利用 スライスの利用 このセットアップ方法では, すでにコンピュータに他のオペレーティングシステムがインストールされていても 正しく協調動作することが可能で, 他のオペレーティングシステムの fdisk ユーティリティを混乱させることもありません. 新しいディスクにインストールする場合は, この方法を用いることが推奨されています. 後述する専用モードは, そうしなければならない理由がある時にのみ, 利用するようにしてください. &prompt.root; dd if=/dev/zero of=/dev/rda1 bs=1k count=1 &prompt.root; fdisk -BI da1 # 新しいディスクの初期化 &prompt.root; disklabel -B -w -r da1s1 auto # ディスクにラベルを付ける &prompt.root; disklabel -e da1s1 # 作成したディスクラベルを編集し, パーティションを追加する &prompt.root; mkdir -p /1 &prompt.root; newfs /dev/da1s1e # 作成したすべてのパーティションに対してこれを繰り返す &prompt.root; mount -t ufs /dev/da1s1e /1 # パーティションをマウントする &prompt.root; vi /etc/fstab # マウントに成功したら, /etc/fstab に適切なエントリを追加する IDE ディスクを使う場合は da の部分を ad とします. 4.x より前のシステムでは, (訳注: ad ではなく) wd としてください. 専用モード 新しいドライブを他の OS と共有しない場合には専用モードを用いることもできます. このモードはマイクロソフトの OS を混乱させることを憶えておいてください (しかし, それらによって壊されることはありません). 一方, IBM の OS/2 はどんなパーティションでも見つけたら理解できなくても専有します. &prompt.root; dd if=/dev/zero of=/dev/rda1 bs=1k count=1 &prompt.root; disklabel -Brw da1 auto &prompt.root; disklabel -e da1 # create the `e' partition &prompt.root; newfs -d0 /dev/rda1e &prompt.root; mkdir -p /1 &prompt.root; vi /etc/fstab # add an entry for /dev/da1e &prompt.root; mount /1 もう一つの方法は次の通り. &prompt.root; dd if=/dev/zero of=/dev/rda1 count=2 &prompt.root; disklabel /dev/rda1 | disklabel -BrR da1 /dev/stdin &prompt.root; newfs /dev/rda1e &prompt.root; mkdir -p /1 &prompt.root; vi /etc/fstab # add an entry for /dev/da1e &prompt.root; mount /1 仮想ディスク: ネットワーク, メモリ, そしてファイルベースのファイルシステム FreeBSD にはフロッピーや CD, ハードディスクなどの手元の計算機に取り付けたディスクの他に, 別の形態のディスク, 仮想ディスク, もあります. これには, Network Filesystem のようなネットワークファイルシステムや Coda, md のようなメモリベースのファイルシステム, vnconfig によって作られるようなファイル中に構築されるファイルシステムがあります. vnconfig: ファイル中に構築されるファイルシステム &man.vnconfig.8; を使えば擬似ディスクデバイスを設定し, 有効にすることができます. vnode とはファイルの内部的な表現方法であり, ファイルに関する操作の中心となるものです. つまり, &man.vnconfig.8; はファイルシステムを生成したり操作したりするためにファイルを用いるのです. 一つ例を挙げると, ファイルに収められたフロッピーや CD-ROM のイメージをマウントするために用いることができます. 既にあるファイルシステムイメージのマウント vnconfig を用いた既存のファイルシステムイメージのマウント &prompt.root; vnconfig vn0 diskimage &prompt.root; mount /dev/vn0c /mnt vnconfig を用いたファイルシステムイメージの新規作成 vnconfig を用いたファイルベースディスクの新規作成 &prompt.root; dd if=/dev/zero of=newimage bs=1k count=5k 5120+0 records in 5120+0 records out &prompt.root; vnconfig -s labels -c vn0 newimage &prompt.root; disklabel -r -w vn0 auto &prompt.root; newfs vn0c Warning: 2048 sector(s) in last cylinder unallocated /dev/rvn0c: 10240 sectors in 3 cylinders of 1 tracks, 4096 sectors 5.0MB in 1 cyl groups (16 c/g, 32.00MB/g, 1280 i/g) super-block backups (for fsck -b #) at: 32 &prompt.root; mount /dev/vn0c /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/vn0c 4927 1 4532 0% /mnt md: メモリファイルシステム md はメモリファイルシステムを実現するためにシンプルで効率的な手段です. 単に, 例えば &man.vnconfig.8; を用いて作成したファイルシステムを取り, 以下のようにします. md メモリディスク &prompt.root; dd if=newimage of=/dev/md0 5120+0 records in 5120+0 records out &prompt.root; mount /dev/md0c /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md0c 4927 1 4532 0% /mnt ディスククォータ クォータは OS の持っているオプショナルな機能であり, ファイルシステム毎にユーザやグループのメンバが使用するディスク容量やファイルの数を制限することができます. この機能は, あるユーザやグループに割り当てられるリソースの量を制限することが望ましいようなタイムシェアリングシステムにおいてよく用いられます. この機能を用いることによって使用可能なディスク容量の全てを一人のユーザが使ってしまうことを防ぐことができます. ディスククォータを使うためのシステム設定 ディスククォータの設定を始める前に, まずはカーネルにクォータが組み込まれていることを確認しましょう. カーネルのコンフィグレーションファイルに次の行を入れます. options QUOTA 標準の GENERIC カーネルでは, この機能は有効になっていませんので, ディスククォータを利用するためには上記を設定後カーネルを構築しなおし, 作成されたカスタムカーネルをインストールしなければいけません. カーネルのコンフィグレーションに関しては FreeBSD カーネルのコンフィグレーションのセクションをご覧ください. 次に /etc/rc.conf でディスククォータを有効にする必要があります. 次の行を加えましょう. enable_quotas=YES 起動時の動作をさらに細かくコントロールするためにもう一つ設定用の変数があります. 通常, 起動時には quotacheck によりそれぞれのファイルシステムのクォータの整合性がチェックされます. quotacheck の役割は, クォータデータベースのデータが正しくファイルシステム上のデータを反映しているか確認することです. これはかなり時間を食う処理であり, 起動にかかる時間に大きな影響を及ぼします. このステップをとばしたい人のために次の変数が用意されています. check_quotas=NO もし 3.2-RELEASE よりも前の FreeBSD を使っているならば設定はもっと単純で, 一つの変数のみです. 次の行を /etc/rc.conf で設定してください. check_quotas=YES 最後に, ファイルシステム毎にディスククォータを有効にするために /etc/fstab を編集する必要があります. ここでユーザもしくはグループ, あるいはその両方にクォータを設定することができるのです. あるファイルシステム上にユーザ毎のクォータを有効にする場合には, /etc/fstab 中でクォータを有効にしたいファイルシステムエントリのオプション部に userquota を加えます. 例えば次のようになります. /dev/da1s2g /home ufs rw,userquota 1 2 同様に, グループクォータを有効にするには userquota キーワードの代わりに groupquota を用います. ユーザとグループの両方のクォータを有効にするには次のようにします. /dev/da1s2g /home ufs rw,userquota,groupquota 1 2 デフォルトでは, クォータファイルはそのファイルシステムのルートディレクトリに ユーザ用, グループ用それぞれ quota.user, quota.group という名前で置かれます. さらに詳しい情報は man fstab をご覧ください. マニュアルには別の場所を指定することができると書いてはありますが, あまり勧められません. なぜなら, 様々なクォータ関係のユーティリティがそれにうまく対処できるようにないためです. この時点で, 一度システムを再起動して新しいカーネルで立ち上げましょう. /etc/rc が自動的に適当なコマンドを実行し, /etc/fstab で有効にした全てのクォータ用に初期ファイルを作ってくれます. 従って, 空のクォータファイルを手で作る必要は一切ありません. 通常の運用では quotacheckquotaon, quotaoff といったコマンドを手で動かす必要はないのですが, 慣れるためにもこれらのマニュアルは読んでおきましょう. クォータリミットの設定 一旦クォータを有効にしたら本当に有効になっているのか確認しておきましょう. 簡単な方法は次のコマンドを実行することです. &prompt.root; quota -v ディスクの使用状況と, クォータが有効になっているファイルシステムのクォータリミットが一行にまとめて出力されるでしょう. さあ、edquota でクォータリミットを設定する準備ができました. ユーザやグループが使用できるディスク容量や作成できるファイルの数に制限をかけるにはいくつかのオプションがあります. 割り当てディスク容量を制限 (ブロッククォータ) することもファイル数を制限 (inode クォータ) することも, 両者を組み合わせることもできるのです. これらの制限はそれぞれさらに二つのカテゴリ, ハードリミットとソフトリミット, に分けることができます. ハードリミットを越えることはできません. あるユーザが一旦ハードリミットにたっした場合, そのファイルシステムではそれ以上の割り当ては望めません. 例えばあるファイルシステム上に 500 ブロックのハードリミットが設定されており現在 490 ブロックを使用している場合, さらに 10 ブロックしか使えないのです. 11 ブロックを使おうとすると失敗します. 一方, ソフトリミットはある限られた時間内であれば越えることができます. この時間は猶予期間として知られており, デフォルトでは 1 週間です. あるユーザが自分のソフトリミットを猶予期間よりも長い間越えているとソフトリミットはハードリミットに変わり, それ以上使用することはできなくなります. ユーザがソフトリミットよりも減らせば猶予期間はリセットされます. 以下は edquota コマンドを実行した時に見ることになるであろう例です. edquota コマンドが起動されると環境変数 EDITOR で指定されるエディタに入ります. EDITOR が設定されていない場合には vi が起動されます. ここでクォータリミットを編集します. &prompt.root; edquota -u test Quotas for user test: /usr: blocks in use: 65, limits (soft = 50, hard = 75) inodes in use: 7, limits (soft = 50, hard = 60) /usr/var: blocks in use: 0, limits (soft = 50, hard = 75) inodes in use: 0, limits (soft = 50, hard = 60) 通常, クォータが有効になっているファイルシステム毎に 2 行あります. 一つはブロックリミット用でもう一つは inode リミット用です. クォータリミットを変更したいところを書き変えるだけでかまいません. 例えばこのユーザのブロックリミットを, 「ソフトリミットは 50 で ハードリミットは 75」から「ソフトリミットは 500 で ハードリミットは 600」に変更する場合, /usr: blocks in use: 65, limits (soft = 50, hard = 75) から /usr: blocks in use: 65, limits (soft = 500, hard = 600) へ書き換えます. 新しいクォータリミットはエディタを終了すれば設定されます. ある範囲の uid に対してクォータリミットを設定したい場合がありますが, このような時には edquota コマンドの オプションを使うといいでしょう. まず, あるユーザに割り当てたいクォータリミットを設定し, 次に edquota -p protouser startuid-enduid を実行するのです. 例えばユーザ test にお望みのクォータリミットが付いているとしましょう. 次のコマンドにより 10,000 から 19,999 の間の uid に対して同じクォータリミットを付けることができるのです. &prompt.root; edquota -p test 10000-19999 さらに詳しいことは man edquota をご覧ください. クォータリミットとディスク使用状況のチェック quotarepquota といったコマンドを使ってクォータリミットやディスクの利用状況をチェックすることができます. quota コマンドは個々のユーザやグループのクォータやディスク利用状況をチェックするのに使えます. スーパーユーザのみが他のユーザや所属していないグループのクォータと利用状況を見ることができます. repquota コマンドはクォータが有効になっているファイルシステム用の全てのクォータやディスク容量のサマリを得るのに使えます. 以下は二つのファイルシステムにクォータ制限がかけられているユーザに対する quota -v コマンドの出力例です. Disk quotas for user test (uid 1002): Filesystem blocks quota limit grace files quota limit grace /usr 65* 50 75 5days 7 50 60 /usr/var 0 50 75 0 50 60 上の例で, /usr ファイルシステム上ではこのユーザは現在 50 ブロックというソフトリミットを 15 ブロックオーバーし 5 日間の猶予期間が残っています. アスタリスク * はクォータリミットを越えているユーザを示していることに注意してください. 通常, そのユーザが全く使っていないファイルシステムは, クォータリミットが付けられているとしても quota コマンドの出力には現われません. オプションを用いればそのようなファイルシステム, 上の例では /usr/var, を表示することができます. NFS 上の クォータ クォータは NFS サーバ上のクォータサブシステムにより実行されます. &man.rpc.rquotad.8; デーモンにより, NFS クライアント上の &man.quota.1; コマンドは情報を得ることができ, クライアントマシン上のユーザが自分のクォータの統計を見ることができます. /etc/inetd.conf において以下のように rpc.rquotad を有効にしましょう. rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad そして以下のように inetd を再起動します. &prompt.root; kill -HUP `cat /var/run/inetd.pid` CD の作成 寄稿: Mike Meyer mwm@mired.org, 2001 年 4 月. はじめに CD は他の一般的なディスクと異なる様々な特徴を持っています. そもそもユーザが書き込むことができません. また遅延なしで連続的に読み出せるように, トラック間をヘッドが移動しないですむようにデザインされています. さらにこのサイズのメディアの中では最もシステム間での転送が簡単なものです. CD はトラックの概念を持っていますが, これはデータを連続的に読み出すためのものであってディスクの物理属性ではありません. FreeBSD に CD を提供するにあたっては, まず CD 上のトラックとなるデータファイルを処理し, そのトラックを CD に書き込みます. ISO 9660 ファイルシステムはこの様な差異を扱うべく設計されました. 残念ながらファイルシステムは標準的なものに制限されるような明文化がされてしまいましたが, 適切に書かれた CD がその拡張をサポートしないシステムでも動作する範囲でこの制限を越えられるようにこれを拡張する機構が提供されています. mkisofs プログラムは ISO 9660 ファイルシステムを持つデータファイルを作成するのに使われます. これには様々な拡張をサポートするオプションがあり, それは以下に書かれています. あなたはそれを ports の /usr/ports/sysutils/mkisofs からインストールすることができます. CD を焼くためのツールはあなたの CD ライタが ATAPI か否かにも依存します. ATAPI CD ライタはベースシステムの一部である burncd プログラムを使います. SCSI や USB の CD ライタは ports の /usr/ports/sysutils/cdrecord から cdrecord を使わなければなりません. mkisofs mkisofs は Unix ファイルシステムの名前空間でのディレクトリツリーのイメージである ISO 9660 ファイルシステムを作成します. 最も簡単な使い方は以下の通りです. &prompt.root; mkisofs imagefile.iso /path/to/tree このコマンドは /path/to/tree 以下のディレクトリツリーのコピーである ISO 9660 ファイルシステムを含む imagefile を作成します. プロセスにおいて, ファイル名は標準的な ISO 9660 ファイルシステムの制限に適合するようなファイル名に対応づけられ, ISO ファイルシステムの特徴を持たないファイル名のファイルを含めることができます. この過程の詳細とオプションについては &man.mkisofs.8; を読んでください. 制限を回避するオプションはいくつもあります. は Unix システムで標準的な Rock Ridge 拡張を可能にします. は Microsoft のシステムで標準的な Joliet 拡張を可能にし, は Mac で使われている HFS ファイルシステムを作るために使われます. 後の二つについてのこれ以上の情報は &man.mkisofs.8; を読んでください. FreeBSD でしか使わないのであれば があらゆるファイル名制限を無効にするのに使えます. さらに とともに使うことで FreeBSD と同一のファイルシステムイメージを作成できますが, これは ISO 9660 標準の多数を無視しています. 一般的に使われるオプションの最後のものは です. これは El Torito ブータブル CD を作成するのに使うブートイメージのありかを指示します. このオプションは引数としてブートイメージへのパスを, CD に書き込まれるディレクトリツリーのトップからの相対位置で取ります. よって /tmp/myboot がブート可能な FreeBSD システムで /tmp/myboot/boot/cdboot にブートイメージがあるならば, 以下のようにすることで ISO 9660 ファイルシステムのイメージを /tmp/bootable.iso に作成することができます. &prompt.root; mkisofs boot/cdboot /tmp/bootable.iso /tmp/myboot この後, カーネルで vn が設定されていれば, ファイルシステムを以下のようにしてマウントすることができます. &prompt.root; vnconfig vn0c /tmp/bootable.iso &prompt.root; mount cd9660 /dev/vn0c /mnt あなたが確認すべきは /mnt/tmp/myboot が同一かどうかです. mkisofs には挙動を細かく制御するためにたくさんのオプションがあります. 詳細は &man.mkisofs.8; を見てください. burncd あなたが持っているのが ATAPI CD ライタならば CD 上に ISO イメージを焼くのために burncd コマンドが使えます. burncd はベースシステムの一部で /usr/sbin/burncd としてインストールされています. 使い方はとても単純でオプションも少ししかありません. &prompt.root; burncd cddevice data imagefile.iso fixate 以上のコマンドは imagefile.iso のコピーを cddevice 上に焼付けます. デフォルトのデバイスは /dev/acd0 です. 書きこみ速度やフロッピーのイジェクト, オーディオデータの書き込みなどのオプションについては &man.burncd.8; を見てください. cdrecord あなたが持っている CD ライタが ATAPI ではないのでしたら CD を書き込むのに cdrecord を使わねばなりません. cdrecord はベースシステムの一部ではなく, /usr/ports/sysutils/cdrecord から ports としてかそのパッケージをインストールするしなければなりません. ベースシステムへの変更はこのプログラムのバージョンを途切れさせ, コースターを作ることになるでしょう. それゆえシステムをアップグレードするつど ports もアップグレードし, あるいはあなたがFreeBSD の安定版を追い掛けているのならば, 新しいバージョンが利用できるようになった時に ports をアップグレードする必要があります. cdrecord にはたくさんのオプションがありますが, 基本的な使い方は burncd と同様です. ISO 9660 イメージを書き込むには以下のようにします. &prompt.root; cdrecord device imagefile.iso cdrecord のトリッキーな部分は使う を見つけるところにあります. 適切な設定を見つけるためには cdrecord フラグを使います. それは以下のような結果を出力するはずです. &prompt.root; cdrecord Cdrecord 1.9 (i386-unknown-freebsd4.2) Copyright (C) 1995-2000 Jörg Schilling Using libscg version 'schily-0.1' scsibus0: 0,0,0 0) 'SEAGATE ' 'ST39236LW ' '0004' Disk 0,1,0 1) 'SEAGATE ' 'ST39173W ' '5958' Disk 0,2,0 2) * 0,3,0 3) 'iomega ' 'jaz 1GB ' 'J.86' Removable Disk 0,4,0 4) 'NEC ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM 0,5,0 5) * 0,6,0 6) * 0,7,0 7) * scsibus1: 1,0,0 100) * 1,1,0 101) * 1,2,0 102) * 1,3,0 103) * 1,4,0 104) * 1,5,0 105) 'YAMAHA ' 'CRW4260 ' '1.0q' Removable CD-ROM 1,6,0 106) 'ARTEC ' 'AM12S ' '1.06' Scanner 1,7,0 107) * リストにあるデバイスに対する適切な の値がここに示されています. あなたの CD ライタをこのリストから見つけ, カンマで区切られた 3 つの数値を の値として使ってください. この例では CRW デバイスは 1,5,0 なので適切な入力は =1,5,0 となります. 値を明示するもっと簡単な方法もあります. 詳細は &man.cdrecord.1; を見てください. そこにはオーディオトラックを書き込む方法や書きこみ速度その他を操作する方法も書かれています.
diff --git a/ja_JP.eucJP/books/handbook/mirrors/chapter.sgml b/ja_JP.eucJP/books/handbook/mirrors/chapter.sgml index ab6b7423c5..4cc6e80551 100644 --- a/ja_JP.eucJP/books/handbook/mirrors/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/mirrors/chapter.sgml @@ -1,3742 +1,3972 @@ FreeBSD の入手方法 CDROM 出版社 リテールボックス製品 FreeBSD は (FreeBSD CD, 追加ソフトウェア, 印刷されたドキュメントなどから構成される) 箱入りの製品として以下の取り扱い業者から入手できます.
CompUSA WWW: http://www.compusa.com/
Frys Electronics WWW: http://www.frys.com/
- Micro Center - WWW: http://www.microcenter.com/ + Staples + WWW: http://www.staples.com/
CD セット FreeBSD の CD セットは以下のオンライン業者から入手できます.
Daemon News 2672 Bayshore Parkway, Suite 307 Mountain View, CA 94043 USA - 電話: +1 650 694-4949 + 電話: +1 800 407-5170 Email: sales@daemonnews.org - WWW: http://www.bsdmall.com/ + WWW: http://www.bsdmall.com/
- Wind River Systems - 500 Wind River Way - Alameda, CA 94501 + FreeBSD Mall, Inc. + 3623 Sanford Street + Concord, CA 94520-1405 USA + 電話: +1 925 674-0783 + Fax: +1 925 674-0821 + Email: info@freebsdmall.com WWW: http://www.freebsdmall.com/
+ + +
+ Hinner EDV + St. Augustinus-Str. 10 + D-81825 München + Germany + 電話: (089) 428 419 + WWW: http://www.hinner.de/linux/freebsd.html +
+
+
問屋 あなたが小売業を営んでいて FreeBSD の CDROM 製品を取り扱いたいと考えているなら次の場所に連絡してください.
Cylogistics 2672 Bayshore Parkway, Suite 307 Mountain View, CA 94043 USA 電話: +1 650 694-4949 Fax: +1 650 694-4953 Email: sales@cylogistics.com WWW: http://www.cylogistics.com/
- Ingram Micro - WWW: - http://www.ingrammicro.com/ - + Kudzu, LLC + 7375 Washington Ave. S. + Edina, MN 55439 + USA + 電話: +1 952 947-0822 + Fax: +1 952 947-0876 + Email: sales@kudzuenterprises.com
- Navarre - WWW: - http://www.navarre.com/ - + Navarre Corp + 7400 49th Ave South + New Hope, MN 55428 + USA + 電話: +1 763 535-8333 + Fax: +1 763 535-0341 + WWW: http://www.navarre.com/
DVD 出版社 FreeBSD の DVD は以下の業者から入手できます:
FreeBSD Services Ltd 11 Lapwing Close Bicester OX26 6XR United Kingdom WWW: http://www.freebsd-services.com/
FTP サイト FreeBSD の公式な情報は anonymous FTP によって以下の場所から 入手できます:
ftp://ftp.FreeBSD.org/pub/FreeBSD/.
FreeBSD ミラーサイトデーターベース FreeBSD ハンドブックの ミラーサイト一覧 よりも正確です.というのはその情報を DNS から取得するので, 静的に記述されたリストよりも信頼性が高いのです. さらに, FreeBSD は以下のミラーサイトから anonymous FTP によって 入手できます. もし FreeBSD を anonymous FTP によって手にいれる場合は, 近くのサイトを利用するようにしてください. Argentina, Australia, Brazil, Canada, China, Czech Republic, Denmark, Estonia, Finland, France, Germany, Hong Kong, Hungary, + Iceland, Ireland, Israel, Japan, Korea, Lithuania, Netherlands, New Zealand, Poland, Portugal, Romania, Russia, Saudi Arabia, South Africa, Spain, Slovak Republic, Slovenia, Sweden, Taiwan, Thailand, UK, Ukraine, USA. アルゼンチン 何か問題がある場合は,このドメインの hostmaster hostmaster@ar.FreeBSD.org に連絡してください. ftp.ar.FreeBSD.org/pub/FreeBSD/ オーストラリア 何か問題がある場合は, このドメインの hostmaster hostmaster@au.FreeBSD.org に連絡してください. ftp://ftp.au.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.au.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.au.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.au.FreeBSD.org/pub/FreeBSD/ ブラジル 何か問題がある場合は, このドメインの hostmaster hostmaster@br.FreeBSD.org に連絡してください. ftp://ftp.br.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.br.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.br.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.br.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.br.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.br.FreeBSD.org/pub/FreeBSD/ ftp://ftp7.br.FreeBSD.org/pub/FreeBSD/ カナダ 何か問題がある場合は, このドメインの hostmaster hostmaster@ca.FreeBSD.org に連絡してください. ftp://ftp.ca.FreeBSD.org/pub/FreeBSD/ 中国 何か問題がある場合は, このドメインの hostmaster phj@cn.FreeBSD.org に連絡してください. ftp://ftp.cn.FreeBSD.org/pub/FreeBSD/ チェコ 何か問題がある場合は, このドメインの hostmaster hostmaster@cz.FreeBSD.org に連絡してください. - - ftp://ftp.cz.FreeBSD.org/pub/FreeBSD/ - 連絡先: calda@dzungle.ms.mff.cuni.cz - + + ftp://ftp.cz.FreeBSD.org/pub/FreeBSD/ + 連絡先: calda@dzungle.ms.mff.cuni.cz + デンマーク 何か問題がある場合は,このドメインの hostmaster hostmaster@dk.FreeBSD.org に連絡してください. ftp://ftp.dk.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.dk.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.dk.FreeBSD.org/pub/FreeBSD/ エストニア 何か問題がある場合は, このドメインの hostmaster hostmaster@ee.FreeBSD.org に連絡してください. ftp://ftp.ee.FreeBSD.org/pub/FreeBSD/ フィンランド 何か問題がある場合は, このドメインの hostmaster hostmaster@fi.FreeBSD.org に連絡してください. ftp://ftp.fi.FreeBSD.org/pub/FreeBSD/ フランス 何か問題がある場合は, このドメインの hostmaster hostmaster@fr.FreeBSD.org に連絡してください. ftp://ftp.fr.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.fr.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.fr.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.fr.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.fr.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.fr.FreeBSD.org/pub/FreeBSD/ + + + ftp://ftp7.fr.FreeBSD.org/pub/FreeBSD/ + + + + ftp://ftp8.fr.FreeBSD.org/pub/FreeBSD/ + + ドイツ 何か問題がある場合は, このドメインのミラー管理者 de-bsd-hubsr@de.FreeBSD.org に連絡してください. ftp://ftp.de.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.de.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.de.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.de.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.de.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.de.FreeBSD.org/pub/FreeBSD/ ftp://ftp7.de.FreeBSD.org/pub/FreeBSD/ 香港 ftp://ftp.hk.super.net/pub/FreeBSD/ 連絡先: ftp-admin@HK.Super.NET. - ハンガリー + ハンガリー 何か問題がある場合は, このドメインの hostmaster mohacsi@ik.bme.hu に連絡してください. ftp://ftp.hu.FreeBSD.org/pub/FreeBSD/ + アイスランド + + 何か問題がある場合は, このドメインの hostmaster + hostmaster@is.FreeBSD.org + に連絡してください. + + + + ftp://ftp.is.FreeBSD.org/pub/FreeBSD/ + + + + + アイルランド 何か問題がある場合は, このドメインの hostmaster hostmaster@ie.FreeBSD.org に連絡してください. ftp://ftp.ie.FreeBSD.org/pub/FreeBSD/ イスラエル 何か問題がある場合は, このドメインの hostmaster hostmaster@il.FreeBSD.org に連絡してください. ftp://ftp.il.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.il.FreeBSD.org/pub/FreeBSD/ 日本 何か問題がある場合は, このドメインの hostmaster hostmaster@jp.FreeBSD.org に連絡してください. ftp://ftp.jp.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.jp.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.jp.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.jp.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.jp.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.jp.FreeBSD.org/pub/FreeBSD/ 韓国 何か問題がある場合は, このドメインの hostmaster hostmaster@kr.FreeBSD.org に連絡してください. ftp://ftp.kr.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.kr.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.kr.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.kr.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.kr.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.kr.FreeBSD.org/pub/FreeBSD/ リトアニア 何か問題がある場合は, このドメインの hostmaster hostmaster@lt.FreeBSD.org に連絡してください. ftp://ftp.lt.FreeBSD.org/pub/FreeBSD/ オランダ 何か問題がある場合は, このドメインの hostmaster hostmaster@nl.FreeBSD.org に連絡してください. ftp://ftp.nl.FreeBSD.org/pub/FreeBSD/ + + + ftp://ftp2.nl.freebsd.org/pub/FreeBSD/ + ニュージーランド 何か問題がある場合は, このドメインの hostmaster hostmaster@nz.FreeBSD.org に連絡してください. ftp://ftp.nz.FreeBSD.org/pub/FreeBSD/ ポーランド 何か問題がある場合は,このドメインの hostmaster hostmaster@pl.FreeBSD.org に連絡してください. ftp://ftp.pl.FreeBSD.org/pub/FreeBSD/ ポルトガル 何か問題がある場合は, このドメインの hostmaster hostmaster@pt.FreeBSD.org に連絡してください. ftp://ftp.pt.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.pt.FreeBSD.org/pub/FreeBSD/ ルーマニア 何か問題がある場合は, このドメインの hostmaster hostmaster@ro.FreeBSD.org に連絡してください. ftp://ftp.ro.FreeBSD.org/pub/FreeBSD/ ロシア 何か問題がある場合は, このドメインの hostmaster hostmaster@ru.FreeBSD.org に連絡してください. ftp://ftp.ru.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.ru.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.ru.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.ru.FreeBSD.org/pub/FreeBSD/ サウジアラビア - + 何か問題がある場合は, ftpadmin@isu.net.sa に連絡してください. - - - ftp://ftp.isu.net.sa/pub/mirrors/ftp.freebsd.org/ - - - + + + ftp://ftp.isu.net.sa/pub/mirrors/ftp.freebsd.org/ + + + 南アフリカ 何か問題がある場合は, このドメインの hostmaster hostmaster@za.FreeBSD.org に連絡してください. ftp://ftp.za.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.za.FreeBSD.org/pub/FreeBSD/ - ftp://ftp3.za.FreeBSD.org/pub/FreeBSD/ + ftp://ftp3.za.FreeBSD.org/pub/FreeBSD/ スロヴァキア共和国 何か問題がある場合には, このドメインの hostmaster hostmaster@sk.FreeBSD.org に連絡してください. ftp://ftp.sk.FreeBSD.org/pub/FreeBSD/ スロベニア 何か問題がある場合には, このドメインの hostmaster hostmaster@si.FreeBSD.org に連絡してください. ftp://ftp.si.FreeBSD.org/pub/FreeBSD スペイン 何か問題がある場合は, このドメインの hostmaster hostmaster@es.FreeBSD.org に連絡してください. ftp://ftp.es.FreeBSD.org/pub/FreeBSD/ スウェーデン 何か問題がある場合は, このドメインの hostmaster hostmaster@se.FreeBSD.org に連絡してください. ftp://ftp.se.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.se.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.se.FreeBSD.org/pub/FreeBSD/ 台湾 何か問題がある場合は, このドメインの hostmaster hostmaster@tw.FreeBSD.org に連絡してください. ftp://ftp.tw.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.tw.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.tw.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.tw.FreeBSD.org/pub/FreeBSD/ タイ ftp://ftp.nectec.or.th/pub/FreeBSD/ 連絡先: ftpadmin@ftp.nectec.or.th. ウクライナ ftp://ftp.ua.FreeBSD.org/pub/FreeBSD/ 連絡先: freebsd-mnt@lucky.net. イギリス 何か問題がある場合は, このドメインの hostmaster hostmaster@uk.FreeBSD.org に連絡してください. ftp://ftp.uk.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.uk.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.uk.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.uk.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.uk.FreeBSD.org/pub/FreeBSD/ アメリカ 何か問題がある場合は, このドメインの hostmaster hostmaster@FreeBSD.org に連絡してください. ftp://ftp2.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.FreeBSD.org/pub/FreeBSD/ ftp://ftp7.FreeBSD.org/pub/FreeBSD/ ftp://ftp8.FreeBSD.org/pub/FreeBSD/ ftp://ftp9.FreeBSD.org/pub/os/FreeBSD/ ftp://ftp10.FreeBSD.org/pub/FreeBSD/ ftp://ftp11.FreeBSD.org/pub/FreeBSD/ ftp://ftp12.FreeBSD.org/pub/FreeBSD/ ftp://ftp13.FreeBSD.org/pub/FreeBSD/
Anonymous CVS 訳: &a.jp.sugimura;, 1998 年 7 月 19 日. <anchor id="anoncvs-intro">導入 Anonymous CVS (もしくは, anoncvs として知られています) は離れたところにある CVS リポジトリと同期を取るために FreeBSD に付属している CVS ユーティリティに含まれている機能です. 他にもありますが, それは FreeBSD のユーザが, 特別な権限なしに FreeBSD プロジェクトの公式な anoncvs サーバに読み取り専用で CVS の操作をすることができるようにするためのものです. それを使うには, 単に CVSROOT 環境変数を設定して適切な anoncvs サーバを指定し, cvs login を使って パスワード anoncvs を入力してください. そして次に &man.cvs.1; コマンドを使うことで, 手元にあるリポジトリと同じようにアクセスできるようになります. + + + cvs login コマンドは, CVS + サーバの認証に使われるパスワードを HOME + ディレクトリの .cvspass というファイルに保存します. + このファイルが存在しなければ, 最初に cvs login + を使おうとしたときにエラーが出るでしょう. 空の .cvspass + ファイルを作成して再度ログインに挑戦してください. + CVSup と anoncvs のサービスは本質的に同じ機能ではないかということも言われていますが, ユーザが同期を取る方法を選ぶときに影響を与える, さまざまなトレードオフが存在します. 要約して言えば, CVSup はネットワーク資源の使い方においては非常に効率が良く技術的にもはるかに洗練されたものですが, 相当な手間がかかります. CVSup を使うには特別なクライアントをまずインストールして設定しなくては 1 bit も取ってくることができませんし, さらにそのとき CVSup で取ってくることができるのは, コレクション(collection) と呼ばれる, かなり大きなかたまりだけです. それに対して anoncvs では, CVS モジュールの名前を指定することで特定のプログラムの (lsgrep のような) 個々のファイルから調べることができます. もちろん, anoncvs は CVS リポジトリの読み取り専用の操作に対してのみ適しているので, もしあなたが FreeBSD プロジェクトのものと共有されたなにか ローカルなリポジトリを作ってそこでの開発を 行おうというときには, CVSup だけが唯一の手段となってしまいます. <anchor id="anoncvs-usage">Anonymous CVS を使う &man.cvs.1; を設定して Anonymous CVS リポジトリを使うには単に CVSROOT 環境変数を設定して FreeBSD プロジェクトの anoncvs サーバを指定するだけのことです. この文書を書いているときには, 次のサーバが利用できるようになっています. USA: :pserver:anoncvs@anoncvs.freebsd.org:/home/ncvs (cvs login コマンドを使い, プロンプトが表示されたらパスワード anoncvs を入力してください) + + ドイツ: + :pserver:anoncvs@anoncvs.de.FreeBSD.org:/home/ncvs + (cvs login コマンドを使い, + プロンプトが表示されたらパスワード + anoncvs を入力してください) + + + ドイツ: + :pserver:anoncvs@anoncvs2.de.FreeBSD.org:/home/ncvs + (rsh, pserver, ssh, ssh/2022 が使えます) + + + + 日本: + :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs + (cvs login コマンドを使い, + プロンプトが表示されたらパスワード + anoncvs を入力してください) + CVS はかつて存在した (もしくはこれから存在するものも) ほとんどどんなバージョンの FreeBSD のソースを check out することができますが, あなたは &man.cvs.1; の リビジョン () のオプションや FreeBSD プロジェクトのリポジトリの中で それをどのように指定したらいいものかということを よく知っておく必要があります. タグには 2 種類あって, リビジョンタグとブランチタグがあります. リビジョンタグは特定の改訂版を指しており, それはいつも同じものを意味しています. 一方ブランチタグは, 指定されたときの指定された開発の流れにおける 最も新しい改訂版を示しています. ブランチタグは特定の改訂版を指していないために, その意味はきょうと明日では違うものになっているでしょう. にはユーザが興味を持つであろうリビジョンタグの一覧が載せられています. これらはいずれも Ports Collection に対して使うことはできません. Ports Collection は複数のリビジョンを持っていないからです. ブランチタグを指定したときには, 普通はその開発の流れにおける 最も新しいバージョンのファイルを受け取ることができます. もし以前のバージョンのものが欲しいときには, 日付を オプションを使って指定すればよいです. これ以上のことは &man.cvs.1; man page を見てください. 本当はなにかする前には &man.cvs.1; のマニュアルページの全体をちゃんと読んでからのほうがいいのですが, Anonymous CVS の使い方の本質的なところを簡単に例を挙げて説明します. -CURRENT (&man.ls.1;) をちょっと確認してから消してみます. &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/home/ncvs &prompt.user; cvs login プロンプトが表示されたら, パスワード anoncvs を入力します. &prompt.user; cvs co ls &prompt.user; cvs release -d ls &prompt.user; cvs logout &man.ls.1; のバージョンを 3.X-STABLE ブランチから調べてみます. &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/home/ncvs &prompt.user; cvs login プロンプトが表示されたら, パスワード anoncvs を入力します. &prompt.user; cvs co -rRELENG_3 ls &prompt.user; cvs release -d ls &prompt.user; cvs logout &man.ls.1; の変更点のリストを (unified diff で) 作ってみます. &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/home/ncvs &prompt.user; cvs login プロンプトが表示されたら, パスワード anoncvs を入力します. &prompt.user; cvs rdiff -u -rRELENG_3_0_0_RELEASE -rRELENG_3_4_0_RELEASE ls &prompt.user; cvs logout 他のどんなモジュールの名前が 使われているか検索してみます. &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.freebsd.org:/home/ncvs &prompt.user; cvs login プロンプトが表示されたら, パスワード anoncvs を入力します. &prompt.user; more modules/modules &prompt.user; cvs release -d modules &prompt.user; cvs logout 他の資料 次の資料は CVS を学ぶのに役に立つでしょう. CVS チュートリアル. Cal Poly によるものです. - Cyclic - Software, 商用として CVS を保守しています. + CVS Home, + CVS の開発とサポートをしているコミュニティです. CVSWeb は FreeBSD Project の CVS のための WWW インターフェースです. CTM を使う 訳: &a.hanai;, 1997 年 9 月 13 日. CTM はリモートのディレクトリツリーを中央のツリーに同期させるための 手段です. これはFreeBSDのソースツリーの配布を行なうために開発されまし たが, 時が経つにつれて別の目的にも有用であることがわかるかも しれません. デルタを作り出す処理に関するドキュメントは現在ほとんど ありません. 従って, もしあなたがCTM を他のことに使いたいなら &a.phk;にさらなる情報を問い合わせてください. なぜ<application>CTM</application>を使うの? CTM を使うことにより FreeBSD ソースツリーのローカルコピーを手にいれることができます. ソースツリーが使えることの魅力は数多くあります. 完全な cvs ツリーを追いかけるにしても, ひとつのブランチを追いかける にしても CTM は必要な情報を与えてくれます. もしあなたがFreeBSDのアクティブな開発者であるにもかかわらず お粗末なTCP/IP接続しか持っていなかったり, またはTCP/IP接続が 行なえないとしたら, あるいは単に変更が自動的に送られてきて ほしいというのであれば CTM はそんなあなたのために 作られたのです. アクティブなブランチでは 1 日に最大三つまでのデルタを受け取る必要があります. これが自動的に e-mail で送られてくるという方法を ぜひ検討してみてください. デルタのサイズは常にできるだけ小さく保たれています. 大抵の場合5KBよりも小さく, たまに(10回に1回程度)10-50KBになり, ときおり100KBかもっと大きくなるでしょう. 開発ソースから直接に得られたものを使うことについては, あらかじめパッケージにされたリリースとは違い, いろいろと注意することが あります. これは特に current のソースを選んでいるときは重要です. 最新の FreeBSD を追いかけるを読むことをお勧めします. <application>CTM</application>を使うには何が必要? 二つのものが必要でしょう: CTM プログラムとそれに与える (current レベルを得るための)最初のデルタです. CTM プログラムはバージョン2.0のリリース以来FreeBSDの一部にな りました. もしソースのコピーを持っているなら /usr/src/usr.sbin/CTMにあります. もしFreeBSDの2.0以前のバージョンなら, 最新のCTMのソースを直接 ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/usr.sbin/ctm/ から入手できます. CTM に与える デルタ は二つの方法, FTPまたはe-mail, で得ること ができます. もしインターネットにFTPアクセスできるなら, 次のFTPサイト: ftp://ftp.FreeBSD.org/pub/FreeBSD/CTM/ または, その ミラーサイト が CTM へのアクセスをサポートします. 適切なディレクトリに FTP して README ファイルを入手し, そこからスタートしてください. e-mail によってデルタを得たいという場合は: CTM 配布メーリングリストのいずれかに参加するために &a.majordomo; へ subscribe のメールを送ってください. ctm-cvs-cur は完全な CVS ツリー をサポートします. ctm-src-cur は開発先端ブランチをサポートします ctm-src-2_2 は 2.2 リリースのブランチのサポートです. (もし majordomo を使って参加する方法を知らないのであれば, 最初に help という語を含むメッセージを送ってください. — 使い方の説明が送られてくるでしょう.) メールで CTM による更新ファイルを受け取り始めると, 中身を取り出して使用 するために ctm_rmail プログラムを使うかもしれません. それを完全 に自動で行ないたいなら, /etc/aliases から ctm_rmailプロ グラムを直接使うこともできます. さらに詳しいことはctm_rmail manページを御覧ください. CTM デルタを得るためにどの方法を使うのであっても, ctm-announce@FreeBSD.org メーリングリストに参加するべきです. このメーリングリストは将来的には CTMシステムの操作に関する アナウンスがポストされる唯一の場になるでしょう. メーリングリストに加わるためにはsubscribe ctm-announce と書いた一行だけのメールを &a.majordomo; へ送ってください. はじめて<application>CTM</application>を使い始める CTM デルタを使い始めるためには, これは以降作られる全ての デルタの出発点を手にいれる必要があります. 最初にあなたが何をすでに持っているかをはっきりさせましょう. すべての人は のディレクトリから始めなければなりません. ツリーをサポートしてるあなたの CTM を稼働するためには 指定した のデルタを使う必要があります. いくつかの分岐点 では, あなたの都合により CD 内に分配されているスタータ デルタを使用できるようになっています. しかしながら, これは 頻繁に行われることではありません. 適切な出発点が決まれば, その出発点を CTM が 維持するツリーへ変換するための スタータ 初期デルタを使う必要が あります. 移行デルタは番号の後ろに X をつけたものがそうです (たとえばsrc-cur.3210XEmpty.gz). X の後ろは最初の開始ポイントに対応します. Empty は 空のディレクトリです. ルールとして Empty からの移行デルタは 100 デルタごとに 作られます. ところで, これらは非常に大きいです! XEmptyのデルタは 数十MBの gzip で圧縮されたデータというのが普通です. 一度スタートするためのベースデルタを得ると, それに続く多数の全てのデルタも必要になるでしょう. <application>CTM</application>を日常で使う デルタを適用するためには, 単に &prompt.root; cd /where/ever/you/want/the/stuff &prompt.root; ctm -v -v /where/you/store/your/deltas/src-xxx.* とします. CTM はどれがgzipされているか理解します. 従って最初に gunzip しておく必要はありません. ディスクの節約にもなります. 全体の処理に関して確信するまでは CTM は(ソース)ツリーに対して 何もしません. また, デルタを確かめるためには フラグを使うことができます. このフラグがあると CTM はツリーに対して実際には何も行ないません. 単にデルタの完全性を確認し, 現在のツリーに問題なく使用できるかを確認 するだけです. CTM には他にもオプションがあります. 詳細に関しては マニュアルページを参照するかソースを見てください. 以上でやることは本当に全部です. 新しいデルタを入手した時には, ソースを最新のものにするためにそれを CTMに通すだけです. もしデルタを再ダウンロードするのが 骨の折れる作業であれば, デルタを 消さないでおいてください. なにかおかしなことが起こった場合には置いておけば良かった と思うかもしれません. もしフロッピーディスクしか持っていない状況 であってもコピーを取るのに fdwriteを使うことを考えてください. ローカルの変更を保存する 開発者としてはソースツリー中のファイルを 使って実験したり変更したく なるものです. CTM はローカルの変更を制限つきでサポートします: ファイル foo の存在をチェックする前に, foo.ctm を参照しにいきます. このファイルが存在する場合, CTM は foo の代りにこれを処理します. この動作はローカルの変更を保持する簡単な手段を 提供します: 単に変更したいファイルを拡張子 .ctm 付きのファイル名で コピーするだけです. あとは自由にコードをハックでき, .ctm ファイルの方は CTM が最新状態に保ってくれます. <application>CTM</application> のその他の面白いオプション 更新で変更されるファイルを正確に知る CTM のソースリポジトリに対する変更のリストを オプションを使って決定することができます. これは, 変更のログを保存したい, 変更されたファイルをなんらかの方法で 前・後処理したい, または単にこだわりたい場合には, 役に立つでしょう. 更新前にバックアップを取る CTM の更新によって変更されるファイルすべてのバックアップを 取りたくなることがあります. オプションを指定すると CTM は デルタで変更されるファイルすべてを backup-file としてバックアップするようになります. 更新で変更されるファイルを制限する CTM の更新の範囲を制限したり一連のデルタのから ほんの数ファイルを抽出したくなることがあります. オプションを用い正規表現を指定することで, CTM が処理するファイルのリストを制御することが できます. 例えば, lib/libc/Makefile の最新のコピーを保存してある CTM デルタのコレクションから抽出するには, 以下のコマンドを実行します. &prompt.root; cd /where/ever/you/want/to/extract/it/ &prompt.root; ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.* CTM デルタで指定されたファイルごとに, そして オプションがコマンドラインで指定された順序で適用されます. すべての そして オプションが適用された後に更新対象と選択された場合に限り, CTM はそのファイルを処理します. <application>CTM</application>の将来計画 重要なもの なんらかの CTM システムへの認証機構を用い, 不正な CTM の更新の検出を可能とする. CTM へのオプションを整理する. さもないと混乱し, 直観に反したものになります. その他 ports コレクションに対するデルタもあるのですが, これに興味を持っている人はまだ少ないようです. もしこれに対するメーリングリストが欲しい時はセットアップを行ないますので, わたしの方まで連絡ください. CTM サイト CTM/FreeBSD は以下のミラーサイトから anonymous FTP によって入手できます. もし CTM を anonymous FTP によって手にいれる場合は, 近くのサイトを利用するようにしてください. 何か問題がある場合は, &a.phk;に連絡してください. カリフォルニア, サンフランシスコ近辺, 公式なソース ftp://ftp.FreeBSD.org/pub/FreeBSD/CTM/ ドイツ, トリエル ftp://ftp.uni-trier.de/pub/unix/systems/BSD/FreeBSD/CTM/ 南アフリカ, ctm, sup, CVSupなどの古い差分ファイルのバックアップサーバ ftp://ftp.za.FreeBSD.org/pub/FreeBSD/CTM/ 台湾/中華民国, チャーイー(嘉義) ftp://ctm.tw.FreeBSD.org/pub/freebsd/CTM/ ftp://ctm2.tw.FreeBSD.org/pub/FreeBSD/CTM/ ftp://ctm3.tw.FreeBSD.org/pub/freebsd/CTM/ 近くにミラーサイトがない場合やミラーが不完全な場合は, http://ftpsearch.ntnu.no/ftpsearch/FTP search を試してください. FTP search はノルウェーの Trondheim にある, フリーの素晴らしい アーカイブサーバです. CVSup を使う 訳: &a.jp.iwasaki;, 1997 年 2 月 27 日. 紹介 CVSup は, リモートのサーバホストにあるマスタ CVS リポジトリから ソースツリーを配布し更新するための ソフトウェアパッケージです. FreeBSD のソースは, カリフォルニアにある中心的な開発マシンの CVS リポジトリの 中でメンテナンスしています. CVSup を使用することで, FreeBSD ユーザは 簡単に自分のソースツリーを最新の状態に しておくことができます. CVSuppull モデルとよばれる更新のモデルを採用しています. pull モデルでは, 各クライアントが更新したい場合に更新したい時点で, サーバに更新の問い合わせをおこないます. サーバはクライアントからの 更新の要求を受け身の状態で待ちます. したがって, すべての更新はクライアント主導でおこなわれます. サーバは頼まれもしない更新情報を送るようなことはしません. ユーザは CVSup クライアントを手動で実行して更新をおこなうか, cron ジョブを設定して定期的に自動実行する必要があります. 用語 CVSup のように大文字で表記しているものは, ソフトウェアパッケージ 全体を指します. 主な構成物は, 各ユーザマシンで実行するクライアントである cvsup, FreeBSD の各ミラーサイトで実行するサーバ cvsupd です. FreeBSD の文書やメーリングリストを読んだ際に, sup についての言及を 見かけたかもしれません. supCVSup の前に存在していたもので, 同様の目的で使われていました. CVSup は sup と同じように使用されており, 実際, sup と互換性のあるコンフィグレーションファイルを使用します. CVSup の方がより高速で柔軟性もあるので, もはや sup は FreeBSD プロジェクトでは使用されていません. インストール CVSup をインストールする最も簡単な方法は, FreeBSD Ports コレクションのパッケージ からコンパイル済みの net/cvsup パッケージをインストールすることです. もしくは, net/cvsup でも構いません. ただし, net/cvsup は Modula-3 システムに依存していて, 構築にかかる時間, ディスクスペースは比較的大きくなります. + + たとえばサーバのような XFree86 + がインストールされていない計算機で CVSup + を使おうとしているのであれば, 必ず CVSup + GUI が含まれていない + net/cvsup-without-gui + を使ってください. + + もし, あなたに CVSup に関して全く知識がなく, 自動で設定ファイルをセットアップして, クリックするだけで転送を行なえるインターフェイスを提供してくれるような, 単一のパッケージをインストールしたいと考えているなら, - - cvsupit パッケージを利用して下さい. + net/cvsupit + パッケージを利用して下さい. これは &man.pkg.add.1; するだけで良く, 設定は, その際にメニュー形式で行なうことができるようになっています. CVSup のコンフィグレーション CVSup の動作は, supfile と呼ばれるコンフィグレーションファイルで 制御します. supfile のサンプルは, ディレクトリ /usr/share/examples/cvsup/ の下にあります. supfile には以下の cvsup に関する質問への答えを記述します: どのファイルを受け取りたいのか? どのバージョンのものが欲しいのか? どこから入手したいのか? 自分のマシンのどこに置きたいのか? どこに status ファイルを置きたいのか? 次のセクションで, これらの質問に順番に答えながら典型的な supfile を組み立てていきます. 最初に supfile の全体構造を説明します. supfile はテキストファイルです. コメントは # から行末までです. 空行とコメントだけの行は無視します. 残りの各行には, ユーザが受け取りたいファイル群について記述します. 行の始めは, サーバ側で定義した論理的なファイルのグループである コレクションの名称です. コレクションの名称を指定して, 欲しいファイル群を サーバに伝えます. コレクション名の後には, ホワイトスペースで区切られた 0 個以上のフィールドが続きます. これらのフィールドが上記の質問に対する答えになります. フィールドには 2 種類あります: flag フィールドと value フィールドです. flag フィールドは deletecompress のような 単独のキーワードから成ります. また, value フィールドもキーワードで始まりますが, キーワードの後にはホワイトスペースは入らず, = と二つめの単語が続きます. 例えば, release=cvs は value フィールドです. 通常, supfile には受け取りたいコレクションを一つ以上指定します. supfile を組み立てる一つの方法として, コレクション毎にすべての関係の あるフィールドを明示的に指定する方法があります. しかし, これでは supfile のすべてのコレクションに対して ほとんどのフィールドが同じになるため, 行が非常に長くなってしまい不便になります. これらの問題を避けるため, CVSup ではデフォルトを指定することのできる メカニズムが提供されています. 特殊な擬似コレクション名 *default で始まる行は, supfile 中の後続の コレクションに対して使用する flag フィールドと value フィールドのデフォルトを設定するために利用できます. 個々のコレクションで固有の値を指定すると, デフォルト値を無効にできます. また 行を追加すると, supfile の途中からデフォルト値の変更や追加が可能になります. これまでの予備知識を基に, FreeBSD-current のメインのソースツリーを受け取って更新するための supfile を組み立ててみましょう. どのファイルを受け取りたいのか? CVSup を通して入手できるファイルは コレクション と呼ばれる名前の付けられたグループにまとめられています. 利用可能なコレクションについては 後の節の中で説明しています. ここでは, FreeBSD システムのメインのソースツリー全体 を受け取るための設定例を紹介します. すべてを含む src-all - という単一の大きなコレクションがあります. + という単一の大きなコレクションがあります. supfile を組み立てる最初のステップとして, これらのコレクションを一行に一つずつ記述します - (この場合は一行だけです). + (この場合は一行だけです). src-all どのバージョンのものが欲しいのか? CVSup を使用すると, かつて存在していたことのある, 事実上どのバージョンの ソースでも受け取ることができます. これは cvsupd サーバがすべてのバージョンを含む CVS リポジトリに基づいて動作することにより, 実現されています. tag= および の value フィールドを使用して, 欲しいバージョンの 一つを指定します. tag= のフィールドの指定は正確に行うように十分注意 してください. いくつかのタグは特定のコレクションに 対してのみ有効です. タグの綴りが違っていたり不適切なタグを指定すると, CVSup はユーザが消し たくないファイルまで削除してしまいます. 特に ports-* のコレクション に対しては tag=. だけ を指定するようにしてください. tag= フィールドはリポジトリ中のシンボリックタグを指定します. tag には revision tag と branch tag の二種類があります. revision tag は特定のリビジョンを指します. これは, 毎日同じ状態に保つことになります. 一方 branch tag は, ある時点での開発分流の最新のリビジョンを指します. branch tag は特定のリビジョンを指定している訳ではないので, 今日と明日では 異なるリビジョンを参照することになるかもしれません. にはユーザが興味を持つであろうリビジョンタグの一覧が載せられています. CVSup の設定ファイル中でタグを指定する時は, tag= に続けて書きます (RELENG_4tag=RELENG_4 になります). tag=. だけが ports コレクションには 適切であることに注意してください. tag 名を示した通りにタイプされているか十分注意してく ださい. CVSup は tag 名が正しいかどうかを見分けることはできません. tag が間違っていた場合, たまたまファイルがまったく存在しない正しい tag が 指定されたものとしてCVSup は動作します. その場合は, 現在あるソースが削 除されるでしょう. branch tag を指定した際には, 通常はその開発分流の最新バージョンの ファイルを受け取ります. いくらか前のバージョンを受け取りたい場合は, の value フィールドを使って日付を指定することで, これを実現することが できます. &man.cvsup.1; のマニュアルページで, その方法を説明しています. 例として, FreeBSD-current を受け取りたいとします. 次の行を supfile の始めに追加します: *default tag=. tag= フィールドも date= フィールドも指定しなかった場合に 動き出す重要な特殊なケースがあります. そのケースでは, 特定のバージョンの ファイルを受け取るのではなく, サーバの CVS リポジトリから実際の RCS ファイルを直接受け取ります. 一般的に開発者はこの処理のモードが 好きなようです. 彼らのシステム上にリポジトリそのものの コピーを維持することで, リビジョン履歴を閲覧し過去のバージョンの ファイルを検査できるようになります. しかし, これには大きなディスクスペースが必要になります. どこから入手したいのか? 更新情報をどこから入手するかを cvsup に伝えるために host= フィールドを使用します. CVSup ミラーサイト のどこからでも入手できますが, ネット上での最寄りのサイトを選ぶべきでしょう. この例では, 仮想上の FreeBSD 配布サイト cvsup666.FreeBSD.org を使用します: *default host=cvsup666.FreeBSD.org CVSup を実行する前にホスト名を 実在のものに変更する必要があります. どのように cvsup を実行しても, この設定は を 使用してコマンドラインで変更することができます. 自分のマシンのどこに置きたいのか? prefix= フィールドは, cvsup に受け取ったファイルをどこに置くかを 伝えます. この例では, ソースファイルを直接メインのソースツリー /usr/src に置きます. src ディレクトリはすでにファイルを受け取るために 選択したコレクションで暗黙に指定しているので, これは正しい仕様となります: *default prefix=/usr どこに status ファイルを置きたいのか? CVSup クライアントは base ディレクトリと呼ばれる場所に, ある status ファイルを維持しています. すでに受け取った更新情報を追従し続けることで, これらのファイルは CVSup がより効果的に動作することを支援します. 標準の base ディレクトリ /usr/local/etc/cvsup を使用します: *default base=/usr/local/etc/cvsup supfile に指定がない場合は, この設定をデフォルトで使用しますので, 実際には上の行は必要ありません. base ディレクトリが存在しない場合は作成しておきましょう. base ディレクトリが存在しない場合, cvsup クライアントは実行を拒否します. その他もろもろの supfile の設定: 通常 supfile に入れておくべき行がもう一つあります: *default release=cvs delete use-rel-suffix compress release=cvs は, サーバがメインの FreeBSD CVS リポジトリから その情報を取得するように指示します. ほとんどの場合はこのようにしておきますが, ここでの説明の範疇をこえるような 状況では他の指定をすることも可能です. deleteCVSup にファイルを削除することを許可します. CVSup が ソースツリーを完全に最新の状態に 保てるようにするためには, これは常に 指定しておくべきでしょう. CVSup は, これらの責任範囲のファイルだけを 慎重に削除します. たまたま存在する他の余分なファイルについては, まったく手をつけずに残しておきます. use-rel-suffix は ... 神秘的なものです. これについて本当に知りたい人は, &man.cvsup.1; のマニュアルページをご覧ください. でなければ, 何も考えずに指定してみてください. compress は通信チャネルで gzip 形式の圧縮の使用を有効にします. ご使用のネットワーク接続が T1 speed 以上である場合, この圧縮を使用しない方がよいかもしれません. そうでない場合は十分に役に立ちます. supfile の例のまとめ: 以下は supfile の例の全体です: *default tag=. *default host=cvsup666.FreeBSD.org *default prefix=/usr *default base=/usr/local/etc/cvsup *default release=cvs delete use-rel-suffix compress src-all 拒否ファイル(refuse file) 既に述べたように, CVSup取り寄せ法(pull method)を用いるのですが, これは基本的に次のようなことを意味します. まずあなたが CVSup サーバに接続します. するとサーバは あなたがダウンロードできるのはこれこれですと言います. それに対し, あなたが使っているクライアントは わかりました. では, これとこれとこれをもらいますと答えます. デフォルトの設定の CVSup クライアントは, 設定ファイルで選んだコレクションとタグに適合する すべてのファイルを取得します. しかし, これは常にあなたの望む動作と一致するとは限りません. 特に doc や ports や www のツリーを同期させる場合などはそうでしょう. ほとんどの人は四か国語も五か国語も操れるわけではありませんから, 特定の言語のファイルのダウンロードは必要ないでしょう. Ports コレクションを CVSup で取得する場合には, 各コレクションを個別に指定することができます (たとえば, 単に ports-all とするかわりに ports-astrology, ports-biology などと書きます). 一方, doc と www のツリーは言語別のコレクションになっていません. そこであなたは CVSup のたくさんある洗練された機能の一つ, 拒否ファイル(refuse file) 機能を使う必要があります. 拒否ファイル(refuse file)CVSup に対し, コレクションに含まれる一部のファイルを取得することを伝えます. 言い換えれば, それはクライアントに対し, サーバから来る一部のファイルを拒否するよう指定するということです. 拒否ファイルは base/sup/refuse にあります(もしファイルがない場合には作成してください). base は supfile 内で定義されています. デフォルトでは /usr/local/etc/cvsup です. つまり, 拒否ファイルのデフォルトは /usr/local/etc/cvsup/sup/refuse ということになります. 拒否ファイルの書式は, 単にダウンロードしたくないファイルや ディレクトリの名前が書いてあるだけの非常にシンプルなものです. たとえば, 英語以外にはドイツ語を少し話せるだけの人で, - ドイツ語のアプリケーションを必要と感じなければ + ドイツ語のアプリケーション (やその他英語以外の言語のためのアプリケーション) + を必要と感じなければ 以下のような拒否ファイルが考えられます. ports/chinese +ports/french ports/german +ports/hebrew ports/japanese ports/korean ports/russian +ports/ukrainian ports/vietnamese +doc/de_DE.ISO8859-1 +doc/el_GR.ISO8859-7 doc/es_ES.ISO8859-1 -doc/ja_JP.eucJP - - 他の言語についても同様です. +doc/fr_FR.ISO8859-1 +doc/it_IT.ISO8859-15 +doc/ja_JP.eucJP +doc/nl_NL.ISO8859-1 +doc/pt_BR.ISO8859-1 +doc/ru_RU.KOI8-R +doc/sr_YU.ISO8859-2 +doc/zh_TW.Big5 + + 他の言語についても同様です (全リストは FreeBSD + FTP サーバ をご覧になってください). 拒否ファイルの中ではリポジトリの名前が ディレクトリの先頭部分に対応することに注意してください. この実に便利な機能を使うと まったく必要としないファイルをダウンロードする必要がなくなり, インターネット接続の回線が遅かったり従量制で課金されている人は 貴重な時間を節約できるようになります. 拒否ファイルの詳細や CVSup が持つその他の便利な機能に関しては マニュアルページを参照してください. <application>CVSup</application> の実行 さて, 更新の準備ができました. これを実行するコマンドラインは実に簡単です: &prompt.root; cvsup supfile もちろん, ここでの supfile は作成したばかりの supfile のファイル名です. X11 環境で実行するものと仮定して, cvsup は 通常の操作に必要なボタンを持つ GUI ウィンドウを表示します. go ボタンを押して, 実行を監視してください. この例では実際の /usr/src ツリーを更新しているので, cvsup にファイルを更新するのに必要なパーミッションを与えるために, ユーザ root で実行する必要があります. コンフィグレーションファイルを作ったばかりで, しかも以前にこのプログラムを実行したことがないので, 神経質になるのは無理もない話だと思います. 大切なファイルに触らずに試しに実行する簡単な方法があります. どこか適当な場所に空のディレクトリを作成して, コマンドラインの引数で指定するだけです: &prompt.root; mkdir /var/tmp/dest &prompt.root; cvsup supfile /var/tmp/dest 指定したディレクトリは, すべての更新されるファイルの 更新先ディレクトリとして使用します. CVSup/usr/src の下のファイルを検査しますが, 変更や削除はまったくおこないません. かわりに /var/tmp/dest/usr/src に更新されたすべてのファイルが置かれるようになります. この方法で実行した場合は, CVSup は base ディレクトリの status ファイルを更新せずにそのままにします. これらのファイルの新しいバージョンは指定されたディレクトリ に書き込まれます. /usr/src の読み取り許可がある限り, このような試し実行のためにユーザ - root になる必要はありません. + root になる必要はありません. X11 を利用していないとか単に GUI が気に入らない場合は, cvsup 起動時にコマンドラインに 二つほどオプションを追加する必要があります: &prompt.root; cvsup -g -L 2 supfile オプションは CVSup に GUI を使用しないように伝えます. X11 を利用していない場合には自動的に指定されますが, そうでない場合は 明示的に指定します. オプションは cvsup にファイル更新中の詳細情報をプリントアウト するように伝えます. 冗長性には から までの三つのレベル があります. デフォルトは 0 であり, エラーメッセージ以外はまったく出力 しません. たくさんの他のオプション変数があります. それらの簡単な一覧は cvsup -H で表示されます. より詳しい説明はマニュアルページをご覧ください. 動作している更新の方法に満足したら, &man.cron.8; を使って CVSup を定期的に 実行させる準備をすることができます. cron から起動する際には, 明示的に CVSup が GUI を使わないようにする必要があります. <application>CVSup</application> ファイルコレクション CVSup 経由で入手できるファイルコレクションは 階層的に組織化されています. いくつか大きなコレクションがあり, それらは小さなサブコレクションに 分割されています. 大きなコレクションは, そのサブコレクション毎に 受信することと同じことになります. 下の一覧ではコレクション間の階層関係を 字下げして表現します. 最も一般的に使用するコレクションは src-all, ports-all です. 他のコレクションは特別な目的を持つ人達だけが使用しており, ミラーサイトはそれらのすべてを 持っていないかもしれません. cvs-all release=cvs メインの FreeBSD CVS リポジトリであり, 暗号のコードを含んでいます. distrib release=cvs FreeBSD の配布とミラーに関連するファイルです. doc-all release=cvs FreeBSD ハンドブックおよびその他のドキュメントのソースです. これには FreeBSD web サイトのファイルは含まれません. ports-all release=cvs FreeBSD の Ports コレクションです. ports-archivers release=cvs アーカイビングのツール. ports-astro release=cvs 天文学関連の ports. ports-audio release=cvs サウンドサポート. ports-base release=cvs /usr/ports のトップにあるその他のファイル. ports-benchmarks release=cvs ベンチマークプログラム. ports-biology release=cvs 植物学関連のプログラム. ports-cad release=cvs CAD ツール. ports-chinese release=cvs 中国語サポート. ports-comms release=cvs 通信ソフトウェア. ports-converters release=cvs 文字コードコンバータ. ports-databases release=cvs データベース. ports-deskutils release=cvs コンピュータが発明される前に 卓上で使われていたものたち. ports-devel release=cvs 開発ユーティリティ. ports-editors release=cvs エディタ. ports-emulators release=cvs 他の OS のエミュレータ. ports-ftp release=cvs FTP クライアントとサーバ. ports-games release=cvs ゲーム. ports-german release=cvs ドイツ語サポート. ports-graphics release=cvs グラフィックユーティリティ. ports-irc release=cvs インターネットリレーチャット(IRC)用のユーティリティ ports-japanese release=cvs 日本語サポート. ports-java release=cvs Java ユーティリティ ports-korean release=cvs 韓国語サポート. ports-lang release=cvs プログラミング言語. ports-mail release=cvs メールソフトウェア. ports-math release=cvs 数値計算ソフトウェア. ports-mbone release=cvs MBone アプリケーション. ports-misc release=cvs 色々なユーティリティ. ports-net release=cvs ネットワーキングソフトウェア. ports-news release=cvs USENET ニュースのソフトウェア. ports-palm release=cvs - 3Com Palm(tm) シリーズ用ソフトウェア. + 3Com Palm シリーズ用ソフトウェア. ports-print release=cvs 印刷ソフトウェア. ports-russian release=cvs ロシア語サポート. ports-security release=cvs セキュリティユーティリティ. ports-shells release=cvs コマンドラインシェル. ports-sysutils release=cvs システムユーティリティ. ports-textproc release=cvs 文書処理ユーティリティ (デスクトップパブリッシングは含まない). ports-vietnamese release=cvs ベトナム語サポート. ports-www release=cvs World Wide Web 関連のソフトウェア. ports-x11 release=cvs X window システムをサポートする ports. ports-x11-clocks release=cvs X11 上で動作する時計の数々. ports-x11-fm release=cvs X11 上で動作するファイラ. ports-x11-fonts release=cvs X11 のフォントとフォントユーティリティ. ports-x11-toolkits release=cvs X11 のツールキット. ports-x11-servers 各種 X11 サーバ ports-x11-wm release=cvs X11 のウィンドウマネージャ. src-all release=cvs メインの FreeBSD ソース群であり, 暗号のコードを含んでいます. src-base release=cvs /usr/src のトップにあるその他のファイル. src-bin release=cvs シングルユーザモードで必要な ユーザユーティリティ (/usr/src/bin). src-contrib release=cvs FreeBSD プロジェクト外部からの ユーティリティおよびライブラリ, 比較的無修正 (/usr/src/contrib). - - src-crypto release=cvs + + src-crypto release=cvs - - FreeBSD プロジェクトの外部で開発された暗号ユーティリティとライブラリ. - ほとんどそのままの形で使われます. - (/usr/src/crypto). - - + + FreeBSD プロジェクトの外部で開発された暗号ユーティリティとライブラリ. + ほとんどそのままの形で使われます. + (/usr/src/crypto). + + - - src-eBones release=cvs + + src-eBones release=cvs - - Kerberos と DES - (/usr/src/eBones). - 現在の FreeBSD リリースでは使われていません. - - + + Kerberos と DES + (/usr/src/eBones). + 現在の FreeBSD リリースでは使われていません. + + src-etc release=cvs システムコンフィグレーションファイル (/usr/src/etc). src-games release=cvs ゲーム (/usr/src/games). src-gnu release=cvs GNU Public License 下にあるユーティリティ (/usr/src/gnu). src-include release=cvs ヘッダファイル (/usr/src/include). src-kerberos5 release=cvs Kerberos5 セキュリティパッケージ (/usr/src/kerberos5). src-kerberosIV release=cvs KerberosIV セキュリティパッケージ (/usr/src/kerberosIV). src-lib release=cvs ライブラリ (/usr/src/lib). src-libexec release=cvs システムプログラムであり, 通常は他のプログラムから実行される (/usr/src/libexec). src-release release=cvs FreeBSD の release を構築するために必要なファイル (/usr/src/release). - - src-secure release=cvs - - - DES (/usr/src/secure). - - - src-sbin release=cvs シングルユーザモード用の システムユーティリティ (/usr/src/sbin). + + src-secure + release=cvs + + + 暗号化ライブラリとコマンド + (/usr/src/secure). + + + src-share release=cvs 多様なシステム間で共有可能なファイル (/usr/src/share). src-sys release=cvs カーネル (/usr/src/sys). - - src-sys-crypto - release=cvs + + src-sys-crypto + release=cvs - - カーネル用の暗号コード - (/usr/src/sys/crypto). - - + + カーネル用の暗号コード + (/usr/src/sys/crypto). + + src-tools release=cvs FreeBSD の保守用の色々なツール (/usr/src/tools). src-usrbin release=cvs ユーザユーティリティ (/usr/src/usr.bin). src-usrsbin release=cvs システムユーティリティ (/usr/src/usr.sbin). www release=cvs - FreeBSD WWW サイトのソースです. + FreeBSD WWW サイトのソースです. distrib release=self CVSup サーバ自身のコンフィグレーションファイルです. CVSup ミラーサイトが使用します. gnats release=current GNATS バグトラッキングデータベースです. mail-archive release=current FreeBSD 関連メーリングリストのアーカイブ. www release=current 前処理された FreeBSD www サイトのファイルです (ソースではありません). WWW ミラーサイトが使用します. 詳細について CVSup の FAQ や CVSup に関するその他の情報については The CVSup Home Page をご覧ください. CVSup のほとんどの FreeBSD 関連の議論は &a.hackers; でおこなわれています. ソフトウェアの新しいバージョンは &a.announce; で アナウンスされます. 質問とバグ報告はプログラムの作者, cvsup-bugs@polstra.com へ 送ってください. CVSup サイト FreeBSD の CVSup サーバは以下のサイトで稼働しています: アルゼンチン cvsup.ar.FreeBSD.org (保守担当 msagre@cactus.fi.uba.ar) オーストラリア cvsup.au.FreeBSD.org (保守担当 dawes@xfree86.org) cvsup3.au.FreeBSD.org (保守担当 FreeBSD@admin.gil.com.au) オーストリア cvsup.at.FreeBSD.org (保守担当 postmaster@wu-wien.ac.at) ブラジル cvsup.br.FreeBSD.org (保守担当 cvsup@cvsup.br.FreeBSD.org) cvsup2.br.FreeBSD.org (保守担当 tps@ti.sk) cvsup3.br.FreeBSD.org (保守担当 camposr@matrix.com.br) cvsup4.br.FreeBSD.org (保守担当 cvsup@tcoip.com.br) カナダ cvsup.ca.FreeBSD.org (保守担当 dan@jaded.net) cvsup2.ca.FreeBSD.org (保守担当 hostmaster@ca.FreeBSD.org) 中国 cvsup.cn.FreeBSD.org (保守担当 phj@cn.FreeBSD.org) - チェコ + チェコ - - - - cvsup.cz.FreeBSD.org - (保守担当 cejkar@dcse.fee.vutbr.cz) - - - + + + + cvsup.cz.FreeBSD.org + (保守担当 cejkar@dcse.fee.vutbr.cz) + + + デンマーク - - + + cvsup.dk.FreeBSD.org (保守担当 jesper@skriver.dk) - - + + エストニア cvsup.ee.FreeBSD.org (保守担当 taavi@uninet.ee) フィンランド cvsup.fi.FreeBSD.org (保守担当 count@key.sms.fi) - - cvsup2.fi.FreeBSD.org - (保守担当 count@key.sms.fi) - + + cvsup2.fi.FreeBSD.org + (保守担当 count@key.sms.fi) + フランス cvsup.fr.FreeBSD.org (保守担当 hostmaster@fr.FreeBSD.org) cvsup2.fr.FreeBSD.org (保守担当 ftpmaint@uvsq.fr) - + + + cvsup3.fr.FreeBSD.org + (保守担当 ftpmaint@enst.fr) + + + + cvsup4.fr.FreeBSD.org + (保守担当 ftpmaster@t-online.fr) + + + + cvsup5.fr.FreeBSD.org + (保守担当 freebsdcvsup@teaser.net) + + + + cvsup8.fr.FreeBSD.org + (保守担当 ftpmaint@crc.u-strasbg.fr) + + ドイツ cvsup.de.FreeBSD.org (保守担当 cvsup@cosmo-project.de) - cvsup1.de.FreeBSD.org (maintainer - (保守担当 wosch@FreeBSD.org) - - - cvsup2.de.FreeBSD.org (保守担当 cvsup@nikoma.de) cvsup3.de.FreeBSD.org (保守担当 ag@leo.org) cvsup4.de.FreeBSD.org (保守担当 cvsup@cosmo-project.de) cvsup5.de.FreeBSD.org - (保守担当 rse@FreeBSD.org) + (保守担当 + &a.rse;) + + + + cvsup6.de.FreeBSD.org + (保守担当 adminmail@heitec.net) + + + + cvsup7.de.FreeBSD.org + (保守担当 karsten@rohrbach.de) + + ギリシャ - - - cvsup.gr.FreeBSD.org - (保守担当 ftpadm@duth.gr) - + + + cvsup.gr.FreeBSD.org + (保守担当 ftpadm@duth.gr) + cvsup2.gr.FreeBSD.org (保守担当 paschos@cs.uoi.gr) - + アイスランド - - - cvsup.is.FreeBSD.org - (保守担当 cvsup@cvsup1.is.FreeBSD.org) - - - + + + cvsup.is.FreeBSD.org + (保守担当 hostmaster@is.FreeBSD.org) + + + アイルランド - - + + cvsup.ie.FreeBSD.org - (保守担当 dwmalone@maths.tcd.ie), - トリニティ大学, ダブリン - - + (保守担当 dwmalone@maths.tcd.ie), + トリニティ大学, ダブリン + + 日本 cvsup.jp.FreeBSD.org (保守担当 cvsupadm@jp.FreeBSD.org) cvsup2.jp.FreeBSD.org - (保守担当 max@FreeBSD.org) + (保守担当 &a.max;) cvsup3.jp.FreeBSD.org (保守担当 shige@cin.nihon-u.ac.jp) cvsup4.jp.FreeBSD.org (保守担当 cvsup-admin@ftp.media.kyoto-u.ac.jp) cvsup5.jp.FreeBSD.org (保守担当 cvsup@imasy.or.jp) cvsup6.jp.FreeBSD.org (保守担当 cvsupadm@jp.FreeBSD.org) 韓国 cvsup.kr.FreeBSD.org (保守担当 cjh@kr.FreeBSD.org) cvsup2.kr.FreeBSD.org (保守担当 holywar@mail.holywar.net) + + ラトビア + + + + + cvsup.lv.FreeBSD.org + (保守担当 system@soft.lv) + + + + + リトアニア cvsup.lt.FreeBSD.org (保守担当 domas.mituzas@delfi.lt) + + + cvsup2.lt.FreeBSD.org + (保守担当 vaidas.damosevicius@sampo.lt) + - ニュージーランド + ニュージーランド - - - - cvsup.nz.FreeBSD.org (保守担当 - cvsup@langille.org) - + + + + cvsup.nz.FreeBSD.org + (保守担当 cvsup@langille.org) + - + オランダ cvsup.nl.FreeBSD.org (保守担当 xaa@xaa.iae.nl) cvsup2.nl.FreeBSD.org (保守担当 cvsup@nl.uu.net) + + + cvsup3.nl.FreeBSD.org + (保守担当 cvsup@vuurwerk.nl) + ノルウェー cvsup.no.FreeBSD.org (保守担当 Per.Hove@math.ntnu.no) ポーランド cvsup.pl.FreeBSD.org (保守担当 Mariusz@kam.pl) ポルトガル cvsup.pt.FreeBSD.org (保守担当 jpedras@webvolution.net) + ルーマニア + + + + + cvsup.ro.FreeBSD.org + (保守担当 razor@ldc.ro) + + + + + + ロシア cvsup.ru.FreeBSD.org (保守担当 ache@nagual.pp.ru) cvsup2.ru.FreeBSD.org (保守担当 dv@dv.ru) cvsup3.ru.FreeBSD.org (保守担当 fjoe@iclub.nsu.ru) cvsup4.ru.FreeBSD.org (保守担当 zhecka@klondike.ru) cvsup5.ru.FreeBSD.org (保守担当 maxim@macomnet.ru) cvsup6.ru.FreeBSD.org (保守担当 pvr@corbina.net) + + サンマリノ + + + + + cvsup.sm.FreeBSD.org + (保守担当 sysadmin@alexdupre.com) + + + + + スロヴァキア共和国 cvsup.sk.FreeBSD.org (保守担当 tps@tps.sk) cvsup2.sk.FreeBSD.org (保守担当 tps@tps.sk) - スロベニア + スロベニア - - - - cvsup.si.FreeBSD.org - (保守担当 blaz@si.FreeBSD.org) - - - + + + + cvsup.si.FreeBSD.org + (保守担当 blaz@si.FreeBSD.org) + + + 南アフリカ cvsup.za.FreeBSD.org - (保守担当 markm@FreeBSD.org) + (保守担当 &a.markm;) cvsup2.za.FreeBSD.org - (保守担当 markm@FreeBSD.org) + (保守担当 &a.markm;) - スペイン + スペイン - - cvsup.es.FreeBSD.org - (保守担当 jesusr@FreeBSD.org) - + + cvsup.es.FreeBSD.org + (保守担当 &a.jesusr;) + - - cvsup2.es.FreeBSD.org - (保守担当 jesusr@FreeBSD.org) - + + cvsup2.es.FreeBSD.org + (保守担当 &a.jesusr;) + - - cvsup3.es.FreeBSD.org - (保守担当 jose@we.lc.ehu.es) - - - + + cvsup3.es.FreeBSD.org + (保守担当 jose@we.lc.ehu.es) + + + スウェーデン - - + + cvsup.se.FreeBSD.org (保守担当 pantzer@ludd.luth.se) - + - + cvsup2.se.FreeBSD.org (保守担当 cvsup@dataphone.net) - - + + 台湾 cvsup.tw.FreeBSD.org (保守担当 jdli@FreeBSD.csie.nctu.edu.tw) cvsup2.tw.FreeBSD.org (保守担当 ycheng@sinica.edu.tw) cvsup3.tw.FreeBSD.org - (保守担当 foxfair@FreeBSD.org) + (保守担当 tjs@cdpa.nsysu.edu.tw) ウクライナ cvsup2.ua.FreeBSD.org (保守担当 freebsd-mnt@lucky.net) cvsup3.ua.FreeBSD.org (保守担当 ftpmaster@ukr.net), キエフ cvsup4.ua.FreeBSD.org (保守担当 phantom@cris.net) + + + cvsup5.ua.FreeBSD.org + (保守担当 never@nevermind.kiev.ua) + イギリス cvsup.uk.FreeBSD.org (保守担当 ftp-admin@plig.net) cvsup2.uk.FreeBSD.org - (保守担当 brian@FreeBSD.org) + (保守担当 &a.brian;) cvsup3.uk.FreeBSD.org (保守担当 ben.hughes@uk.easynet.net) + + + cvsup4.uk.FreeBSD.org + (保守担当 ejb@leguin.org.uk) + + + + cvsup5.uk.FreeBSD.org + (保守担当 mirror@teleglobe.net) + アメリカ cvsup1.FreeBSD.org (保守担当 cwt@networks.cwu.edu), ワシントン州 cvsup2.FreeBSD.org - (保守担当 jdp@FreeBSD.org), - カリフォルニア州 + (保守担当 djs@secure.net と &a.nectar;), + バージニア州 cvsup3.FreeBSD.org - (保守担当 wollman@FreeBSD.org), + (保守担当 &a.wollman), マサチューセッツ州 cvsup5.FreeBSD.org (保守担当 mjr@blackened.com), アリゾナ州 cvsup6.FreeBSD.org (保守担当 cvsup@cvsup.adelphiacom.net), イリノイ州 cvsup7.FreeBSD.org - (保守担当 jdp@FreeBSD.org), + (保守担当 &a.jdp;), ワシントン州 cvsup8.FreeBSD.org (保守担当 hostmaster@bigmirror.com), ワシントン州 cvsup9.FreeBSD.org - (保守担当 qbsd@uswest.net), + (保守担当 &a.jdp;), ミネソタ州 cvsup10.FreeBSD.org - (保守担当 jdp@FreeBSD.org), + (保守担当 &a.jdp;), カリフォルニア州 cvsup11.FreeBSD.org (保守担当 cvsup@research.uu.net), バージニア州 cvsup12.FreeBSD.org - (保守担当 will@FreeBSD.org), + (保守担当 &a.will;), インディアナ州 cvsup13.FreeBSD.org (保守担当 dima@valueclick.com), カリフォルニア州 cvsup14.FreeBSD.org (保守担当 freebsd-cvsup@mfnx.net), カリフォルニア州 cvsup15.FreeBSD.org (保守担当 cvsup@math.uic.edu), イリノイ州 cvsup16.FreeBSD.org (保守担当 pth3k@virginia.edu), バージニア州 cvsup17.FreeBSD.org (保守担当 cvsup@mirrortree.com), ワシントン州 CVS タグ cvsCVSup でソースを入手したり同期させたりするとき, リビジョンタグ (日時で参照されている) を指定しなければなりません. 指定可能なタグを以下に示しますが, それぞれのタグは FreeBSD の異なるブランチの異なる瞬間を指しています. ports ツリーにはこの手のタグは一切ありません. つねに CURRENT なのです. もっとも一般的なタグは以下のとおりです. HEAD 主要部をなす流れ, すなわち FreeBSD-CURRENT のための名前です. また, どのリビジョンも指定されなかったときにはこれになります. CVSup では, このタグは . で表されます (句読点ではありません. . 文字そのものです). CVS ではこれがリビジョンタグが指定されなかった時のデフォルトです. STABLE な計算機上に CURRENT のソースをチェクアウトしたりアップデートするのは, 思うところがあってやっているのというのでなければ, よい考えとはいえません. RELENG_4 FreeBSD-4.X の開発のための流れです. FreeBSD-STABLE としても知られています. + + RELENG_4_6 + + + FreeBSD-4.6 用のリリースブランチです. + これはセキュリティ勧告や重要な修正が行なわれる場合にのみ使われます. + + + + + RELENG_4_5 + + + FreeBSD-4.5 用のリリースブランチです. + これはセキュリティ勧告や重要な修正が行なわれる場合にのみ使われます. + + + RELENG_4_4 FreeBSD-4.4 用のリリースブランチです. これはセキュリティ勧告や重要な修正が行なわれる場合にのみ使われます. RELENG_4_3 FreeBSD-4.3 用のリリースブランチです. これはセキュリティ勧告や重要な修正が行なわれる場合にのみ使われます. RELENG_3 FreeBSD-3.X の開発のための流れです. 3.X-STABLE としても知られています. RELENG_2_2 FreeBSD-2.2.X の開発のための流れです. 2.2-STABLE としても知られています. このブランチは大部分が すたれています. 指定可能なこの他のリビジョンタグは以下のとおりです. + + RELENG_4_6_0_RELEASE + + + FreeBSD 4.6 です. + + + + + RELENG_4_5_0_RELEASE + + + FreeBSD 4.5 です. + + + RELENG_4_4_0_RELEASE FreeBSD 4.4 です. RELENG_4_3_0_RELEASE FreeBSD 4.3 です. RELENG_4_2_0_RELEASE FreeBSD 4.2 です. RELENG_4_1_1_RELEASE FreeBSD 4.1.1 です. RELENG_4_1_0_RELEASE FreeBSD 4.1 です. RELENG_4_0_0_RELEASE FreeBSD 4.0 です. RELENG_3_5_0_RELEASE FreeBSD-3.5 です. RELENG_3_4_0_RELEASE FreeBSD-3.4 です. RELENG_3_3_0_RELEASE FreeBSD-3.3 です. RELENG_3_2_0_RELEASE FreeBSD-3.2 です. RELENG_3_1_0_RELEASE FreeBSD-3.1 です. RELENG_3_0_0_RELEASE FreeBSD-3.0 です. RELENG_2_2_8_RELEASE FreeBSD-2.2.8 です. RELENG_2_2_7_RELEASE FreeBSD-2.2.7 です. RELENG_2_2_6_RELEASE FreeBSD-2.2.6 です. RELENG_2_2_5_RELEASE FreeBSD-2.2.5 です. RELENG_2_2_2_RELEASE FreeBSD-2.2.2 です. RELENG_2_2_1_RELEASE FreeBSD-2.2.1 です. RELENG_2_2_0_RELEASE FreeBSD-2.2.0 です. AFS サイト FreeBSD の AFS サーバは以下のサイトで稼働しています: スウェーデン ファイルは以下の場所にあります: /afs/stacken.kth.se/ftp/pub/FreeBSD/ stacken.kth.se # Stacken Computer Club, KTH, Sweden 130.237.234.43 #hot.stacken.kth.se 130.237.237.230 #fishburger.stacken.kth.se 130.237.234.3 #milko.stacken.kth.se (保守担当 ftp@stacken.kth.se)
diff --git a/ja_JP.eucJP/books/handbook/x11/chapter.sgml b/ja_JP.eucJP/books/handbook/x11/chapter.sgml index 2d32502b01..236ada0e8b 100644 --- a/ja_JP.eucJP/books/handbook/x11/chapter.sgml +++ b/ja_JP.eucJP/books/handbook/x11/chapter.sgml @@ -1,1107 +1,1113 @@ X Window System 概要 FreeBSD では, ユーザに強力なグラフィカルインタフェイスを提供するためにXFree86を採用しています. XFree86 は X Window System のオープンソースな実装です. この章では FreeBSD における XFree86 のインストールと設定について解説します. XFree86 についての情報や, それがサポートするビデオハードウェアについては XFree86 の Web サイトをご覧ください. この章を読めば以下のことがわかります. X Window System の様々なコンポーネントと, それらが互いにどのように連携しているか. XFree86 のインストールと設定について 様々なウィンドウマネージャのインストール方法 XFree86 での TrueType フォントの使い方 GUI ログイン (XDM) のセットアップ方法 この章を読み始める前に以下のことに注意してください. サードパーティ製ソフトウェアのインストール方法について知っていること (). X を理解する 初めて X を使う場合, Microsoft Windows や Mac OS といった他の GUI 環境に慣れている人は多少ショックを受けるでしょう. 様々な X のコンポーネントについての詳細の全てや, それらがどのようにやり取りするかについては理解する必要はありませんが, 基本的なことをいくつか知っていると X を使う際に強力な武器になるでしょう. なぜ X? X は, UNIX 用に書かれた最初のウィンドウシステムではありませんが, 最もポピュラーなものです. X のオリジナルの開発チームは X を書く前に別のウィンドウシステムを開発していました. そのシステムの名前は W (Windowの W) です. X は単にローマ字でその次の文字だというだけなのです. X は X, X Window System, X11, もしくはその他の用語で呼ぶことができます. X11 を X Windows と呼ぶと気を悪くする人もいます. 詳しくは &man.X.1; をご覧ください. X のクライアント/サーバモデル X は最初からネットワークを意識してデザインされており, クライアント - サーバモデルを採用しています. X では, X サーバはキーボードやモニター, マウスが接続されたコンピュータ上で動きます. このサーバはディスプレイの表示を管理したり、キーボード, マウスなどからの入力を処理したりします. 各 X アプリケーション (XTermNetscape など) は クライアントになります. クライアントはこの座標にウィンドウを描いてくださいといったメッセージをサーバへ送り, サーバはユーザが OK ボタンを押しましたといったようなメッセージを送り返します. 家庭や小さなオフィスのような環境で, 1 台しかコンピューターがないという場合には, X サーバと X クライアントは同じコンピューター上で動くことになるでしょう. しかし, X サーバを非力なデスクトップコンピューターで動かし, X アプリケーション (クライアント) は例えばオフィス全体を捌くような高機能で高価なマシンで動かすことも可能なのです. この場合, X のクライアントとサーバの通信はネットワーク越しに行なわれます. これは, ある人々を混乱させることがあります. X での用語は彼らが想定するものとは正反対だからです. 彼らはX サーバは地下にある大きなパワフルなマシンであり, X クライアントが自分たちのデスク上にあると想像するのです. Xサーバとはモニターとキーボードがついているマシンのことであり、Xクライアントとはウィンドウを表示するプログラムだということを思い出してください。 X のプロトコルには, クライアントとサーバのマシンが同じ OS で動いていなければならないといったことを強制するものはなにもありませんし, 同じ機種で動いている必要もありません. X サーバを Microsoft Windows や Apple の Mac OS で動かすことも可能ですし, そのようなソフトウェアもフリーのものから商用のまでいろいろとあります. FreeBSD に付いてくる X サーバは XFree86 と呼ばれるもので, FreeBSD のライセンスに似たライセンスに従ってフリーで配布されています. FreeBSD 用の商用 X サーバも入手可能です. X ウィンドウマネージャ X のデザイン哲学は UNIX のそれに非常によく似ており, ツールであってポリシーではないのです. つまり, X はあるタスクがどのように達成されるべきかを示すものではありません. その代わり, ユーザにはツールが与えられ, それらをどうするかはユーザに委ねられているのです. この哲学は, X ではスクリーン上でウィンドウがどのように見えるべきか, マウスでそれらをどうやって動かすか, ウィンドウ間を移動するのにどういうキーストロークを使うべきか (例えば Microsoft Windows における Alt Tab ), 各ウィンドウのタイトルバーはどのように見えるべきか, それらはクローズボタンを持つべきかどうか, といったことを示すものではないというところまで拡大して解釈できます. その代わりに, X ではそういったことをウィンドウマネージャと呼ばれるアプリケーションに任せるのです. X 用のウィンドウマネージャは以下のようにたくさんあります. AfterStep, Blackbox, ctwm, Enlightenment, fvwm, Sawfish, twm, Window Maker, などなど. これらのウィンドウマネージャはそれぞれ異なるルックアンドフィールを持っていますし, いくつかはバーチャルデスクトップをサポートしていますし, いくつかはデスクトップのマネージメントにキーストロークをカスタマイズできたり, スタートボタンやそれに類するもの持っているものもありますし, テーマをサポートをしており新しいテーマを適用することによってルックアンドフィールを完全に変えることができるものもあります. これらのウィンドウマネージャやさらに多くのものはportsコレクションの x11-wm というカテゴリーからインストールすることが可能です. 加えて, KDEGNOME といったデスクトップ環境はともにそれぞれのデスクトップに統合された独自のウィンドウマネージャを持っています. それぞれのウィンドウマネージャはまた異なる設定機構を備えており, 手で設定ファイルを編集しなければならないものや, 設定作業のほとんどを GUI ツールですることができるものもあります. 少なくとも 1 つ (sawfish) は Lisp 言語の変種で書かれた設定ファイルを持っています. フォーカスポリシー ウィンドウマネージャのもう一つの機能はマウスのフォーカスポリシーに関するものです. 全てのウィンドウシステムは, ウィンドウを選択しキーストロークを受け付けるようにするための方法が必要です. そして, どのウィンドウがアクティブなのかを示す必要もあります. よく知られているフォーカスポリシーは click-to-focus と呼ばれるもので, このモデルは Microsoft Windows で利用されており, あるウィンドウ内でマウスをクリックすればそのウィンドウがアクティブになる, というものです. X は特定のフォーカスポリシーを採用していません. 代わりにウィンドウマネージャがそれをコントロールします. それぞれのウィンドウマネージャが, それぞれのフォーカスポリシーをサポートしています. 全てのものは click-to-focus をサポートしていますし, 多くのものは他の方法もサポートしています. 最もポピュラーなフォーカスポリシーは次のものでしょう focus-follows-mouse マウスポインターの下にいるウィンドウがフォーカスされるというものです. ウィンドウは最全面にある必要はありません. フォーカスを変えるには他のウィンドウにマウスポインターを動かすだけです. クリックする必要はありません. sloppy-focus これは focus-follows-mouse を少し拡張したものです. focus-follows-mouse では, マウスがルートウィンドウ (背景) に移動した時には, フォーカスされているウィンドウがなくなり, キーストロークは単に破棄されます. sloppy-focus であればポインターが別のウィンドウに移った時のみフォーカスが変わり, 現在のウィンドウから出ただけでは変わりません. click-to-focus アクティブなウィンドウはマウスクリックにより選択されます. ウィンドウは持ち上げられ, 他の全てのウィンドウの前にきます. ポインターが別のウィンドウに動いた時でも、全てのキーストロークがこのウィンドウに届きます. 多くのウィンドウマネージャはこういったものに加え, 他のポリシーもサポートしています. ウィンドウマネージャ自身のドキュメントもよく読んでください. ウィジェット X のツールを提供してもポリシーは提供しないというアプローチは, 各アプリケーションでスクリーンに現われるウィジェットにも適用されます. ウィジェットはクリック可能であったり, 他の方法で操作可能な全てのユーザインタフェイス用アイテムを指す用語です. ボタンやチェックボックス, ラジオボタン, アイコン, リスト, などがそうです. Microsoft Windows はこれらをコントロールと呼んでいます. Microsoft Windows や Apple の Mac OS はともに非常に厳密なポリシーをウィジェットに課しています. アプリケーション開発者は共通のルックアンドフィールに確実に従うことを想定されているわけです. X では, グラフィカルなスタイルやウィジェットのセットが特定のものに合わせたりすることに対してそれほど意識していませんでした. すなわち, X アプリケーションに共通のルックアンドフィール期待してはいけません. いくつかのポピュラーなウィジェットセットやその亜種があります. MIT のオリジナルの Athena ウィジェットや Motif (Microsoft Windows をモデルにした, 斜めになったエッジやグレイの陰影のウィジェットセットを持っている), OpenLook などです. 比較的新しいの X アプリケーションのほとんどが, KDE で使われている Qt や GNOME プロジェクトで使われている GTK のようにモダンな見た目を持ったウィジェットセットを使っています. この点で言えば, UNIX のルックアンドフィールは収斂されてきており, 初心者がより簡単に使えるようになってきています. XFree86 のインストール XFree86 をインストールする前にどのバージョンを動かすかを決めてください. XFree86 3.x は XFree86 におけるメンテナンスブランチです. これは非常に安定しており, 非常にたくさんの数のグラフィックカードをサポートしているのですが, もう新しい機能は追加されません. XFree86 4.X はシステムを完全に見直して設計したものであり, フォント自体のもっと良いサポートやアンチエイリアスなどといった多くの新しい機能も追加されています. 残念ながら, この新しいアーキテクチャーではビデオドライバーの書き直しが必要なため, 3.X でサポートされていたいくつかの古いカードはまだサポートされていません. FreeBSD のセットアッププログラムを使えば, OS のインストール時に XFree86 3.3.6 をインストールして設定することができます (に書かれています). XFree86 4.x を使いたい場合, まずベースとなる FreeBSD をインストールしてから XFree86 のインストールを行うことになります. 例えば, XFree86 4.X を ports コレクションからビルドしてインストールする場合には次のようにします. &prompt.root; cd /usr/ports/x11/XFree86-4 &prompt.root; make all install clean 他には pkg_add ツールを用いたり, XFree86 の Webサイトで直接提供されているものを利用して XFree86 4.X のバイナリパッケージをインストールするという方法もあります. この章の残りでは, XFree86 をどのように設定すればいいか, また productive なデスクトップ環境をどのように設定するかについて解説します. Christopher Shumway による文章です XFree86 の設定 XFree86 4.X XFree86 はじめに XFree86 4.Xの設定を始める前に, 次の情報が必要となります. モニターの仕様 ビデオアダプタのチップセット ビデオアダプタのメモリー 水平走査周波数 垂直同期周波数 モニターの仕様は, XFree86 がどの解像度とリフレッシュレートで動くかを決定するために用いられます. こういった仕様は, 通常はモニターに付いてくるドキュメントや製造元のWebサイトから取得することができます. 必要なものは二つの数字の範囲, 一つは水平走査周波数でもう一つは垂直同期周波数, です. ビデオアダプタのチップセットは XFree86 がグラフィックハードウェアとやり取りするためにどのドライバーモジュールを使うかを定義します. ほとんどのチップセットが自動認識されますが, 正常に認識されない時のために知っておくとよいでしょう. ビデオメモリーは, グラフィックアダプタがどの解像度とどの色数で動くことができるかを決めます. これは, ユーザが自分のシステムにおける制限を理解するために知っておくことが重要です. XFree86 4.Xの設定 XFree86 4.X の設定は複数のステップの処理に分けられます. まずは XFree86 オプションを付けて初期設定ファイルを作りましょう. スーパーユーザになって次のようにしてください. &prompt.root; XFree86 -configure これにより, 現在のワーキングディレクトリに XF86Config.new という XFree86 の設定ファイルのスケルトンが生成されます. XFree86 プログラムはシステム上のグラフィックハードウェアを検出し, そのハードウェア用の適切なドライバーを読み込む設定ファイルを作ります. 次のステップは, 作成した設定ファイルで XFree86 が動くことを確認することです. そのためには以下のようにします. &prompt.root; XFree86 -xf86config XF86Config.new 黒とグレーのグリッドと X のマウスポインターが現われればその設定は成功です. テストから抜け出すためには単に次のキーを同時に押します. Ctrl Alt Backspace XFree86 4 のチューニング 次は XF86Config.new を好みに合うように調整します. &man.emacs.1; や &man.ee.1; のようなテキストエディターでファイルを開いてください. - まずやることはモニターの周波数を加えることです. これらは水平と垂直の同期周波数と表現されるのが普通です. + まずモニターの周波数を加えます. これらは水平と垂直の同期周波数と表現されるのが普通です. これらの値は XF86Config.new の "Monitor" のセクションに次のように加えます. Section "Monitor" Identifier "Monitor0" VendorName "Monitor Vendor" ModelName "Monitor Model" - Horizsync 30-107 + HorizSync 30-107 VertRefresh 48-120 EndSection - HorizsyncVertRefresh + HorizSyncVertRefresh というキーワードが設定ファイル中にない場合があります. その場合には, Horizsync キーワードの後には水平走査周波数の, VertRefresh キーワードの後には垂直同期周波数の正しい値を加えてください. 上の例では対象となるモニターの周波数が書かれています. + X はモニターが対応していれば DPMS (Energy Star) 機能を使うことができます. + 'xset' プログラムでタイムアウトをコントロールしたり, 強制的にスタンバイ, サスペンドや電源オフにすることができます. + モニターの DPMS 機能を有効にしたい場合は, "Monitor" のセクションに次の行を加えてください. + + Option "DPMS" + XF86Config XF86Config.new はエディターで開いたままにしておき, - 今度はデフォルトの解像度と色数を好みで選びましょう. + デフォルトの解像度と色数を好みで選びましょう. Screen セクションに以下のように書きます. Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1024x768" EndSubSection EndSection DefaultDepth というキーワードはデフォルトで動く色数について記述するためのものです. &man.XFree86.1; のコマンドラインスイッチ -bpp が使用された場合はこちらが優先されます. - Modes というキーワードは与えられた色数におけるデフォルトの解像度を記述しておくためのものです. + Modes というキーワードは与えられた色数におけるデフォルトの解像度を記述しておくためのものです. 上の例ではデフォルトの色数はピクセルあたり24ビットであり, この色数での解像度は1024ピクセル×768ピクセルです. 1024x768の解像度で動かすためには DefaultDepth というキーワードに 24 という値を与えて書き加えおき, - "Display" サブセクションに求める Depth と Modes のキーワードを書いておきます. + "Display" サブセクションに求める DepthModes のキーワードを書いておきます. ターゲットのシステムのフラフィックハードウェアによって定義されているように, VESAスタンダードモードのみがサポートされていることに注意してください. 最後に, 設定ファイルを保存し, 上の例にあるようにテストしてみてください. 全てうまくいったなら, &man.XFree86.1; が見つけることができる共通の場所に設定ファイルを置きます. これは, 通常は /etc/X11/XF86Config/usr/X11R6/etc/X11/XF86Config です. &prompt.root; cp XF86Config.new /etc/X11/XF86Config 設定ファイルを共通の場所に置いたら, 設定は完了です. &man.startx.1; で XFree86 4.X を起動するために x11/wrapper ポートをインストールします. また, XFree86 4.X を &man.xdm.1; で立ち上げることも可能です. 高度な設定 Intel i810 グラフィックチップセットの設定 Intel i810 graphic chipset Intel i810 統合チップセットを設定には, XFree86にカードを制御させるためにAGP プログラミングインタフェイスである agpgart が必要になります. agpgart を利用するには, &man.kldload.8; を使って agp.ko というカーネルローダブルモジュールをカーネルにロードしておく必要があります. これは, /boot/loader.conf に次のように書いておけば &man.loader.8; がブート時に自動的にやってくれます. agp_load="YES" 次に, プログラミングインタフェイス用にデバイスノードを作る必要があります. AGP のデバイスノードを作るには, /dev で &man.MAKEDEV.8; を次のように起動します. &prompt.root; cd /dev &prompt.root; sh MAKEDEV agpgart これで他のグラフィックカードと同様に設定を行うことができるようになります. もし XFree86 4.1.0 (もしくはそれ以降) を使っており, fbPictureInit といったようなシンボルが見つからないというメッセージが現われるなら, XFree86 設定ファイルで Driver "i810" の後に次のような行を入れてみてください. Option "NoDDC" Murray Stokely Contributed by XFree86 でのフォントの使用 Type1 フォント XFree86 に付いてくるデフォルトのフォントは通常のデスクトップパブリッシングアプリケーションにとっては理想的とは言えない程度のものです. 文字を大きくするとジャギーになりプロフェッショナルとは言えないようなものになりますし, Netscape での小さなフォントは頭が悪そうに見えます. しかし, 世の中には質の高い Type1 (PostScript) フォントがいくつかあり, XFree86 ではバージョン 3.X でも 4.X でもそれらを簡単に利用することができます. 例えば, URW フォントコレクション (x11-fonts/urwfonts) には高品質の Type1 フォント (Times Roman, Helvetica, Palatino など) が含まれています. freefont コレクション (x11-fonts/freefont) にはもっとたくさんのフォントが含まれていますが, それらは Gimp のようなグラフィックソフトウェアで使用するためのものであり, スクリーンフォントとしては十分ではありません. さらに, XFree86 は簡単に TrueType フォントを使うように設定することも可能です. 後に出てくる TrueType フォントのセクション を参照してください. 上記の Type1 フォントコレクションを ports から入れる場合には次のコマンドを実行してください. &prompt.root; cd /usr/ports/x11-fonts/urwfonts &prompt.root; make install clean freefont や他のコレクションでも同じようにします. X サーバにこれらのフォントがあることを教えるには (XFree86 バージョン 3 の場合は /etc/, バージョン 4 では /etc/X11/ にある) XF86Config の適切な場所に次のような行を加えます. FontPath "/usr/X11R6/lib/X11/fonts/URW/" 別の方法としては, X のセッション中に次のようなコマンドラインを実行します. &prompt.user; xset fp+ /usr/X11R6/lib/X11/fonts/URW &prompt.user; xset fp rehash これは動くのですが, X のセッションが終了すると消えてしまいます. 消えないようにするには X の起動時に読み込まれるファイル (通常の startx セッションの場合は ~/.xinitrc, XDM のようなグラフィカルなログインマネージャを通してログインする時は ~/.xsession) に加えておきます. 三番目の方法は新しい XftConfig ファイルを使うことです. これに関しては アンチエイリアスのセクションを参照してください. TrueType フォント XFree86 4.X には TrueType フォントのレンダリング機能が組み込まれています. この機能を実現するために二つの異なるモジュールがあります. ここでは, "freetype" のほうがより他のフォントレンダリングバックエンドと似ているため, このモジュールを使うことにします. freetype モジュールを使うためには /etc/X11/XF86Config ファイルに以下の行を追加するだけです. Load "freetype" XFree86 3.3.X の場合, TrueType フォントサーバが別に必要となります. Xfstt がよく使われるものです. Xfstt とインストールするのは簡単で, x11-servers/Xfstt ポートを利用してください. さて, まずは TrueType フォント用のディレクトリ (例えば /usr/X11R6/lib/X11/fonts/TrueType) を作り, そこに TrueType フォントを全て放り込みましょう. Macintosh の TrueType フォントは, そのままでは使うことができませんので注意してください. XFree86 で使うには Unix/DOS/Windows 用のフォーマットでなければなりません. ファイルを置いたら ttmkfdir を使って fonts.dir ファイルを作ってください. このファイルにより, X は新しいファイルがイントールされたことを理解します. ttmkfdir は FreeBSD Ports コレクション, x11-fonts/ttmkfdir, からインストールできます. &prompt.root; cd /usr/X11R6/lib/X11/fonts/TrueType &prompt.root; ttmkfdir > fonts.dir 次に TrueType フォントのディレクトリをフォントパスに追加します. 上の Type1 フォントの場合と同じように, &prompt.user; xset fp+ /usr/X11R6/lib/X11/fonts/TrueType &prompt.user; xset fp rehash とするか, もしくは XF86Config ファイルに 行を追加するのです. これで終わりです. NetscapeGimp, StarOffice といった全ての X アプリケーションから TrueType フォントを使うことができます. (高解像度なディスプレイで見る Web ページ上のテキストみたいな) とても小さなフォントや (StarOffice にあるような) 非常に大きなフォントもかなり綺麗に見えるようになることでしょう. フォントのアンチエイリアス XFree86 では 4.0.2 以降でフォントのアンチエイリアスをサポートしています. 今のところ, ほとんど全てのソフトがこの新しい機能を使うメリットを亨受するようにはなっていません. しかし, Qt (KDE デスクトップ用のツールキット) はサポートしていますので, XFree86 4.0.2 以降と Qt 2.3 以降及び KDE を使う場合には全ての KDE/Qt アプリケーションでアンチエイリアスなフォントを使うことができます. アンチエイリアスを使うように設定するには, /usr/X11R6/lib/X11/XftConfig ファイルを作ります (既にある場合には編集してください). このファイルを使えばいくつかの先進的な機能を使うことができるのですが, このセクションでは最も簡単なところだけを解説します. まず, X サーバに対してアンチエイリアスをかけるべきフォントを指定します. それぞれのフォントディレクトリに対して次のような行を加えます. dir "/usr/X11R6/lib/X11/Type1" アンチエイリアスをかけたい他のフォントのディレクトリ (URW や truetype など) についても同じようにします. アンチエイリアスはスケーラブルなフォント (基本的には Type1 と TrueType) にのみ有効ですので, ビットマップフォントのディレクトリは加えないようにしてください. ここに含めたディレクトリは XF86Config ではコメントアウトします. アンチエイリアスをかけることによって境界が少しぼやけ, そのためにとても小さなテキストはさらに読みやすくなり, 大きなフォントではギザギザが消えるのです. しかし, 普通のテキストにかけた場合には目が疲れることになります. 9から13ポイントのサイズのフォントについて, アンチエイリアスをかけないようにするには次の行を加えます. match any size > 8 any size < 14 edit antialias = false; いくつかの等幅フォントは, アンチエイリアスをかけるとスペーシングがうまくいかなくなる場合があります. 特に KDE でその傾向があるようです. 解決策の一つとして, そういったフォントのスペーシングを100に設定する方法があります. そうするためには次の行を加えてください. match any family == "fixed" edit family =+ "mono"; match any family == "console" edit family =+ "mono"; (これによりfixedというフォントに他の "mono" という名前のエイリアスを付けます) そして次の行も加えてください. match any family == "mono" edit spacing = 100; 等幅フォントが必要な時にはつねに Lucidux を使うように (このフォントは実際見目もよく, スペーシングの問題もありません) するためには最後の行を次のように変更します (最後の行は異なるものに同じファミリー名を付けています). match any family == "mono" edit family += "LuciduxMono"; match any family == "Lucidux Mono" edit family += "LuciduxMono"; match any family == "LuciduxMono" edit family =+ "Lucidux Mono"; 最後に, このファイルを自分の .xftconfig として保存し, 次のコマンドを追加します. includeif "~/.xftconfig" 最後に一つ. LCD スクリーンではサブピクセルサンプリングが必要な場合があります. これは, 基本的には (水平方向に分かれている) 赤, 緑, 青の各コンポーネントを別々に扱うことによって水平方向の解像度を良くするというもので, そうすることによって劇的な結果が得られます. これを有効にするには XftConfig ファイルに次の行を加えます (ディスプレイの種類にもよりますが最後は ``rgb'' ではなく ``bgr''や ``vrgb'', ``vbgr'' の場合もあるので, 試してみて最も良いものを使ってください). match edit rgba=rgb; アンチエイリアスは, 次に X サーバを立ち上げた時から有効になります. しかし, 上でも述べたようにその恩恵を受けるにはプログラム側での対処も必要です. 今のところ Qt は対応しているため, KDE 環境全体でアンチエイリアスのかかったフォントを用いることができます (KDE についての詳しいことは をご覧ください). gtk+ を同じようにするパッチもありますので, そのパッチを当てた gtk+ を使ってコンパイルし直せば GNOME 環境や Mozilla もまたアンチエイリアスなフォントを使うことができます. 実際には x11/gdkxft という port があり, リコンパイルしなくてもアンチエイリアスなフォントを使うことができます. 詳しくは をご覧ください. アンチエイリアスは, FreeBSD や XFree86 ではまだ新しい機能ですが, その設定はもっと簡単になるでしょうし, すぐにもっとたくさんのアプリケーションがサポートするようになるでしょう. Seth Kingsley Contributed by X ディスプレイマネージャ 概要 X ディスプレイマネージャ (XDM) は X Window System のオプショナルな一部分であり, ログインセッションの管理に用います. 最低限の機能を実装した X 端末やデスクトップ, 大規模なネットワークディレプレイサーバといった場面ではこれが有用です. X Window System はネットワークとプロトコルから独立しているため, ネットワークで繋がれた X のクライアントとサーバを動かすための設定はかなり幅が広くなります. XDM はどのディスプレイサーバに接続するかを選択でき、ログイン名とパスワードの組み合わせなど認証情報を入力できるグラフィカルなインタフェイスを提供しています. XDM がユーザに &man.getty.8; (詳しくはをご覧ください) と同じ機能を提供することを考えてみてください. つまり, ディスプレイ上でシステムへのログインができ, ユーザの代わりにセッションマネージャ (通常は X のウィンドウマネージャ) を起動することができるのです. それからXDMは, ユーザが作業を終えてディスプレイからログアウトする合図を送ってきてプログラムが終了するのを待ちます. この時点で, XDM は次にログインするユーザのためにログイン画面や chooser 画面を表示することができるのです. XDM の使用 XDM のデーモンプログラムは /usr/X11R6/bin/xdm にあります. このプログラムは root になればいつでも起動することができ, ローカルマシン上のディスプレイの管理を始めます. マシンをブートする際, いつも XDM を起動したい場合には, /etc/ttys にそのためのエントリを加えておくのが簡単です. このファイルのフォーマットや使用方法についての詳細は を参照してください. デフォルトの /etc/ttys ファイルには仮想端末上で XDM のデーモンプログラムを起動するための行: ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure があります. このエントリーはデフォルトでは無効になっており, 有効にするには 5 番目のカラムを off から on にし, の指示に従って &man.init.8; を再起動します. 最初のカラムはこのプログラムが管理する端末の名前で, この場合 ttyv8 になります. つまり, XDM は 9 番目仮想端末で起動されるということです. XDM の設定 XDM の設定用ディレクトリは /usr/X11R6/lib/X11/xdm です. このディレクトリには XDM の振る舞いや見た目を変更するために用いられるいくつかのファイルがあります. だいたいは以下のような感じです. ファイル 説明 Xaccess クライアント認証のルールセット Xresources デフォルトの X リソース Xservers 管理すべきリモートやローカルのディスプレイのリスト Xsession デフォルトのログイン時のセッションスクリプト Xsetup_* ログインインタフェイスの前にアプリケーションを起動するためのスクリプト xdm-config このマシンで動いている全てのディスプレイのグローバルな設定 xdm-errors サーバプログラムによって生成されるエラー xdm-pid 現在動いている XDM のプロセス ID このディレクトリにはまた, XDM の動作中にデスクトップをセットアップするために用いられるスクリプトやプログラムがいくつかあります. それぞれのファイルの目的を簡単に解説しましょう. 正確な文法や使い方は &man.xdm.1; に記述されています. デフォルトの設定では,単純な四角のログインウィンドウがあり, そこにはマシンのホスト名が大きなフォントで表示され, Login:Password: のプロンプトがその下に表示されています. XDM スクリーンのルックアンドフィールを変えるにはここから始めるのがいいでしょう. Xaccess XDM がコントロールするディスプレイに接続するためのプロトコルは X Display Manager Connection Protocol (XDMCP) と呼ばれます. このファイルにはリモートのマシンからの XDMCP 接続をコントロールするためのルールセットが書かれます. デフォルトでは, どんなクライアントからの接続も許可するようになっていますが, xdm-config を変更してリモートからのコネクションを待ち受けるようにしない限り問題ではありません. Xresources これはディスプレイの chooser とログインスクリーン用の application-defaults ファイルです. このファイルでログインプログラムの見た目を変更することができます. フォーマットは XFree86 のドキュメントで記述されている app-defaults ファイルのものと同じです. Xservers これは, chooser が選択肢として提供するリモートのディスプレイの一覧です. Xsession XDM でログインした後に実行されるデフォルトのセッションスクリプトです. 通常, 各ユーザは ~/.xsessionrc というカスタマイズしたセッションスクリプトを持っており, こちらが優先されます. Xsetup_* これらは chooser やログインインタフェイスが表示される前に自動的に実行されます. それぞれのディスプレイには, Xsetup_ に続けてローカルのディスプレイ番号を付けたもの (例えばXsetup_0) を名前とするスクリプトがあります. 典型的な使い方は xconsole のようなバックグラウンドで動かすプログラムを一つか二つ起動することです. xdm-config app-defaultsの書式で書かれた, このインストレーションで管理されるすべてのディスプレイに適用される設定を保持しています。 xdm-errors このファイルには XDM が起動しようとしている X サーバからの出力が書き出されます. XDM が起動しようとしているディスプレイがなんらかの理由でハングした場合, このファイルのエラーメッセージを見てください. そういったメッセージは各ユーザの ~/.xsession-errors にもセッション毎に書き出されます. ネットワークディスプレイサーバの起動 あるディスプレイサーバに他のクライアントが接続することができるようにするために, アクセスコントロールのルールを編集し, コネクションリスナーを有効にします. デフォルトでは保守的な設定になっています. XDM がそういったコネクションを待ち受けるようにするためには xdm-config にある次の行をコメントアウトします. ! SECURITY: do not listen for XDMCP or Chooser requests ! Comment out this line if you want to manage X terminals with xdm DisplayManager.requestPort: 0 そして, XDM を再起動します. app-defaults ファイルにおけるコメントは ! であっていつものような # ではないことに注意してください. アクセス制限はもっと厳しくしたいかもしれません. - Xaccess ファイルにある例を参考にしたり, オンラインマニュアル + Xaccess にある例を参考にしたり, オンラインマニュアル &man.xdm.1; を参照したりしてください. XDM の代わりになるもの デフォルトの XDM に代わるものがいくつかあります. 一つは KDM (KDE に付属しててます) はその一つであり, この章の後ろで解説します. KDM はログイン時にウィンドウマネージャを選ぶことができるのに加え, 見た目もかなり綺麗にしてくれます. Valentino Vaschetto Contributed by デスクトップ環境 このセクションでは, FreeBSD 上の X で利用可能ないくつかのデスクトップ環境について解説します. デスクトップ環境とは, 単なるウィンドウマネージャから KDEGNOME といったような完全なデスクトップアプリケーションスイートまでカバーします. GNOME GNOME について GNOME はユーザフレンドリーなデスクトップ環境で, ユーザはコンピューターを簡単に使ったり設定したりできるようになります. GNOME にはパネル (アプリケーションを起動したり状態を表示したりするもの) , デスクトップ (データやアプリケーションが置かれる場所), 標準的なデスクトップツールやアプリケーションのセット, そしてアプリケーションが互いにうまくやり取りできるような仕組みが含まれています. 他の OS や環境に慣れている人でも GNOME の提供するグラフィック環境であれば心地よく感じるでしょう. GNOME のインストール GNOME をインストールする最も簡単な方法は, 第 2 章で解説した FreeBSD のインストールメニューのデスクトップ環境の設定を通して行うことです. また, package や ports を利用しても簡単にインストールできます. GNOME packageをネットワークからインストールするには, 以下のようにするだけです. &prompt.root; pkg_add -r gnome GNOME をソースから構築する場合, 次のように ports ツリーを使いましょう. &prompt.root; cd /usr/ports/x11/gnome &prompt.root; make install clean GNOMEがインストールできたら, デフォルトのウィンドウマネージャの代わりに GNOME を起動するように X サーバに教えます. 自分の .xinitrc が既にある場合には, ウィンドウマネージャを起動するところの行を /usr/X11R6/bin/gnome-session を起動するように変更するだけです. 特にこのファイルを用意していない場合には次のようにすれば十分でしょう. &prompt.user; echo "/usr/X11R6/bin/gnome-session" > ~/.xinitrc 次に, startx とタイプすれば GNOME デスクトップ環境が起動します. もし XDM のようなディスプレイマネージャを使っているなら, この方法ではうまくいきません. その代わり, 実行可能な .xsession というファイルを作成し, 同じコマンドを起動するようにします. そのためには, このファイルを編集してウィンドウマネージャを /usr/X11R6/bin/gnome-session で置き換えます. &prompt.user; echo "#!/bin/sh" > ~/.xsession &prompt.user; echo "/usr/X11R6/bin/gnome-session" >> ~/.xsession &prompt.user; chmod +x ~/.xsession もう一つの方法は, ログイン時にウィンドウマネージャを選択できるようにディスプレイマネージャを設定することです. KDE2 の詳細についてのセクションで KDE のディスプレイマネージャである kdm を使ってどのようにすればいいのかを解説しています. GNOME でアンチエイリアスなフォントの使用 XFree86 デスクトップでは, フォントのアンチエイリアスは KDE 環境ではじめて登場し標準のインストールでサポートされていますが, GNOME 環境のような gtk アプリケーションでも可能です. 最も素直なやり方は恐らく x11/gdkxft port にある libgdkxftライブラリ を使うことです. この port をインストールしたら /usr/X11R6/share/doc/gdkxft/README を注意深く読んでください. あとは gtk アプリケーションにフォントのレンダリング関数を標準の libgdk.so よりも前に libgdkxft.so から探すようにさせるだけです. これは, 環境変数が正しい位置を指すようにするだけでできます. Bourne シェル (/bin/sh) 系のシェルの場合, (The Gimp を起動するなら) 次のようにタイプします. &prompt.user; LD_PRELOAD=/usr/X11R6/lib/libgdkxft.so gimp csh 系のシェルであれば次のようにしてください. &prompt.user; setenv LD_PRELOAD /usr/X11R6/lib/libgdkxft.so &prompt.user; gimp もしくは, LD_PRELOAD=/usr/X11R6/lib/libgdkxft.so export LD_PRELOAD というコマンドを, X をどのように立ち上げるかに依って .xinitrc.xsession, もしくは /usr/X11R6/lib/X11/xdm/Xsession に書いておきます. ただし, こうすると GTK の Linux バイナリを起動する時にトラブるかもしれません. KDE2 KDE2 について KDE は最近の簡単に使えるデスクトップ環境です. KDE によりユーザは以下のようなメリットを亨受します. 美しい現代風のデスクトップ ネットワーク透過なデスクトップ KDE デスクトップやそのアプリケーションを使う際の便利で統一されたヘルプにアクセスできるような統合されたヘルプシステム 全ての KDE アプリケーションで統一されたルックアンドフィール 標準化されたメニュー, ツールバー, キーバインディング, カラースキームなど 国際化: KDE は 40を越える言語で利用可能 集中したダイアログベースのデスクトップ設定 膨大な数の KDE アプリケーション KDE はその KParts テクノロジーをベースにしたオフィススイートを持っており, それにはスプレッドシート, プレゼンテーションアプリケーション, オーガナイザー, ニュースクライアントなどが含まれています. KDE にはまた Konqueror と呼ばれる Web ブラウザーも付属しており, これは Unix システム上の他の Web ブラウザーの強力な競争相手です. KDE の詳細については KDE の Webサイトをご覧ください. KDE2 のインストール GNOME や他のデスクトップ環境とと全く同じように, KDE をインストールする最も簡単な方法は第 2 章にある FreeBSD のインストールメニューでのデスクトップ設定を利用することです. またまた同じことですが, package や ports コレクションからインストールするのも簡単です. ネットワーク越しに KDE2 package をインストールするには次ようにします. &prompt.root; pkg_add -r kde2 ソースから KDE を構築するには次のように ports ツリーを使いましょう &prompt.root; cd /usr/ports/x11/kde2 &prompt.root; make install clean KDE2 がインストールできたら X サーバに, デフォルトのウィンドウマネージャの代わりにこのアプリケーションを立ち上げるように教えます. .xinitrc ファイルを次のように編集しましょう. &prompt.user; echo "/usr/X11R6/bin/startkde" > ~/.xinitrc さぁ, これで startx でいつ X Window System を立ち上げても KDE2 がデスクトップになります. xdm のようなディスプレイマネージャを使っている場合, 設定は少し異なります. 代わりに .xsession ファイルを編集しましょう. kdm 用の説明はこの章の後のほうにあります. KDE2 の詳細について さぁ, KDE2 のインストールができました. ほとんどのことはヘルプページを見たりいろんなメニューをつつけばわかるでしょう. Winodows や Mac のユーザにも簡単なはずです. KDE2 の最も良いリファレンスはオンラインドキュメントです. KDE には独自の Web ブラウザー Konqueror が付属してますし, 膨大な数の便利なアプリケーションや詳しいドキュメントもあります. このセクションの残りではなんとなく使っているだけでは理解し難い技術的なところを解説します. KDE ディスプレイマネージャ マルチユーザシステムの管理者であれば, ユーザを迎えるにあたってグラフィカルなログインスクリーンが欲しいと思うかもしれません. xdm は上で述べたようにその目的で使うことができます. しかしながら, KDE にはその代わりになる KDM が付いており, より魅力的な見た目で, ログイン時のオプションもたくさんあります. 特に, (メニューを使って) ログイン後にどのデスクトップ環境か (KDE2GNOME など) を簡単に選ぶこともできます. まず最初に rootKDE2 のコントロールパネル kcontrol を起動しましょう. 一般には X 環境全体を root で動かすのは安全ではありませんので, ウィンドウマネージャは普通のユーザで起動しておいて (xtermKDEkconsole のような) ターミナルウィンドウを開き, su コマンドで root になり (そのユーザは wheel グループに入ってなければなりません) kcontrol とタイプします. 左側にあるシステム と書かれたアイコンをクリックし, ログインマネージャ をクリックします. 右側には様々な設定オプションがあり, これらについては KDE のマニュアルに細かく解説されています. 右側にある セッション をクリックしてください. 新規追加 をクリックして様々なウィンドウマネージャやデスクトップ環境を加えます. これらはただのラベルですので startkdegnome-session ではなく KDEGNOME とできます. - failsage というラベルも入れてください. + failsafe というラベルも入れてください. 他のメニューでも遊んでみてください. それらはだいたい見た目に関するもので, 見ればわかります. 終わったら下のほうにある 適用 ボタンをクリックしてコントロールセンターを終了します. (KDEGNOME といった) ラベルが何かを kdm が確実に理解してくれるように, xdm で使われているファイルを編集します. KDE 2.2 では, これは変更され kdm は独自の設定ファイルを持ちます. 詳しくは KDE 2.2 のドキュメントを参照してください. ターミナルウィンドウで root/usr/X11R6/lib/X11/xdm/Xsession ファイルを編集します. 中ほどに次のような行があるはずです. case $# in 1) case $1 in failsafe) exec xterm -geometry 80x24-0-0 ;; esac esac このセクションにもう少し行を追加する必要があります. KDE2GNOME というラベルが付いてると仮定すると, 以下の行を追加してください. case $# in 1) case $1 in kde) exec /usr/local/bin/startkde ;; GNOME) exec /usr/X11R6/bin/gnome-session ;; failsafe) exec xterm -geometry 80x24-0-0 ;; esac esac KDE を尊重してログイン時のデスクトップのバックグラウンドを変える場合には /usr/X11R6/lib/X11/xdm/Xsetup_0 に次の行を加えます. /usr/local/bin/kdmdesktop 最後に, 次のブート時で立ち上がるように /etc/ttyskdm を書きます. 上の xdm のセクションの解説で /usr/X11R6/bin/xdm となっている部分を /usr/local/bin/kdm とすればいいだけです. アンチエイリアスフォント 4.0.2 以降, XFree86 ではその "RENDER" 拡張によってアンチエイリアスがサポートされています. (KDE で利用されているツールキットである) Qt では 2.3 以降でこの拡張がサポートされています. その設定は X11 フォントでのアンチエイリアスに関して で解説されています. 従って最新のソフトウェアであれば KDE2 デスクトップ上でアンチエイリアスを利用することが可能なのです. KDE2 のメニューから 設定 -> ルックアンドフィール -> フォント と辿り, フォントとアイコンをアンチエイリアス表示 をクリックしてください. KDE の一部になっていない Qt アプリケーションの場合, QT_XFT という環境変数をプログラムを起動する前に設定する必要があります. XFCE XFCE について XFCEGNOME で使われている GTK ツールキットをベースにしたデスクトップ環境ですが, 非常に軽く, 使用や設定が簡単なのにも関わらずシンプルで効率的なデスクトップです. 見ためとしては商用 Unix システムが採用している CDE にかなり似ています. XFCE の機能のいくつかを下に挙げておきます. シンプルで使いやすいデスクトップ マウスのドラッグアンドドロップなどで全ての設定が可能 CDE に似たメインパネルとメニューやアプレット, ランチャー 統合されたウィンドウマネージャ, ファイルマネージャ, サウンドマネージャと GNOME 準拠のモジュールなど (GTK なので) テーマをサポート 速くて軽くて効率的: 古いマシンや遅いマシン, メモリーの限られたマシン向き XFCE に関する詳しい情報は XFCE の Web サイトから得られます. XFCE のインストール (この文章を書いている時点で) xfce のバイナリーパッケージがあります. インストールするにはただ次のようにタイプするだけです &prompt.root; pkg_add -r xfce また, ports コレクションを利用してソースから作ることも可能です &prompt.root; cd /usr/ports/x11-wm/xfce &prompt.root; make install clean 次に X が起動した時に XFCE が起動されるように設定します. 次のようにしてください. &prompt.user; echo "/usr/X11R6/bin/startxfce" > ~/.xinitrc 次に X が起動する時 XFCE のデスクトップが立ち上がります. 上と同様に, xdm のようなディスプレイマネージャを使っている場合には GNOME のセクションに書いてあるのと同じように .xsession ファイルを作り, /usr/X11R6/bin/startxfce を起動するようにします. もしくは, kdm のセクションにあるようにディスプレイマネージャから XFCE を選ぶことができるように設定します.