diff --git a/ja_JP.eucJP/man/man1/crunchgen.1 b/ja_JP.eucJP/man/man1/crunchgen.1 index 103044dbdb..662816dd66 100644 --- a/ja_JP.eucJP/man/man1/crunchgen.1 +++ b/ja_JP.eucJP/man/man1/crunchgen.1 @@ -1,423 +1,445 @@ .\" .\" Copyright (c) 1994 University of Maryland .\" All Rights Reserved. .\" .\" Permission to use, copy, modify, distribute, and sell this software and its .\" documentation for any purpose is hereby granted without fee, provided that .\" the above copyright notice appear in all copies and that both that .\" copyright notice and this permission notice appear in supporting .\" documentation, and that the name of U.M. not be used in advertising or .\" publicity pertaining to distribution of the software without specific, .\" written prior permission. U.M. makes no representations about the .\" suitability of this software for any purpose. It is provided "as is" .\" without express or implied warranty. .\" .\" U.M. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL U.M. .\" BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR .\" IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" .\" Author: James da Silva, Systems Design and Analysis Group .\" Computer Science Department .\" University of Maryland at College Park -.\" %FreeBSD: src/usr.sbin/crunch/crunchgen/crunchgen.1,v 1.11.2.3 2000/11/17 12:57:43 joe Exp % +.\" %FreeBSD: src/usr.sbin/crunch/crunchgen/crunchgen.1,v 1.11.2.6 2000/12/08 15:28:02 ru Exp % .\" .Dd November 16, 2000 .\" jpman %Id: crunchgen.1,v 1.3 1997/07/29 13:43:59 konuma Stab % .Dt CRUNCHGEN 1 .Os BSD 4 .Sh 名称 .Nm crunchgen .Nd クランチバイナリ構築環境を作成する .Sh 書式 -.Nm crunchgen +.Bk -words +.Nm .Op Fl foql .Op Fl h Ar makefile-header-name .Op Fl m Ar makefile-name .Op Fl c Ar c-file-name .Op Fl e Ar exec-file-name .Op Ar conf-file +.Ek .Sh 解説 クランチバイナリ (crunched binary) は、 たくさんの別々のプログラムをひとつにまとめて 単一の実行形式にしたプログラムです。 クランチバイナリの .Fn main 関数は、 .Va argv[0] の値をみて、 どのコンポーネントプログラムが実行されるべきかを決定します。 複数プログラムをクランチしてひとつにまとめる主たる理由は、 インストールフロッピあるいはシステム回復フロッピ上に、 できるだけ多くのプログラムを収納するためです。 .Pp .Nm は .Ar conf-file に記述されたクランチバイナリのための設定項目を読み込み、 .Pa Makefile とそれに付随するトップレベルの C ソースファイルを生成します。 これらはビルド時に各コンポーネントプログラムからクランチした実行形式を 作成します。 オプションにより、 .Nm は、各コンポーネントプログラムに対して、 そのソースディレクトリの .Pa Makefile から プログラムを構成するオブジェクトファイル (.o) を決定することも試みます。 この情報は実行のたびにキャッシュされます。 .Nm は関連するもうひとつのプログラム .Xr crunchide 1 を用い、全ての不要なシンボルを隠すことで コンポーネントプログラム間のリンク時のシンボル競合を防ぎます。 .Pp .Nm は特殊な要件をパッケージの .Pa Makefile に課しており、このことが原因で .Pa Makefile が非 BSD ソース用に使えなくなっています。 特に、 .Pa Makefile はターゲット .Ic depend を含むことが必要であり、全オブジェクトファイルを変数 .Va OBJS で定義することが必要です。 場合によっては、偽の .Pa Makefile を使えるでしょう。 .Nm は、ソースディレクトリ .Pa foo 中の .Pa Makefile を見る前に、現在のディレクトリ中の .Pa Makefile.foo を見ます。 .Pp .Nm 実行後、 .Dq Li make -f .mk を実行することで クランチバイナリを作成できます。 コンポーネントプログラムのオブジェクトファイルは既に作成されている 必要があります。 出力される makefile に含まれる .Ic objs ターゲットは、 各コンポーネントプログラムのソースディレクトリで .Xr make 1 を実行し、ユーザのためにオブジェクトファイルを作成してくれます。 しかしこのターゲットは自動的には実行されません。 リリースエンジニアリング環境では、オブジェクトを他のディレクトリで 修正するのは一般に望ましくないからです。 .Pp オプションは以下の通りです: .Bl -tag -width indent .It Fl c Ar c-file-name 出力する C のファイル名を .Ar c-file-name とします。デフォルトの名前は -.Dq .c +.Pa .c です。 .It Fl e Ar exec-file-name クランチバイナリの実行形式ファイルの名前を .Ar exec-file-name とします。デフォルトの名前は -.Dq +.Pa です。 .It Fl f キャッシュを消去し、キャッシュされていたパラメータを強制的に再計算します。 .It Fl l 名前の表示。このバイナリが対応する名前を一覧表示します。 .It Fl h Ar makefile-header-name .Nm が生成する .Pa Makefile の先頭に含めるファイルの名前を設定します。 make の変数を定義するのに便利です。 これには、 .Xr make 1 の動作に影響を与え、環境変数を介してでは面倒である、 .Va RELEASE_CRUNCH が含まれます。 .It Fl m Ar makefile-name 出力する .Pa Makefile の名前を .Ar makefile-name とします。デフォルトの名前は -.Dq .mk +.Pa .mk です。 .It Fl o 各プログラムの make ターゲットに対し、 .Dq Li make obj ルールを追加します。 +.It Fl p Ar obj-prefix +.Ic objdir +を計算するときに、 +.Ic srcdir +の前に付けるパス名を設定します。 +このオプションが存在しない場合、使用するプレフィックスは +.Ev MAKEOBJDIRPREFIX +環境変数の内容か、または +.Pa /usr/obj +です。 .It Fl q 静粛処理モード。状況報告メッセージを抑制します。 .El .Sh CRUNCHGEN コンフィギュレーションファイルコマンド .Nm は、クランチバイナリのコンポーネントについて記述した設定項目を .Ar conf-file から読み取ります。 最も単純な場合は、各コンポーネントプログラム名を、 そのソースファイルが置かれたトップレベルのディレクトリ名とともに、 単に列挙するだけです。 次に .Nm は (ソースの makefile によって) オブジェクトファイルリストと その位置を求め、それをキャッシュします。 もっと特殊な場合には、 .Nm が必要とするあらゆるパラメータを、ユーザが手動で指定することができます。 .Pp .Ar conf-file のコマンドは以下の通りです: .Bl -tag -width indent .It Ic srcdirs Ar dirname ... コンポーネントプログラムのソースディレクトリがあるソースツリーのリスト。 これらのディレクトリは .Bx の -.Dq // +.Dq Pa // 方式を用いて検索されます。 .Ic srcdirs 行は複数あってもよく、ディレクトリは記述された順に検索されます。 .It Ic progs Ar progname ... クランチバイナリを構成するプログラムのリスト。 .Ic progs 行は複数あっても構いません。 .It Ic libs Ar libspec ... クランチバイナリのリンク時に含めるライブラリ指定のリスト。 .Ic libs 行は複数あっても構いません。 .It Ic buildopts Ar buildopts ... 各 make ターゲットに追加追加される、ビルドオプションのリスト。 .It Nm ln Ar progname linkname .Va argv[0] に .Ar linkname が現われたときはいつも .Ar progname を起動するよう、クランチバイナリに要請します。 これにより、起動時の名前によって振る舞いを変えるようなプログラムも 正しく動作するようにできます。 .El .Pp 特別な状況、例えば ソースファイルがないとか、 従来の .Pa Makefile によらないビルドを行うといった場合に対応するため、以下に述べる .Ic special コマンドを用いてコンポーネントプログラムの .Nm パラメータを指定できます。 .Bl -tag -width indent .It Ic special Ar progname Ic srcdir Ar pathname プログラム用 .Ar progname のオブジェクトファイル一覧を保持する make 変数の名前を設定します。 これは通常 .Nm OBJS ですが、Makefile によっては、他の約束が好ましい場合や、 .Nm SSHD_OBJS のようにプログラム名が前に付くものがあります。 .It Nm special Ar progname Nm srcdir Ar pathname プログラム .Ar progname のソースディレクトリを指定します。 通常は指定されたディレクトリ .Ic srcdirs 内の .Ar progname ディレクトリを検索して決定されます。 .It Ic special Ar progname Ic objdir Ar pathname プログラム .Ar progname の -.Dq obj +.Pa obj ディレクトリを指定します。 -通常はディレクトリ -.Ic srcdir -内の +通常、 .Pa obj -という名前のディレクトリを探し、もし見つからなければ、ディレクトリ +ディレクトリは、 +ソースディレクトリ名の前に次のいずれかのコンポーネントを付けたものとして +計算され、コンポーネントには次の順番で優先度があります: +コマンドラインにおける +.Fl p +の引数、環境変数 +.Ev MAKEOBJDIRPREFIX +の値、または +.Pa /usr/obj +です。 +もしディレクトリが見つからなければ、ディレクトリ .Ic srcdir 自身が .Ic objdir となります。 .It Ic special Ar progname Ic buildopts Ar buildopts ビルドオプション集合を定義します。 .Ar progname 処理時には、 .Nm buildopts で指定されたものに加え、これらが追加されて .Xr make 1 のターゲットが作成されます。 .It Ic special Ar progname Ic objs Ar object-file-name ... プログラム .Ar progname のオブジェクトファイルのリストを指定します。 通常は、 .Dq Ic srcdir Ns / Ns Pa Makefile をインクルードし .Va $(OBJS) の値を出力するような一時 makefile を構築する ことで決定されます。 .It Ic special Ar progname Ic objpaths Ar full-pathname-to-object-file ... プログラム .Ar progname のオブジェクトファイルのパス名を指定します。 通常は .Ic objs リスト中の各ファイルのパス名の先頭に .Ic objdir を付加することで決定されます。 .It Ic special Ar progname Ic objvar Ar variable_name プログラム .Ar progname 用のオブジェクトファイルリストを保持する .Xr make 1 変数名を設定します。 これは通常 .Va OBJS ですが、 .Pa Makefile によっては別の規約を使用したいかもしれませんし、 変数名の前にプログラム名を付けたいかもしれません。例えば .Va SSHD_OBJS など。 .It Ic special Ar progname Ic keep Ar symbol-name ... プログラム .Ar progname の保持リストに、指定するシンボルのリストを追加します。 各シンボルの前にはアンダスコア .Pq Ql _ が付加され、 .Xr crunchide 1 フェーズでは .Fl k オプションの引数となります このオプションはシンボルが衝突するときの最後の拠所ですが、 シンボル解決の唯一の方法である場合もあります。 .El .Pp 実際に .Nm が必要とするのは .Ic objpaths だけですが、 これは .Ic objdir と .Ic objs から求められ、これらも .Ic srcdir から求められます。 ですから、もし可能なら、初期のパラメータを指定し、あとは .Nm に求めさせたほうが便利な場合もあります。 .Pp .Nm が生成する makefile はオプションのターゲット .Ic objs を含みます。 これは、各コンポーネントプログラムのソースディレクトリ内で .Xr make 1 を実行してオブジェクトファイルを作成するターゲットです。 これがうまく動作するためには .Ic srcdir および .Ic objs パラメータが正しいものでなくてはなりません。 もしこれらの値があるプログラムに対して不正なものであると、 .Ic objs ターゲットではそのプログラムはスキップされてしまいます。 .Sh 実行例 .Nm の入力コンフィギュレーションファイルの例として .Dq Pa kcopy.conf の内容を示します。 .Pp .Bd -literal -offset indent srcdirs /usr/src/bin /usr/src/sbin progs test cp echo sh fsck halt init mount umount myinstall progs anotherprog ln test [ # test は [ として起動することもできる ln sh -sh # init は argv[0] を "-sh" としてシェルを起動する special myprog objpaths /homes/leroy/src/myinstall.o # ソースなし special anotherprog -DNO_FOO WITHOUT_BAR=YES libs -lutil -lcrypt .Ed .Pp このコンフィギュレーションファイルでは、 いくつかの基本的なシステムユーティリティと -自家製のインストールプログラム ``myinstall'' から成る +自家製のインストールプログラム +.Dq Pq myinstall +から成る 小さなクランチバイナリを記述しています。 ソースディレクトリは全く指定されていませんが、 オブジェクトファイルは .Nm special 行で直接指定されています。 .Pp さらに、 -.Dq anotherprog +.Dq Pa anotherprog 構築時には、引数 .Pp .Dl -DNO_FOO WITHOUT_BAR=YES .Pp がすべてのビルドターゲットに対して追加されます。 .Pp クランチバイナリ -.Dq kcopy +.Dq Pa kcopy は以下のようにして作成できます: .Pp .Bd -literal -offset indent % crunchgen -m Makefile kcopy.conf # Makefile と kcopy.c 作成 % make objs # コンポーネントプログラムの *.o 作成 % make # クランチバイナリ kcopy の作成 % kcopy sh # シェル sh を起動できるかどうか試すと.. $ # うまくいった! .Ed .Pp ここまでくれば、バイナリ -.Dq kcopy +.Dq Pa kcopy をインストールフロッピにコピーし、 各コンポーネントプログラムの名前でハードリンクを設けることができます。 .Sh 関連項目 .Xr crunchide 1 .Xr make 1 .Sh 警告 .Nm はクランチバイナリ中の各コンポーネントプログラム間のリンク競合を 除去するのに気を配っていますが、依然としてリンクされたライブラリ間で 競合が発生する可能性が残っています。 ライブラリ順の入れ換えが必要な場合もありますし、 二つのライブラリ間にどうしても解消できない競合が発生し、 結局ひとつにまとめられない場合も稀にあります。 .Pp BSD のバージョンによっては、デフォルトのビルド環境では 単一ソースファイルのプログラムに対して 中間オブジェクトファイルを作成しないことがあります。 その場合は .Dq Li make objs ターゲットを用いてオブジェクトファイルを 作成するか、他の調整を施す必要があります。 .Sh 作者 .Nm は .An James da Silva Aq jds@cs.umd.edu によって作成されました。 .Pp Copyright (c) 1994 University of Maryland. All Rights Reserved. diff --git a/ja_JP.eucJP/man/man1/file.1 b/ja_JP.eucJP/man/man1/file.1 index 1ccb76351d..870aa4cf4c 100644 --- a/ja_JP.eucJP/man/man1/file.1 +++ b/ja_JP.eucJP/man/man1/file.1 @@ -1,405 +1,501 @@ -.\" %FreeBSD: src/usr.bin/file/file.1,v 1.16 2000/03/01 12:19:39 sheldonh Exp % -.Dd July 30, 1997 +.\" %FreeBSD: src/usr.bin/file/file.1,v 1.16.2.3 2000/12/12 14:52:49 ru Exp % +.Dd December 8, 2000 .Dt FILE 1 "Copyright but distributable" .Os .Sh 名称 .Nm file .Nd ファイルの種類を判定する .Sh 書式 -.Nm file -.Op Fl vczL +.Nm +.Op Fl bciknsvzL .Op Fl f Ar namefile .Op Fl m Ar magicfiles .Ar .Sh 解説 このマニュアルは .Nm -コマンドのバージョン 3.22 について記載しています。 +コマンドのバージョン 3.33 について記載しています。 .Nm は、引数で指定されたファイルの種類を判定するプログラムです。判定の ために、ファイルシステムテスト、マジックナンバテスト、言語テストの 3 つのテストをこの順に実行し、 .Em 最初に 判定できた結果からファイルの種類を表示します。 .Pp ファイルの種類として表示されるのは、 .Em text -( -.Tn ASCII -キャラクタだけのファイルで、 +(印字可能文字と少数の制御文字だけのファイルで、 .Tn ASCII 端末に表示した場合、 問題が起こらないもの)、 .Em executable ( .Ux カーネル等に理解可能な形にコンパイルされたプログラムを 含むファイル)、その他のものを意味する .Em data -(data は、通常 `バイナリ' か表示不能なもの) のうちの 1 つです。 +(data は、通常 +.Sq バイナリ +か表示不能なもの) のうちの 1 つです。 例外は、内部フォーマットがよく知られた、 バイナリデータを含むファイル (コアファイルや tar アーカイブ) です。 ファイル .Pa /usr/share/misc/magic やプログラムそのものを変更するときは、 .Em "これらのキーワードを残して下さい" 。 -.Pp ディレクトリ内のすべての可読なファイルは、 -単語 ``text'' を表示することが期待されています。 -Berkeley で行われたように、``shell commands text'' を -``shell script'' と変更するようなことはしないで下さい。 +単語 +.Dq text +を表示することが期待されています。 +Berkeley で行われたように、 +.Dq shell commands text +を +.Dq shell script +と変更するようなことはしないで下さい。 +ファイル +.Pa /usr/share/misc/magic +は、 +.Nm +のソース配布中の +.Pa Magdir +サブディレクトリ中の大量の小さなファイルから機械的に構築されることに +注意してください。 .Pp ファイルシステムテストは、 .Xr stat 2 システムコールからの戻り値を調べることに基づいています。 このプログラムは、ファイルが空であるかどうか、ある種の 特殊ファイルであるかどうかを調べます。 使っているシステムに合った既知のファイルの種類 (システムに実装されたソケット、シンボリックリンク、 名前付きパイプ (FIFO)) は、システムヘッダファイル -.Pa sys/stat.h +.Aq Pa sys/stat.h で定義されていれば表示されます。 .Pp マジックナンバテストは、ファイルが固定フォーマットのデータであるか どうかをチェックするために使われます。 よい例が、実行可能なバイナリ実行形式 (コンパイルされたプログラム) .Pa a.out ファイルです。このフォーマットは標準インクルードディレクトリ内の .Pa a.out.h や場合により .Pa exec.h で定義されています。 実行ファイルは、 -ファイルの先頭近くの特定の場所に、`マジックナンバ' を持ちます。 +ファイルの先頭近くの特定の場所に、 +.Sq マジックナンバ +を持ちます。 これは .Ux オペレーティングシステムに対し、 ファイルがバイナリ実行形式であり、 どのタイプの実行可能ファイルであるかを知らせます。 -`マジックナンバ' の概念は拡張され、データファイルにも適用されています。 +.Sq マジックナンバ +の概念は拡張され、データファイルにも適用されています。 ファイルの先頭に近い固定位置に固定識別子があるファイルは、 このように記述できます。 -これらのファイルの情報は、マジックファイル +これらのファイル識別情報は、マジックファイル .Pa /usr/share/misc/magic から読み込まれます。 .Pp -もしファイルが -.Tn ASCII -ファイルのようであるなら、 +ファイルがマジックファイルのどのエントリにもマッチしない場合、 +text ファイルに見えるかどうか検査されます。 +.Tn ASCII , +.Tn ISO-8859-x , +非 ISO 8-bit 拡張 ASCII 文字集合 +(Macintosh および IBM PC システムで使用), +.Tn UTF-8-encoded Unicode , +.Tn UTF-16-encoded Unicode , +.Tn EBCDIC +の文字集合が区別可能であり、 +これには各文字集合における印字可能 text を構成する +バイトの範囲およびシーケンスを使用します。 +ファイルがこれらのテストのいずれかを通過した場合、文字集合が報告されます。 +.Tn ASCII , +.Tn ISO-8859-x , +.Tn UTF-8 , +extended-ASCII ファイルは +.Dq text +として識別されます。 +なぜなら、ほとんどどのような端末においても読めるからです。 +.Tn UTF-16 +および +.Tn EBCDIC +は +.Dq character data +でしかありません。 +これらは text を含みますが、読む前に変換が必要だからです。 +さらに、 .Nm -は、その言語を推定しようとします。 +は text タイプファイルの他の特性も判定しようとします。 +ファイルの行の終端が、UNIX 標準の LF ではなく、 +CR, CRLF, NEL のいずれかである場合、そのことが報告されます。 +組み込みのエスケープシーケンスや重ね打ちを含むファイルについても、 +識別されます。 +.Pp +text タイプファイルで使用されている文字集合を判定した後、 +その言語を推定しようとします。 言語テストは、ファイルの始めの数ブロックに 特定の文字列 ( .Pa Inames.h を参照) があるかどうかを探します。たとえばキーワード -.Em .br +.Em \&.br があればそれはおそらく .Xr troff 1 の入力ファイルであり、 -.Em struct +struct というキーワードは、C 言語のプログラムであることを示しています。 こうした推定方法は、前述の 2 つのテストより信頼性が低いため、 最後に行われます。言語テストルーチンは ( .Xr tar 1 -アーカイブのような) その他のファイルもチェックし、未知のファイルを -`ASCII text' とすべきか、`data' とすべきかを決定します。 +アーカイブのような) その他のファイルもチェックします。 +.Pp +上記の文字集合のいずれで記述されているとも識別できなかったファイルは、 +単に +.Dq data +と呼ばれます。 .Sh オプション .Bl -tag -width indent -.It Fl v -プログラムのバージョンを表示して、終了します。 -.It Fl m Ar list -マジックナンバを含む別のファイルの -.Ar list -を指定します。 -これは、1 つのファイルか、コロン (:) で分けられたファイルのリストです。 -.It Fl z -compress で圧縮されたファイルの中身を見ようとします。 +.It Fl b +出力行の前にファイル名を付けません (短縮モード)。 .It Fl c マジックファイルを解析した形式を、調査できるように表示します。 通常、 新しいマジックナンバファイルを使う前にデバッグするために、 .Fl m オプションとともに用います。 .It Fl f Ar namefile 引数の前に .Ar name_file から調べるべきファイル名を (1 行に 1 つ) 読み込みます。 .Ar name_file もしくは引数の filename は少なくとも 1 つは指定しなければなりません。 標準入力のファイルの種類を判定させる場合は、 -ファイル名として、``-'' を指定します。 +ファイル名として、 +.Dq Ar - +を指定します。 +.It Fl i +.Nm +に、伝統的な人間が読める形式の代りに、 +mime タイプ文字列を出力させます。 +よって、 +.Dq ASCII text +の代りに +.Dq text/plain; charset=us-ascii +となります。 +本オプションが動作するようにするために、 +.Nm +はファイル認識方法 +(例えば、多くの text ファイルタイプやディレクトリ等) を変え、 +別の +.Dq Pa マジック +ファイルを使用します +(後述の +.Sx FILES +節を参照してください)。 +.It Fl k +最初にマッチしても停止せずに、処理を継続します。 +.It Fl m Ar list +マジックナンバを含む別のファイルの +.Ar list +を指定します。 +これは、1 つのファイルか、コロン (:) で分けられたファイルのリストです。 +.It Fl n +各ファイルのチェック後に、標準出力をフラッシュします。 +ファイルの一覧をチェックしているときのみ、有用です。 +ファイルタイプをパイプから出力するプログラムにおいて使用することを意図します。 +.It Fl s +通常、 +.Nm +が引数のファイルの読み込みとタイプの判定を行うのは、 +.Xr stat 2 +が通常ファイルであると報告した場合のみです。 +これにより問題を回避しています。 +なぜなら、特殊ファイルの読み込みは、 +特定の結果を発生させる場合があるからです。 +.Fl s +オプションを指定すると、 +.Nm +は、ブロックおよびキャラクタの特殊ファイルも読み込みます。 +これは、raw ディスクパーティション中のデータに存在する +ファイルシステムタイプの判定に有用です。 +なぜなら、raw ディスクパーティションはブロック型特殊ファイルであるからです。 +本オプションはまた、 +.Nm +が +.Xr stat 2 +が報告するファイルの大きさを無視するようにさせます。 +なぜなら、システムによっては、 +raw ディスクパーティションの大きさは 0 であると報告するものがあるからです。 +.It Fl v +プログラムのバージョンを表示して、終了します。 +.It Fl z +compress で圧縮されたファイルの中身を見ようとします。 .It Fl L オプションは(システムがシンボリックリンクを提供していれば)、 .Xr ls 1 コマンドの .Fl L オプションと同様にシンボリックリンクをたどって実際のファイルの中 身の種類を判定します。 .El .Sh 関連ファイル -.Bl -tag -width /usr/share/misc/magic -compact +.Bl -tag -width /usr/share/misc/magic.mime -compact .It Pa /usr/share/misc/magic -デフォルトのマジックナンバのリスト ( -.Fx 3.0 -以前では -.Pa /etc/magic -でした) +デフォルトのマジックナンバのリスト +.It Pa /usr/share/misc/magic.mime +.Fl i +が指定されて mime タイプを出力する場合に使用する、 +デフォルトのマジックナンバのリスト .El .Sh 環境変数 環境変数 -.Em MAGIC +.Ev MAGIC は、デフォルトのマジックナンバファイルを指定するために 使うことができます。 .Sh 関連項目 .Xr od 1 , .Xr strings 1 , .Xr magic 5 .Sh 標準適合性 FILE(CMD) の System V Interface Definition の曖昧な記述から 判断する限りにおいては、 このプログラムはこの仕様を越えていると思われます。 同名の System V のプログラムと、ほとんど動作は同じです。 しかし、このバージョンはより多くのマジックを知っているので、多くの場合に 異なった (より正確な) 出力を出します。 .Pp このバージョンと System V のものとの大きな違いは、 このバージョンは全ての空白を区切り文字として扱うため パターン内の空白はエスケープしなければならないということです。 たとえば、 -.br ->10 string language impress\ (imPRESS data) -.br +.Bd -literal -compact +>10 string language impress (imPRESS data) +.Ed とマジックファイルに書かれていた場合は、次のように 変更せねばなりません。 -.br ->10 string language\e impress (imPRESS data) -.br +.Bd -literal -compact +>10 string language\e impress (imPRESS data) +.Ed +.Pp またこのバージョンでは、バックスラッシュを含んでいる パターンもエスケープしなくてはいけません。たとえば、 -.br +.Bd -literal -compact 0 string \ebegindata Andrew Toolkit document -.br +.Ed とマジックファイルに書かれていた場合は、次のように 変更せねばなりません。 -.br +.Bd -literal -compact 0 string \e\ebegindata Andrew Toolkit document -.br +.Ed .Pp Sun Microsystems の SunOS リリース 3.2 もしくはそれ以降には、 System V 由来の .Xr file 1 コマンドが含まれていますが、拡張がなされています。 このバージョンは SUN のものとは、細かい点でしか異なりません。 このバージョンには `&' 演算子の拡張が含まれています。 使い方は、次のようなものです。 -.br +.Bd -literal -compact >16 long&0x7fffffff >0 not stripped +.Ed .Sh マジックディレクトリ マジックファイルのエントリは様々なソース (主に USENET) から集められたり、様々な作者から提供されました。 .An Chirstos Zoulas (下記のアドレス) が、 マジックファイルエントリをさらに集めたり訂正するでしょう。 統合したマジックファイルエントリは、定期的に配布されるでしょう。 .Pp マジックファイルにおけるエントリの順序は 重要です。 使っているシステムによって、エントリの順序が正しくなくなることが あります。 もし、あなたの古い .Nm コマンドがマジックファイルを使っているのなら、 比較のため古いマジックファイルを保存して下さい (たとえば、 .Pa /usr/share/misc/magic.orig という名前に変更します) 。 +.Sh 使用例 +.Bd -literal +$ file file.c file /dev/hda +file.c: C program text +file: ELF 32-bit LSB executable, Intel 80386, version 1, + dynamically linked, not stripped +/dev/hda: block special + +$ file -s /dev/hda{,1,2,3,4,5,6,7,8,9,10} +/dev/hda: x86 boot sector +/dev/hda1: Linux/i386 ext2 filesystem +/dev/hda2: x86 boot sector +/dev/hda3: x86 boot sector, extended partition table +/dev/hda4: Linux/i386 ext2 filesystem +/dev/hda5: Linux/i386 swap file +/dev/hda6: Linux/i386 swap file +/dev/hda7: Linux/i386 swap file +/dev/hda8: Linux/i386 swap file +/dev/hda9: empty +/dev/hda10: empty + +$ file -i file.c file /dev/hda +file.c: text/x-c +file: application/x-executable, dynamically linked (uses shared libs), not stripped +/dev/hda: application/x-not-regular-file +.Ed .Sh 歴史 .Nm コマンドは、少なくとも Research Version 6 (マニュアルページの日付は、1975 年 1 月) からはどの .Ux にもありました。 System V バージョンはある重要な変更、 すなわち外部マジックナンバリストを導入しました。 これによってプログラムのスピードはわずかに低下しましたが、 更にまた柔軟になりました。 .Pp このプログラムは、System V バージョンを基づいており、 -.An Ian Darwin +.An Ian Darwin Aq ian@darwinsys.com によって、他の誰かのソースコードを見ることなく 書かれました。 .Pp .An John Gilmore -はコードを拡張し、最初の版よりも -よいものにしました。 +は、コードを拡張し、最初の版よりもよいものにしました。 .An Geoff Collyer -は 不適当なところが数箇所あるのを -発見し、いくつかマジックファイルエントリを -提供しました。 -プログラムは、ずっと発展し続けています。 -.SH 作者 -.An Ian F. Darwin Aq ian@sq.com , -UUCP アドレス {utzoo | ihnp4}!darwin!ian, -住所 P.O. Box 603, Station F, Toronto, Ontario, CANADA M4Y 2L8. -により書かれました。 -.Pp +は、不適当なところが数箇所あるのを発見し、 +いくつかマジックファイルエントリを提供しました。 .An Rob McMahon Aq cudcv@warwick.ac.uk -が 1989 年に、`&' 演算子を単純な -`x&y != 0' から `x&y op z' に拡張するため変更しました。 -.Pp -.An Guy Harris Aq guy@auspex.com -が 1993 年に、 -.Bl -item -offset indent -.It -``旧型'' の `&' 演算子を元のように戻しました。理由は、 -.Bl -enum -offset indent -.It -Rob McMahon の変更によりこれまでの使用法ができなくなった。 -.It -このバージョンの -.Nm -がサポートする SunOS の ``新型'' の `&' 演算子で、`x&y op z' も扱える。 -.It -Rob の変更はドキュメントに書かれていなかった。 -.El -.It -他段階の `>' 追加。 -.It -``beshort'', ``leshort'' などのキーワードの追加。 -.Nm -が動いているプロセスのバイトオーダではなく、 -ファイル特有のバイトオーダで数字を見るようにするキーワードです。 -.El +は、1989 年に、 +.Sq \&& +演算子を寄贈しました。 .Pp -.An Ian Darwin -や -.An Christos Zoulas Aq christos@deshaw.com -を含む -多くの作者による 1990-1992 年の変更。 -.Sh 法律上の注意 -Copyright (c) Ian F. Darwin, Toronto, Canada, -1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993. +.An Guy Harris Aq guy@netapp.com +は、1993 年から現在に至り、多くの変更を行っています。 .Pp -This software is not subject to and may not be made subject to any -license of the American Telephone and Telegraph Company, Sun -Microsystems Inc., Digital Equipment Inc., Lotus Development Inc., the -Regents of the University of California, The X Consortium or MIT, or -The Free Software Foundation. +基本開発と 1990 年から現在に至るメンテナンスを、 +.An Christos Zoulas Aq christos@astron.com +が行っています。 .Pp -This software is not subject to any export provision of the United States -Department of Commerce, and may be exported to any country or planet. +2000 年に +.An Chris Lowth Aq chris@lowth.com +が修正を行い、 +.Fl i +オプションが mime タイプ文字列を出力し、 +別のマジックファイルと内部ロジックを使用するようになりました。 .Pp -Permission is granted to anyone to use this software for any purpose on -any computer system, and to alter it and redistribute it freely, subject -to the following restrictions: +2000 年 7 月に +.An Eric Fischer Aq enf@pobox.com +が修正を行い、 +文字コードを識別し、非 ASCII ファイルの原語を識別しようとするようになりました。 .Pp -.Bl -enum -offset indent -.It -The author is not responsible for the consequences of use of this -software, no matter how awful, even if they arise from flaws in it; -.It -The origin of this software must not be misrepresented, either by -explicit claim or by omission. Since few users ever read sources, -credits must appear in the documentation; -.It -Altered versions must be plainly marked as such, and must not be -misrepresented as being the original software. Since few users -ever read sources, credits must appear in the documentation; -.It -This notice may not be removed or altered. -.El -.Pp -A few support files ( -.Fn getopt , -.Fn strtok ) -distributed with this package -are in the public domain; they are so marked. +.Pa Magdir +ディレクトリ ( +.Pa /usr/share/misc/magic +ファイルのソース) に対する寄贈者は、ここに含めるには長過ぎます。 +ご了承ください。 +.Sh 法律上の注意 +Copyright (c) Ian F. Darwin, Toronto, Canada, 1986-1999. +Covered by the standard Berkeley Software Distribution +copyright; see the file LEGAL.NOTICE in the source distribution. .Pp The files .Pa tar.h and .Pa is_tar.c were written by .An John Gilmore from his public-domain .Nm tar program, and are not covered by the above restrictions. .Sh バグ -マジックディレクトリから -マジックファイルを自動的に作成するよりよい方法があるはずです。 +.Pa Pagicdir +から +.Pa Magic +ファイルを自動的に作成するよりよい方法があるはずです。 それは何なのでしょうか。より起動を速くするため マジックファイルをバイナリにコンパイルするとよいでしょう。 (たとえば .Xr ndbm 3 あるいは、異機種ネットワーク環境では固定長の .Tn ASCII 文字)。 そうすれば、同名の バージョン 7 のプログラムと同じぐらいの速さで System V バージョンの柔軟性を持ったプログラムとなるでしょう。 .Pp .Nm には、正確さよりも 速度を重視したアルゴリズムが いくつかあるので -.Tn ASCII +text ファイルの内容については 間違うことがあります。 .Pp -.Tn ASCII -ファイルのサポート ( 元々はプログラミング言語のため ) は +text +ファイルのサポート (元々はプログラミング言語のため) は 単純で、不十分であり、更新には再コンパイルが必要です。 .Pp 複数の行に渡るものをサポートするため -``else'' 項があるべきです。 +.Dq else +項があるべきです。 .Pp マジックファイルと キーワードの正規表現を サポートするべきです。 -.Tn ASCII TAB +ASCII TAB をフィールドの識別子にすることは醜く、 ファイルの編集を難しくしていますが、残されています。 .Pp キーワードに大文字を許すことが勧められます。たとえば、 .Xr troff 1 コマンドと man page マクロの区別です。 正規表現のサポートで、このことは簡単になるでしょう。 .Pp -\s-2FORTRAN\s0 に対してプログラムが働きません。 +FORTRAN に対してプログラムが働きません。 行の先頭にインデントされているキーワードを見ることにより -\s-2FORTRAN\s0 だと判別すべきです。 +FORTRAN だと判別すべきです。 正規表現のサポートによりこれは簡単になるでしょう。 .Pp .Em ascmagic に入っている -キーワードのリストは、おそらくマジックファイルに +キーワードのリストは、おそらく +.Pa Magic +ファイルに 入れるべきものです。 これはオフセットの値として `*' のようなキーワードを 使うことで可能でしょう。 .Pp 最初の文字、最初の語、最初の long などに関する テストを 最初に読み込んだときに全て行うことができるよう マジックファイルを並べ直す最適化法はないだろうか。 マジックファイルの矛盾について述べるようにならないか。 エントリーの順序を マジックファイル上の位置ではなく、 ファイルオフセット順にすることはできないだろうか。 .Pp -プログラムは、推定が「どれぐらいよい」のかを知る方法を -提供すべきです。ファイルの最初の 5 文字が ``From '' -であるときに推測をしても、``Newsgroups:'' や "Return-Path:" +プログラムは、推定が +.Dq どれぐらいよい +のかを知る方法を +提供すべきです。ファイルの最初の 5 文字が +.Dq From\ \& +であるときに推測をしても、 +.Dq Newsgroups: +や +.Dq Return-Path: といった文字による推測ほどよくはないので、推測結果を 捨てることになります。しかし、もしそういった文字が 現れなければ最初の推定を使わなければなりません。 .Pp このプログラムは、いくつかの商用の .Nm コマンドより遅いです。 +複数の文字コードのサポートにより、より遅くなっています。 .Pp このマニュアルページ、特にこの節が長過ぎます。 .Sh 入手性 オリジナル作者の最新のバージョンを anonymous FTP で、 -.Em ftp.deshaw.com +.Pa ftp.deshaw.com の .Pa /pub/file/file-X.YY.tar.gz から手に入れることができます。 diff --git a/ja_JP.eucJP/man/man8/disklabel.8 b/ja_JP.eucJP/man/man8/disklabel.8 index 95958c623e..ee44f70dca 100644 --- a/ja_JP.eucJP/man/man8/disklabel.8 +++ b/ja_JP.eucJP/man/man8/disklabel.8 @@ -1,658 +1,782 @@ .\" Copyright (c) 1987, 1988, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" This code is derived from software contributed to Berkeley by .\" Symmetric Computer Systems. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgment: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)disklabel.8 8.2 (Berkeley) 4/19/94 -.\" %FreeBSD: src/sbin/disklabel/disklabel.8,v 1.15.2.3 2000/10/31 01:32:23 jkh Exp % +.\" %FreeBSD: src/sbin/disklabel/disklabel.8,v 1.15.2.7 2000/12/28 16:45:04 hoek Exp % .\" .\" jpman %Id: disklabel.8,v 1.2 1997/03/31 14:09:16 horikawa Stab % .\" .Dd July 30, 1999 .Dt DISKLABEL 8 .Os FreeBSD .Sh 名称 .Nm disklabel .Nd ディスクラベルの読み書きを行う .Sh 書式 -.Nm disklabel +.Nm .Op Fl r .Ar disk -.br -.Nm disklabel +.Nm .Fl w .Op Fl r .Ar disk Ar disktype .Oo Ar packid Oc -.br -.Nm disklabel +.Nm .Fl e .Op Fl r .Ar disk -.br -.Nm disklabel +.Nm .Fl R .Op Fl r .Ar disk Ar protofile -.br -.Nm disklabel +.Nm .Op Fl NW .Ar disk -.sp -.br -.Nm disklabel +.Pp +.Nm .Fl B .Oo .Fl b Ar boot1 .Fl s Ar boot2 .Oc .Ar disk -.Oo Ar disktype Oc -.br -.Nm disklabel +.Oo Ar disktype/auto Oc +.Nm .Fl w .Fl B .Oo .Fl b Ar boot1 .Fl s Ar boot2 .Oc -.Ar disk Ar disktype +.Ar disk Ar disktype/auto .Oo Ar packid Oc -.br -.Nm disklabel +.Nm .Fl R .Fl B .Oo .Fl b Ar boot1 .Fl s Ar boot2 .Oc .Ar disk Ar protofile -.Oo Ar disktype Oc -.\" 注: 上記 .br は改行動作のために挿入 -.\" By horikawa@jp.freebsd.org (30 Mar 1997) +.Oo Ar disktype/auto Oc .Sh 解説 .Nm はディスクドライブやディスクパックにラベルを書き込んだり、 確認したり、修正したりするために使われます。 ラベルを書き込む際には、ドライブの識別子を変更したり、 ディスクのパーティションを変更したり、 異常のあるラベルを置き換えたりすることができます。 コマンドには、ディスク上のラベルを読んだり (表示したり)、書き込んだり、 編集したりするいくつかの書式があります。 また .Nm は同時にブートストラップコードを インストールすることもできます。 .Ss メモリ内のラベルとディスク上のラベル .Pp ディスクラベルは各ディスクパーティションの先頭、 もしくは先頭付近に存在します。 より速くアクセスするために、カーネルは 常にメモリ内にコピーを保持します。 デフォルトでは、 .Nm による操作のほとんどは メモリ内にあるラベルのコピーに対してアクセスします。 -(ディスク上に存在する)ラベルにアクセスするためには +(ディスク上に存在する) ラベルにアクセスするためには .Fl r オプションを使用します。 このオプションにより、 カーネルのサポート無しでラベルがディスクにインストール することが可能になります。 例えばラベルがはじめてシステムにインストールされる時など、 ディスクにはじめてラベルを書き込む際に指定されなければなりません。 .Fl r オプションによる固有の効果は以下の 各コマンドの説明で示します。 .Pp .Ss ディスクデバイス名 .Pp 全ての -.Nm disklabel +.Nm の書式で、ディスクのデバイス名が必要です。 -ディスクのデバイス名は必ずローデバイスで -.if t 「全体」を表すパーティション (すなわち ``c'') -.if n 「全体」を表すパーティション (すなわち "c") -でなければなりません。 -.if t 「全体」を表すパーティション (すなわち ``c'') -.if n 「全体」を表すパーティション (すなわち "c") -とは、例えば -.Pa /dev/da0c +ディスクのデバイス名は、 +ディスクまたはスライスを示すローデバイス名でなければなりません。 +例えば +.Pa da0 +は DOS パーティションに無関係でディスク全体を表し、 +.Pa da0s1 +はスライスを表します。 +デバイスによっては、特に +.Ar ccd +では、 +.Dq ディスク全体を示す +(または +.Dq c ) +パーティションを必要とします。 +例えば +.Pa ccd0c です。 +デバイス指定時には、 +.Pa /dev/ +のパスプレフィックスを付ける必要はありません。 .Nm -は -.Pa da0 -といった省略形を内部で -.Pa /dev/da0c -に変換するため、省略形も使用できます。 +は自動的にこれを前に付けます。 .Ss ディスクラベルの読み込み .Pp ラベルをディスクドライブに保存したり確認するためには オプションを指定せずに .Nm を使用します。 .Pp -.Nm disklabel +.Nm .Op Fl r .Ar disk .Pp .Ar disk は対象とするローディスクを示します。 また .Pa da0 や .Pa /dev/da0c のような書式でも指定することができます。 これによってドライブに関するすべてのパラメータとパーティションのレイアウトを 表示します。 .Fl r フラグを指定しない場合には、カーネルのメモリ内にあるラベルのコピーが 表示されます。 もしディスクにラベルが書き込まれていなかったり、ディスクのパーティション形式が 正しくない場合には、カーネルが作り直したり、修正するかもしれません。 .Fl r フラグが与えられると、 ディスク上の実際のラベルが表示されます。 +通常は、どちらでも同じ結果となりますが、 +ラベルが未初期化の場合とまたは壊れている場合には、違う結果となります。 .Ss 標準的なラベルの書き込み .Pp 標準的なラベルを書き込むには、 以下の書式を使います。 .Pp -.Nm disklabel +.Nm .Fl w .Op Fl r -.Ar disk Ar disktype +.Ar disk Ar disktype/auto .Oo Ar packid Oc .Pp +.Nm +.Fl w +.Op Fl r +.Ar disk +auto +.Pp コマンドには引数として、ラベルを書き込むドライブ名および .Pa disktab(5) に書かれているドライブタイプが必要です。 ドライブのパラメータとパーティション情報は、このファイルから得られたもの が使われます。 もし、同じ型のディスクに異なるパーティション情報を持たせたい場合には、 disktab にそれぞれ別々のエントリを書いておくか、ラベルを書き込んだあとで 後述する方法でそれを編集する必要があります。 オプションの引数として、16 文字までのパック識別用文字列を指定します。 パック名に空白を含める場合にはそれをクォートする必要があります。 .Fl r フラグが与えられると、ディスクのラベルとブートストラップが 直接書き換えられます。 この副作用として、すでにあるブートストラップ用コードが上書きされてしまうため、 ディスクがブート不能にされてしまいます。 ラベルとブートストラップを同時に書き込む方法は 後述のブートオプションを参照してください。 .Fl r が指定されない場合には、ラベルはメモリ内のコピーを通して書き換えられる ため、ブートストラップコードは影響されません。 もしまだディスクがラベル付けされていなければ、 .Fl r フラグをつけなければなりません。 どちらの方法でも、カーネルのメモリ内コピーは変更されます。 .Pp .Xr disktab 5 に記載されていない未使用のディスクに対しては、 .Ar disktype として .Dq auto を指定できます。 この場合、ディスクの最初のラベルを生成するようにドライバに要求します。 これは成功するかも知れないし成功しないかも知れません。 これはディスクドライバがディスクを全く読む事無く 必要なデータを取得できるか否かに依存します。 全ての SCSI ディスクとほとんどの IDE ディスクと vnode デバイスにおいて 成功するでしょう。 ディスクに対するラベルの書き込みは唯一サポートされた操作であり、 .Ar disk 自身は標準の名前 (フルパス名であってはなりません) で提供される必要があります。 +.Pp +PC ベースのシステムでは、 +BIOS に正しく +.Fx +ディスクラベルを認識させるために、特別な要件があります。 +古いシステムでは、 +.Dq 危険な方法で専用化された +ディスクラベルが必要かもしれません。 +これは、偽の DOS パーティションを作成することにより、 +最近のディスクのジオメトリに対して古い BIOS が引き起す問題を +回避するというものです。 +新しいシステムでは、通常の DOS スライスを +.Ar fdisk +で作成して、このスライス中に +.Fx +ディスクラベルを作成すれば良いでしょう。 +本件についてはこのマニュアルで後述します。 +.Pp +新規ディスクラベルをインストールするだけでは、 +このラベルでシステムをブートさせることは出来ません。 +ブートブロックもまたインストールする必要があります。 +本件についてはこのマニュアルで後述します。 .Ss 既存のディスクラベルの編集 .Pp 既存のディスクラベルを編集するには、 以下の書式を使います。 .Pp -.Nm disklabel +.Nm .Fl e .Op Fl r .Ar disk .Pp このコマンドはラベルを カーネルのメモリ内コピーから、または .Fl r フラグが与えられた場合には直接ディスクから 読み込まれます。 ラベルはアスキーでファイルにかかれ、 編集するためのエディタへ渡されます。 .Ev EDITOR 環境変数によるエディタの指定がない場合には、このエディタには .Xr vi 1 が使用されます。 エディタを終了すると、ラベルファイルはディスクラベルを 再書き込みするために使われます。 .Fl r フラグの指定の有無にかかわらず、 すでにあるブートストラップコードは変更されません。 .Ss ファイルからのディスクラベルの復元 .Pp ファイルからディスクラベルを復元するには、 以下の書式を使います。 .Pp -.Nm disklabel +.Nm .Fl R .Op Fl r .Ar disk Ar protofile .Pp .Nm は以前の操作によりアスキーファイルとして保存されているディスクラベル をディスクへ書き戻します。 ラベルを作成するときに使われるプロトタイプファイルは、ラベルを読み込んだり 編集したりするときのものと同じフォーマットである必要があります。 コメントは .Ar \&# と改行で区切られます。 新しいラベルを書き込む際に .Fl r が指定されているとブートストラップコードは使えなくなってしまいますが、 指定されていない場合には影響ありません。 ラベルの復元とブートストラップの書き込みを同時に行う方法は 後述のブートオプションを参照してください。 .Ss ディスクラベル領域への書き込みの有効化および無効化 .Pp -デフォルトでは +デフォルトでは、 ディスクの先頭領域にあるディスクラベル領域への書き込みは不可能です。 ディスクドライバはいかなる操作も無視します。 -もし(例えばラベルを消去するなど) +もし (例えばラベルを消去するなど) この領域への書き込みを行う必要があるならば、 以下の書式を使います。 .Pp -.Nm disklabel +.Nm .Op Fl W .Ar disk .Pp ラベルの書き込みを可能にした後に不可能にするには 以下のコマンドを使います。 .Pp -.Nm disklabel +.Nm .Op Fl N .Ar disk .Ss ブートストラップのインストール .Pp .Nm の最後の 3 つの書式は、ブートストラップコードを インストールするために使われます: .Pp -.Nm disklabel +.Nm .Fl B .Oo .Fl b Ar boot1 .Fl s Ar boot2 .Oc .Ar disk .Oo Ar disktype Oc .Pp この書式ではブートストラップのみインストールします。 ディスクラベルは変更しません。 .Pp -.Nm disklabel +.Nm .Fl w .Fl B .Oo .Fl b Ar boot1 .Fl s Ar boot2 .Oc .Ar disk Ar disktype .Oo Ar packid Oc .Pp -.if t この書式は前述の ``ラベルの書き込み'' コマンドと一致します。 -.if n この書式は前述の "ラベルの書き込み" コマンドと一致します +この書式は前述の +.Dq ラベルの書き込み +コマンドと一致します。 新しいボリュームラベルを書き込むとともに ブートストラップのインストールもおこないます。 +ベースディスクに対して本コマンドを実行すると、 +.Dq 危険な方法で専用化された +ラベルを作成します。 +本コマンドは、通常、ベースディスクではなくスライスに対して実行します。 .Pp -.Nm disklabel +.Nm .Fl R .Fl B .Oo .Fl b Ar boot1 .Fl s Ar boot2 .Oc .Ar disk Ar protofile .Oo Ar disktype Oc .Pp -.if t この書式は前述の ``ラベルの復元'' コマンドと一致します. -.if n この書式は前述の "ラベルの復元" コマンドと一致します. +この書式は前述の +.Dq ラベルの復元 +コマンドと一致します. ボリュームラベルを復元するとともに ブートストラップのインストールもおこないます。 .Pp ブートストラップコマンドは常にディスクに直接アクセスするため、 .Fl r フラグを指定する必要はありません。 .Pp ブートストラップコードは 2 つのブートプログラムより構成されます。 インストールされるブートプログラムの名前は 以下の 3 つの方法の中の 1 つより指定します。 .Bl -enum .It .Fl b フラグと .Fl s フラグを用いて明示的に名前を指定します。 .Fl b フラグで指定するのが最初のブートプログラムで、 .Fl s フラグで指定するのが 2 段階目のブートプログラムになります。 ブートプログラムは、 .Pa /boot に置かれます。 .It .Fl b フラグと .Fl s フラグが指定されておらず .Ar disktype が指定された場合、 disktab のエントリが存在しこれらのパラメータが含まれるならば プログラムの名前は このディスクに対する .Xr disktab 5 エントリの -.if t ``b0'' および ``b1'' -.if n "b0" および "b1" +.Dq b0 +および +.Dq b1 パラメータより得られます。 .It そうでない場合、デフォルトのブートイメージ名は 標準のステージ 1 およびステージ 2 のブートイメージとして .Pa /boot/boot1 と .Pa /boot/boot2 になります (詳細はアーキテクチャによって異なり、 Alpha においては単一ステージのブートが使用されます)。 .El +.Ss スクラッチからの、ブート可能ディスクの初期化/フォーマット +.Pp +ディスクをスクラッチから初期化するには、次の手順をお勧めします。 +この手順は、FreeBSD 以外のスライスを含む、 +ディスク上のすべてを削除してしまうことに注意してください。 +.Bl -enum +.It +.Ar fdisk +を使用して、DOS パーティションテーブルを作成します。 +これにより、 +.Fx +ディスクラベルを保持するディスク全体のスライスを作成し、 +マスタブートレコードをインストールします。 +.It +.Ar disklabel +を使用して、最初の +.Fx +ディスクラベルを初期化し、 +.Fx +ブートブロックをインストールします。 +.It +.Ar disklabel +を使用して、新規に作成したラベルを編集し、適切なパーティションを追加します。 +.It +最後に、ラベル中に作成したファイルシステムパーティションを newfs します。 +典型的なディスクラベルのパーティショニング方式では、 +.Dq a +パーティションは約 128MB でルートファイルシステムを、 +.Dq b +パーティションはスワップを、 +.Dq d +パーティションは /var を (通常 128MB)、 +.Dq e +パーティションは /var/tmp を (通常 128MB)、 +.Dq f +パーティションは /usr を (通常 2G くらい)、 +.Dq g +パーティションは /home を (通常、残り)、 +それぞれ割り当てます。 +これは、システムによって異なります。 +.El +.Pp +.Nm fdisk Fl BI Ar da0 +.Pp +.Nm +.Fl w +.Fl r +.Fl B +.Ar da0s1 +auto +.Pp +.Pp +.Nm +.Fl e +.Ar da0s1 +.Pp .Sh 関連ファイル .Bl -tag -width Pa -compact .It Pa /etc/disktab .It Pa /boot/ .It Pa /boot/boot .Sh 保存されたファイルの書式 .Nm は ディスクラベルを確認、編集、または復元する際に -アスキー形式のラベルを使用します。 +ASCII 形式のラベルを使用します。 フォーマットは以下のとおりです。 .Bd -literal -offset 4n # /dev/da1c: type: SCSI disk: da0s1 label: flags: bytes/sector: 512 sectors/track: 51 tracks/cylinder: 19 sectors/cylinder: 969 cylinders: 1211 sectors/unit: 1173930 rpm: 3600 interleave: 1 trackskew: 0 cylinderskew: 0 headswitch: 0 # milliseconds track-to-track seek: 0 # milliseconds drivedata: 0 8 partitions: # size offset fstype [fsize bsize bps/cpg] a: 81920 0 4.2BSD 1024 8192 16 # (Cyl. 0 - 84*) b: 160000 81920 swap # (Cyl. 84* - 218*) c: 1173930 0 unused 0 0 # (Cyl. 0 - 1211*) h: 962010 211920 vinum # (Cyl. 218*- 1211*) .Ed .Pp # で始まる行はコメントです。 他の項目のほとんども既に使われていません。 正しく設定されてなければならない項目は以下のとおりです: .Pp .Bl -hang -width 20n .It Nm label オプションのラベルです。 ラベルを書き込む際に .Ar packid オプションにより設定されます。 .It Nm flags flags は .Ar removable 、 .Ar ecc もしくは .Ar badsect が指定可能です。 .Ar removable はリムーバブルメディアドライブに対して設定されますが、 -現在の FreeBSD のドライバはこのフラグを +現在の +.Fx +のドライバはこのフラグを 評価しません。 .Ar ecc はサポートされていません。 .Ar badsect はドライブが不良セクタの代替を行える場合に 指定します。 .It Nm sectors/unit ディスクの全体の大きさを示します。 この値は正しくなければなりません。 .It Nm the partition table これはUNIX のパーティションテーブルであり、 .Xr fdisk 8 で述べられている Microsoft のパーティションテーブルではありません。 .El .Pp パーティションテーブルは 8 つまでエントリを持つことができ、 以下の情報を含みます: .Bl -hang -width 10n .It identifier パーティションの識別子は .Nm a から .Nm h の 1 文字です。 慣例的な理由により、 .Nm c パーティションは ディスク全体を表すために予約されています。 .It size セクタ単位でのパーティションの大きさです。 .It offset ドライブの先頭からのオフセットによるパーティションの開始位置です。 .It fstype パーティションの使用目的を表します。 例ではもっとも一般的な使用例を示しています。 UFS ファイルシステムは 4.2BSD が使われます。 完全なリストは .Pa /usr/include/sys/disklabel.h を参照してください。 .It fsize ファイルシステムに対して有効です。 フラグメントのサイズを意味します。 .It bsize ファイルシステムに対して有効です。 ブロックののサイズを意味します。 .It bps/cpg UFS ファイルシステムに対しては、 シリンダグループ中のリシンダ数を意味します。 LFS ファイルシステムに対しては、 セグメントシフト値を意味します。 .El +.Pp 行の残りの部分はコメントで、 ドライブの -一般的には使われていない(しかし多分正確な)ジオメトリ情報に +一般的には使われていない (しかし多分正確な) ジオメトリ情報に 基づいたシリンダの割り当て情報を示しています。 アスタリスク (*) はパーティションがシリンダ境界で 厳密にはじまっていない、もしくは終っていないことを意味します。 .Sh 使用例 -.Dl disklabel da0 +.Dl disklabel da0s1 .Pp -da0 のラベルとしてカーネル内のコピーを -.Pa /dev/da0c +.Pa da0s1 +のラベルとしてカーネル内のコピーを +.Pa /dev/da0s1 から得られたものとして表示します。 +ラベルを読み込み時には、ラベルがスライス上に存在する場合でも、 +FreeBSD はベースディスク名を指定することを許しています。 +しかしながら、厳密には、 +ベースディスク名を指定するのは +.Dq 危険な方法で専用化された +ラベルを使用する場合に限定してください。 +通常は、スライスを指定してください。 .Pp -.Dl disklabel da0 > savedlabel +.Dl disklabel da0s1 > savedlabel .Pp -.Pa da0 +.Pa da0s1 に対する カーネル内のコピーをファイルに .Pa savedlabel に保存します。 このファイルは後で .Fl R フラグを用いてラベルを復元する際に使用できます。 .Pp -.Dl disklabel -w -r /dev/da0c da2212 foo +.Dl disklabel -w -r /dev/da0s1 da2212 foo .Pp .Pa /etc/disktab に書かれている -.if t ``da2212'' -.if n "da2212" +.Dq da2212 の情報を -da0 のラベルとして書き込みます。 +.Pa da0s1 +のラベルとして書き込みます。 存在したブートストラップコードは使えなくなります。 .Pp -.Dl disklabel -e -r da0 +.Dl disklabel -e -r da0s1 .Pp -da0 のディスク上のラベルを読み込み、編集し、再び書き込みます。 +.Pa da0s1 +のディスク上のラベルを読み込み、編集し、再び書き込みます。 ディスク上のラベルとともにカーネル内コピーも書き換えられます。 存在したブートストラップコードは影響を受けません。 .Pp -.Dl disklabel -r -w da0 auto +.Dl disklabel -r -w da0s1 auto .Pp -da0 から必要な情報を自動検出し、新しいラベルをディスクに書こうとします。 +.Pa da0s1 +から必要な情報を自動検出し、新しいラベルをディスクに書こうとします。 パーティションおよびファイルシステム情報を編集するために、 この後で disklabel -e コマンドを使って下さい。 .Pp -.Dl disklabel -R da0 savedlabel +.Dl disklabel -R da0s1 savedlabel .Pp .Pa savedlabel に書かれている情報を -da0 のラベルとして書き込みます。 +.Pa da0s1 +のラベルとして書き込みます。 ディスク上のラベルとともにカーネル内コピーも書き換えられます。 存在したブートストラップコードは影響を受けません。 .Pp -.Dl disklabel -B da0 +.Dl disklabel -B da0s1 .Pp -da0 に新たにブートストラップコードを書き込みます. +.Pa da0s1 +に新たにブートストラップコードを書き込みます. ブートストラップコードは .Pa /boot/boot1 、およびもし必要ならば .Pa /boot/boot2 です。 ディスク上のラベルおよびカーネル内コピーは影響を受けません。 .Pp -.Dl disklabel -w -B /dev/da0c -b newboot1 -s newboot da2212 +.Dl disklabel -w -B /dev/da0s1 -b newboot1 -s newboot da2212 .Pp 新たなラベルとブートストラップコードを書き込みます。 -.if t ラベルは disktab の ``da2212'' の情報を使用し、 -.if n ラベルは disktab の "da2212" の情報を使用し、 +ラベルは disktab の +.Dq da2212 +の情報を使用し、 ディスク上のラベルとともにカーネル内コピーも書き換えられます。 ブートストラップコードは .Pa /boot/newboot1 と .Pa /boot/newboot2 です。 +.Pp +.Dl dd if=/dev/zero of=/dev/da0 bs=512 count=32 +.Dl fdisk -BI da0 +.Dl dd if=/dev/zero of=/dev/da0s1 bs=512 count=32 +.Dl disklabel -w -r -B da0s1 auto +.Dl disklabel -e da0s1 +.Pp +ディスク上の既存の情報を完全に削除し、 +単一の +.Dq ディスク全体 +スライスを含む DOS パーティションテーブル付きの、 +ブート可能ディスクを新規に作成します。 +次にスライスを初期化し、編集します。 +.Pa dd +はオプションですが、 +BIOS によっては正しくディスクを認識するために必要です。 .Sh 関連項目 .Xr disklabel 5 , .Xr disktab 5 , .Xr boot0cfg 8 , .Xr fdisk 8 .Sh 診断 デバイスドライバは、 オープンされているパーティションに関して、 サイズが小さくなることおよびオフセットが変化することを許しません。 デバイスドライバの中には、 ラベルを持たないディスクに対して 1 パーティションのみからなる ラベルを作成するものがあります。 そのため、 オープンされているディスクのラベルは -.if t ``a'' -.if n "a" +.Dq a パーティションに書く必要があります。 このような理由で、 次の 2 ステップにより、 所望のラベルを作成する必要がある場合があります。 第 1 ステップは少なくとももう 1 つのパーティションを作成することであり、 第 2 ステップは -.if t ``a'' -.if n "a" +.Dq a パーティションを小さくしながら 新たなパーティションのラベルを設定することです。 .Pp ファイルシステムによっては、 用意された領域にブートストラップコードが収まり切らないような マシンがあるかも知れません -その結果として、``ブート可能な'' ディスクのパーティションに +その結果として、 +.Dq ブート可能な +ディスクのパーティションに ファイルシステムを作成できない場合があります。 ブートストラップコードを書き込む時に、 .Nm はこのようなケースをチェックします。 FS_UNUSED タイプのパーティションに重なるように ブートストラップコードが書き込まれる場合には、 そのパーティションは FS_BOOT とマークされます。 .Xr newfs 8 ユーティリティは、 FS_BOOT パーティションにファイルシステムを作成することを禁止します。 また逆に、 パーティションのタイプが FS_UNUSED もしくは FS_BOOT では無い場合、 .Nm はそのパーティションに重なるようなブートストラップコードを書き込みません。 .Sh バグ ディスク名がフルパスで指定されない場合には、 -.if t デバイス名は ``c'' パーティションになります。 -.if n デバイス名は "c" パーティションになります。 +デバイス名は +.Dq c +パーティションになります。 .Pp i386 アーキテクチャでは、プライマリブートストラップセクタに、 組み込みの .Em fdisk テーブルを持ちます。 .Nm は、 ブートストラップのみをインストールする時 .Pq Fl B もしくはラベルを編集する時 .Pq Fl e にこれを壊さないように気を付けます。 しかし、 .Fl w や .Fl R を指定した時には、 無条件でプライマリブートストラッププログラムをディスクに書き込みますので、 .Em fdisk テーブルをブートストラッププログラム内のダミーに置き換えます。 これはディスク全体を専用に使う場合、 すなわち BSD ディスクラベルがディスクの絶対ブロック 0 から始まる場合 のみ関係あります。 .Pp .Nm は十分なエラーチェックは行いません。 パーティションが重なったり使われない領域が残ってしまっても 警告は出力されません。