crunchgen.1 revision 1.11.2.6

file.1		revision 1.16.2.3
disklabel.8	revision 1.15.2.7
This commit is contained in:
Kazuo Horikawa 2000-12-29 16:30:33 +00:00
parent 876a3d03f0
commit 8c7044be98
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=8584
3 changed files with 491 additions and 249 deletions

View file

@ -22,7 +22,7 @@
.\" 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 %
@ -32,13 +32,15 @@
.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) は、
たくさんの別々のプログラムをひとつにまとめて
@ -123,13 +125,13 @@
出力する C のファイル名を
.Ar c-file-name
とします。デフォルトの名前は
.Dq <conf-name>.c
.Pa <conf-name>.c
です。
.It Fl e Ar exec-file-name
クランチバイナリの実行形式ファイルの名前を
.Ar exec-file-name
とします。デフォルトの名前は
.Dq <conf-name>
.Pa <conf-name>
です。
.It Fl f
キャッシュを消去し、キャッシュされていたパラメータを強制的に再計算します。
@ -152,12 +154,22 @@ make
の名前を
.Ar makefile-name
とします。デフォルトの名前は
.Dq <conf-name>.mk
.Pa <conf-name>.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
@ -185,7 +197,7 @@ make
これらのディレクトリは
.Bx
.Dq <source-dir>/<progname>/
.Dq Pa <source-dir>/<progname>/
方式を用いて検索されます。
.Ic srcdirs
行は複数あってもよく、ディレクトリは記述された順に検索されます。
@ -242,13 +254,21 @@ make
プログラム
.Ar progname
.Dq obj
ディレクトリを指定します。
通常はディレクトリ
.Ic srcdir
内の
.Pa obj
という名前のディレクトリを探し、もし見つからなければ、ディレクトリ
ディレクトリを指定します。
通常、
.Pa obj
ディレクトリは、
ソースディレクトリ名の前に次のいずれかのコンポーネントを付けたものとして
計算され、コンポーネントには次の順番で優先度があります:
コマンドラインにおける
.Fl p
の引数、環境変数
.Ev MAKEOBJDIRPREFIX
の値、または
.Pa /usr/obj
です。
もしディレクトリが見つからなければ、ディレクトリ
.Ic srcdir
自身が
.Ic objdir
@ -363,7 +383,9 @@ libs -lutil -lcrypt
.Pp
このコンフィギュレーションファイルでは、
いくつかの基本的なシステムユーティリティと
自家製のインストールプログラム ``myinstall'' から成る
自家製のインストールプログラム
.Dq Pq myinstall
から成る
小さなクランチバイナリを記述しています。
ソースディレクトリは全く指定されていませんが、
オブジェクトファイルは
@ -371,7 +393,7 @@ libs -lutil -lcrypt
行で直接指定されています。
.Pp
さらに、
.Dq anotherprog
.Dq Pa anotherprog
構築時には、引数
.Pp
.Dl -DNO_FOO WITHOUT_BAR=YES
@ -379,7 +401,7 @@ libs -lutil -lcrypt
がすべてのビルドターゲットに対して追加されます。
.Pp
クランチバイナリ
.Dq kcopy
.Dq Pa kcopy
は以下のようにして作成できます:
.Pp
.Bd -literal -offset indent
@ -391,7 +413,7 @@ $ #
.Ed
.Pp
ここまでくれば、バイナリ
.Dq kcopy
.Dq Pa kcopy
をインストールフロッピにコピーし、
各コンポーネントプログラムの名前でハードリンクを設けることができます。
.Sh 関連項目

View file

@ -1,20 +1,20 @@
.\" %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
は、引数で指定されたファイルの種類を判定するプログラムです。判定の
ために、ファイルシステムテスト、マジックナンバテスト、言語テストの
@ -24,9 +24,7 @@
.Pp
ファイルの種類として表示されるのは、
.Em text
(
.Tn ASCII
キャラクタだけのファイルで、
(印字可能文字と少数の制御文字だけのファイルで、
.Tn ASCII
端末に表示した場合、
問題が起こらないもの)、
@ -36,7 +34,9 @@
カーネル等に理解可能な形にコンパイルされたプログラムを
含むファイル)、その他のものを意味する
.Em data
(data は、通常 `バイナリ' か表示不能なもの) のうちの 1 つです。
(data は、通常
.Sq バイナリ
か表示不能なもの) のうちの 1 つです。
例外は、内部フォーマットがよく知られた、
バイナリデータを含むファイル (コアファイルや tar アーカイブ) です。
ファイル
@ -44,11 +44,23 @@
やプログラムそのものを変更するときは、
.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
@ -58,7 +70,7 @@ Berkeley
使っているシステムに合った既知のファイルの種類
(システムに実装されたソケット、シンボリックリンク、
名前付きパイプ (FIFO)) は、システムヘッダファイル
.Pa sys/stat.h
.Aq Pa sys/stat.h
で定義されていれば表示されます。
.Pp
マジックナンバテストは、ファイルが固定フォーマットのデータであるか
@ -71,51 +83,83 @@ Berkeley
.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
マジックファイルを解析した形式を、調査できるように表示します。
通常、
@ -129,7 +173,66 @@ compress
.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
@ -139,17 +242,17 @@ compress
身の種類を判定します。
.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 関連項目
@ -168,24 +271,25 @@ FILE(CMD)
このバージョンは全ての空白を区切り文字として扱うため
パターン内の空白はエスケープしなければならないということです。
たとえば、
.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 由来の
@ -194,8 +298,9 @@ System V ͳ
このバージョンは SUN のものとは、細かい点でしか異なりません。
このバージョンには `&' 演算子の拡張が含まれています。
使い方は、次のようなものです。
.br
.Bd -literal -compact
>16 long&0x7fffffff >0 not stripped
.Ed
.Sh マジックディレクトリ
マジックファイルのエントリは様々なソース (主に USENET)
から集められたり、様々な作者から提供されました。
@ -215,6 +320,32 @@ System V ͳ
(たとえば、
.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
@ -228,95 +359,48 @@ 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' に拡張するため変更しました。
は、1989 年に、
.Sq \&&
演算子を寄贈しました。
.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
.An Guy Harris Aq guy@netapp.com
は、1993 年から現在に至り、多くの変更を行っています。
.Pp
.An Ian Darwin
.An Christos Zoulas Aq christos@deshaw.com
を含む
多くの作者による 1990-1992 年の変更。
基本開発と 1990 年から現在に至るメンテナンスを、
.An Christos Zoulas Aq christos@astron.com
が行っています。
.Pp
2000 年に
.An Chris Lowth Aq chris@lowth.com
が修正を行い、
.Fl i
オプションが mime タイプ文字列を出力し、
別のマジックファイルと内部ロジックを使用するようになりました。
.Pp
2000 年 7 月に
.An Eric Fischer Aq enf@pobox.com
が修正を行い、
文字コードを識別し、非 ASCII ファイルの原語を識別しようとするようになりました。
.Pp
.Pa Magdir
ディレクトリ (
.Pa /usr/share/misc/magic
ファイルのソース) に対する寄贈者は、ここに含めるには長過ぎます。
ご了承ください。
.Sh 法律上の注意
Copyright (c) Ian F. Darwin, Toronto, Canada,
1986, 1987, 1988, 1989, 1990, 1991, 1992, 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.
.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.
.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:
.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.
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
@ -328,8 +412,10 @@ from his public-domain
.Nm tar
program, and are not covered by the above restrictions.
.Sh バグ
マジックディレクトリから
マジックファイルを自動的に作成するよりよい方法があるはずです。
.Pa Pagicdir
から
.Pa Magic
ファイルを自動的に作成するよりよい方法があるはずです。
それは何なのでしょうか。より起動を速くするため
マジックファイルをバイナリにコンパイルするとよいでしょう。
(たとえば
@ -343,20 +429,21 @@ System V
.Nm
には、正確さよりも 速度を重視したアルゴリズムが
いくつかあるので
.Tn ASCII
text
ファイルの内容については
間違うことがあります。
.Pp
.Tn ASCII
ファイルのサポート ( 元々はプログラミング言語のため ) は
text
ファイルのサポート (元々はプログラミング言語のため) は
単純で、不十分であり、更新には再コンパイルが必要です。
.Pp
複数の行に渡るものをサポートするため
``else'' 項があるべきです。
.Dq else
項があるべきです。
.Pp
マジックファイルと キーワードの正規表現を
サポートするべきです。
.Tn ASCII TAB
ASCII TAB
をフィールドの識別子にすることは醜く、
ファイルの編集を難しくしていますが、残されています。
.Pp
@ -365,14 +452,16 @@ System V
コマンドと man page マクロの区別です。
正規表現のサポートで、このことは簡単になるでしょう。
.Pp
\s-2FORTRAN\s0 に対してプログラムが働きません。
FORTRAN に対してプログラムが働きません。
行の先頭にインデントされているキーワードを見ることにより
\s-2FORTRAN\s0 だと判別すべきです。
FORTRAN だと判別すべきです。
正規表現のサポートによりこれは簡単になるでしょう。
.Pp
.Em ascmagic
に入っている
キーワードのリストは、おそらくマジックファイルに
キーワードのリストは、おそらく
.Pa Magic
ファイルに
入れるべきものです。
これはオフセットの値として `*' のようなキーワードを
使うことで可能でしょう。
@ -385,9 +474,15 @@ System V
マジックファイル上の位置ではなく、
ファイルオフセット順にすることはできないだろうか。
.Pp
プログラムは、推定が「どれぐらいよい」のかを知る方法を
提供すべきです。ファイルの最初の 5 文字が ``From ''
であるときに推測をしても、``Newsgroups:'' や "Return-Path:"
プログラムは、推定が
.Dq どれぐらいよい
のかを知る方法を
提供すべきです。ファイルの最初の 5 文字が
.Dq From\ \&
であるときに推測をしても、
.Dq Newsgroups:
.Dq Return-Path:
といった文字による推測ほどよくはないので、推測結果を
捨てることになります。しかし、もしそういった文字が
現れなければ最初の推定を使わなければなりません。
@ -395,11 +490,12 @@ System V
このプログラムは、いくつかの商用の
.Nm
コマンドより遅いです。
複数の文字コードのサポートにより、より遅くなっています。
.Pp
このマニュアルページ、特にこの節が長過ぎます。
.Sh 入手性
オリジナル作者の最新のバージョンを anonymous FTP で、
.Em ftp.deshaw.com
.Pa ftp.deshaw.com
.Pa /pub/file/file-X.YY.tar.gz
から手に入れることができます。

View file

@ -33,7 +33,7 @@
.\" 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 %
.\"
@ -44,51 +44,44 @@
.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
@ -96,9 +89,7 @@
.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
はディスクドライブやディスクパックにラベルを書き込んだり、
@ -122,7 +113,7 @@
.Nm
による操作のほとんどは
メモリ内にあるラベルのコピーに対してアクセスします。
(ディスク上に存在する)ラベルにアクセスするためには
(ディスク上に存在する) ラベルにアクセスするためには
.Fl r
オプションを使用します。
このオプションにより、
@ -137,23 +128,30 @@
.Ss ディスクデバイス名
.Pp
全ての
.Nm disklabel
の書式で、ディスクのデバイス名が必要です。
ディスクのデバイス名は必ずローデバイスで
.if t 「全体」を表すパーティション (すなわち ``c'')
.if n 「全体」を表すパーティション (すなわち "c")
でなければなりません。
.if t 「全体」を表すパーティション (すなわち ``c'')
.if n 「全体」を表すパーティション (すなわち "c")
とは、例えば
.Pa /dev/da0c
です。
.Nm
の書式で、ディスクのデバイス名が必要です。
ディスクのデバイス名は、
ディスクまたはスライスを示すローデバイス名でなければなりません。
例えば
.Pa da0
といった省略形を内部で
.Pa /dev/da0c
に変換するため、省略形も使用できます。
は DOS パーティションに無関係でディスク全体を表し、
.Pa da0s1
はスライスを表します。
デバイスによっては、特に
.Ar ccd
では、
.Dq ディスク全体を示す
(または
.Dq c )
パーティションを必要とします。
例えば
.Pa ccd0c
です。
デバイス指定時には、
.Pa /dev/
のパスプレフィックスを付ける必要はありません。
.Nm
は自動的にこれを前に付けます。
.Ss ディスクラベルの読み込み
.Pp
ラベルをディスクドライブに保存したり確認するためには
@ -161,7 +159,7 @@
.Nm
を使用します。
.Pp
.Nm disklabel
.Nm
.Op Fl r
.Ar disk
.Pp
@ -182,17 +180,25 @@
.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)
に書かれているドライブタイプが必要です。
@ -233,12 +239,34 @@ disktab
ディスクに対するラベルの書き込みは唯一サポートされた操作であり、
.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
@ -264,7 +292,7 @@ disktab
ファイルからディスクラベルを復元するには、
以下の書式を使います。
.Pp
.Nm disklabel
.Nm
.Fl R
.Op Fl r
.Ar disk Ar protofile
@ -285,21 +313,21 @@ disktab
後述のブートオプションを参照してください。
.Ss ディスクラベル領域への書き込みの有効化および無効化
.Pp
デフォルトでは
デフォルトでは
ディスクの先頭領域にあるディスクラベル領域への書き込みは不可能です。
ディスクドライバはいかなる操作も無視します。
もし(例えばラベルを消去するなど)
もし (例えばラベルを消去するなど)
この領域への書き込みを行う必要があるならば、
以下の書式を使います。
.Pp
.Nm disklabel
.Nm
.Op Fl W
.Ar disk
.Pp
ラベルの書き込みを可能にした後に不可能にするには
以下のコマンドを使います。
.Pp
.Nm disklabel
.Nm
.Op Fl N
.Ar disk
.Ss ブートストラップのインストール
@ -308,7 +336,7 @@ disktab
の最後の 3 つの書式は、ブートストラップコードを
インストールするために使われます:
.Pp
.Nm disklabel
.Nm
.Fl B
.Oo
.Fl b Ar boot1
@ -320,7 +348,7 @@ disktab
この書式ではブートストラップのみインストールします。
ディスクラベルは変更しません。
.Pp
.Nm disklabel
.Nm
.Fl w
.Fl B
.Oo
@ -330,12 +358,17 @@ disktab
.Ar disk Ar disktype
.Oo Ar packid Oc
.Pp
.if t この書式は前述の ``ラベルの書き込み'' コマンドと一致します。
.if n この書式は前述の "ラベルの書き込み" コマンドと一致します
この書式は前述の
.Dq ラベルの書き込み
コマンドと一致します。
新しいボリュームラベルを書き込むとともに
ブートストラップのインストールもおこないます。
ベースディスクに対して本コマンドを実行すると、
.Dq 危険な方法で専用化された
ラベルを作成します。
本コマンドは、通常、ベースディスクではなくスライスに対して実行します。
.Pp
.Nm disklabel
.Nm
.Fl R
.Fl B
.Oo
@ -345,8 +378,9 @@ disktab
.Ar disk Ar protofile
.Oo Ar disktype Oc
.Pp
.if t この書式は前述の ``ラベルの復元'' コマンドと一致します.
.if n この書式は前述の "ラベルの復元" コマンドと一致します.
この書式は前述の
.Dq ラベルの復元
コマンドと一致します.
ボリュームラベルを復元するとともに
ブートストラップのインストールもおこないます。
.Pp
@ -382,8 +416,9 @@ disktab
このディスクに対する
.Xr disktab 5
エントリの
.if t ``b0'' および ``b1''
.if n "b0" および "b1"
.Dq b0
および
.Dq b1
パラメータより得られます。
.It
そうでない場合、デフォルトのブートイメージ名は
@ -394,6 +429,62 @@ disktab
になります (詳細はアーキテクチャによって異なり、
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
@ -403,7 +494,7 @@ Alpha
.Nm
ディスクラベルを確認、編集、または復元する際に
アスキー形式のラベルを使用します。
ASCII 形式のラベルを使用します。
フォーマットは以下のとおりです。
.Bd -literal -offset 4n
# /dev/da1c:
@ -452,7 +543,9 @@ flags
が指定可能です。
.Ar removable
はリムーバブルメディアドライブに対して設定されますが、
現在の FreeBSD のドライバはこのフラグを
現在の
.Fx
のドライバはこのフラグを
評価しません。
.Ar ecc
はサポートされていません。
@ -504,22 +597,31 @@ 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
@ -528,39 +630,43 @@ da0
.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
、およびもし必要ならば
@ -568,17 +674,34 @@ da0
です。
ディスク上のラベルおよびカーネル内コピーは影響を受けません。
.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 ,
@ -593,23 +716,23 @@ da0
ラベルを作成するものがあります。
そのため、
オープンされているディスクのラベルは
.if t ``a''
.if n "a"
.Dq a
パーティションに書く必要があります。
このような理由で、
次の 2 ステップにより、
所望のラベルを作成する必要がある場合があります。
第 1 ステップは少なくとももう 1 つのパーティションを作成することであり、
第 2 ステップは
.if t ``a''
.if n "a"
.Dq a
パーティションを小さくしながら
新たなパーティションのラベルを設定することです。
.Pp
ファイルシステムによっては、
用意された領域にブートストラップコードが収まり切らないような
マシンがあるかも知れません
その結果として、``ブート可能な'' ディスクのパーティションに
その結果として、
.Dq ブート可能な
ディスクのパーティションに
ファイルシステムを作成できない場合があります。
ブートストラップコードを書き込む時に、
.Nm
@ -626,8 +749,9 @@ FS_BOOT
はそのパーティションに重なるようなブートストラップコードを書き込みません。
.Sh バグ
ディスク名がフルパスで指定されない場合には、
.if t デバイス名は ``c'' パーティションになります。
.if n デバイス名は "c" パーティションになります。
デバイス名は
.Dq c
パーティションになります。
.Pp
i386 アーキテクチャでは、プライマリブートストラップセクタに、
組み込みの