OSDN Git Service

6a1813bf01bcdff83f0c68d2f72e1a04d2605b74
[linuxjm/jm.git] / manual / util-linux / release / man8 / fdisk.8
1 .\" Copyright 1992, 1993 Rickard E. Faith (faith@cs.unc.edu)
2 .\" Copyright 1998 Andries E. Brouwer (aeb@cwi.nl)
3 .\" May be distributed under the GNU General Public License
4 .\"
5 .\" Japanese Version Copyright (c) 1997-1998 NAKANO Takeo all rights reserved.
6 .\" Translated Thu Sep 11 1997 by NAKANO Takeo <nakano@apm.seikei.ac.jp>
7 .\" Updated & Modified Fri 3 Jul 1998 by NAKANO Takeo
8 .\" Updated & Modified Thu 7 Oct 1999 by NAKANO Takeo 
9 .\" Updated & Modified Sat 18 Mar 2000 by NAKANO Takeo 
10 .\" Updated & Modified Jun 14 May 2000 by NAKANO Takeo 
11 .\" Updated & Modified Tue May  4 23:47:43 JST 2004
12 .\"         by Yuichi SATO <ysato444@yahoo.co.jp>
13 .\"
14 .TH FDISK 8 "11 June 1998" "Linux 2.0" "Linux Programmer's Manual"
15 .SH 名前
16 fdisk \- Linux 用のパーティションテーブル操作ツール
17 .SH 書式
18 .BI "fdisk [\-u] [\-b " sectorsize ]
19 .BI "[\-C " cyls "] [\-H " heads "] [\-S " sects "] " device
20 .sp
21 .BI "fdisk \-l [\-u] [" "device ..." ]
22 .sp
23 .BI "fdisk \-s " "partition ..."
24 .sp
25 .BI "fdisk \-v
26 .SH 説明
27 ハードディスクは、一つ以上の論理的なディスクに分割することができる。
28 これは
29 .I
30 パーティション (partition)
31 と呼ばれる。この分割に関する情報は、ディスクのセクタ 0 に置かれる
32 .I
33 パーティションテーブル
34 に保存される。
35
36 BSD の世界では、それぞれ「ディスクスライス (disk slice)」、
37 「ディスクラベル (disklabel)」といった用語が用いられる。
38
39 Linux は少なくとも一つのパーティションを必要とする。
40 すなわちルートファイルシステムとするパーティションである。
41 また Linux ではスワップファルやスワップパーティションを
42 利用することができるが、後者の方が効率が良い。
43 したがって、通常は二つめのパーティションを
44 スワップ用に利用したくなる場合が多いだろう。
45 Intel 互換のハードウェアでは、システムをブートさせる BIOS はディスクの
46 先頭 1024 シリンダにしかアクセスできない場合が多い。
47 したがって大きなディスクを使っているユーザーは、
48 数メガバイト程度の第三のパーティションを追加することになる。
49 これは典型的には
50 .IR /boot
51 にマウントされ、カーネルイメージと、
52 ブートに必要ないくつかの外部ファイルを保存する。
53 このようにして、ブートに必要なファイルが BIOS によって
54 アクセス可能であることを保証するのである。
55 またセキュリティ、保守の都合、バックアップ、テストなど、
56 より多くのパーティションを使う理由は他にも存在する。
57
58 (最初の形式で起動された場合には)
59 .B fdisk
60 はメニュー駆動型のプログラムであり、
61 パーティションテーブルの作成と操作を行う。
62 DOS 形式のパーティションや、BSD, 
63 SUN 形式のディスクラベルを扱うこともできる。
64
65 .I device
66 に指定するのは通常以下のうちのどれかである。
67 .br
68 .nf
69 .RS
70 /dev/hda
71 /dev/hdb
72 /dev/sda
73 /dev/sdb
74 .RE
75 .fi
76 (/dev/hd[a\-h] は IDE ディスク、/dev/sd[a\-p] は SCSI ディスク、
77 /dev/ed[a\-d] は ESDI ディスク、/dev/xd[ab] は XT ディスクである)
78 デバイス名はディスク全体を参照する。
79
80 .I partition
81
82 .I device
83 名にパーティション番号を付加したものである。例えば
84 .B /dev/hda1
85 はシステムの第一 IDE ハードディスクの第一パーティションを指す。
86 IDE ディスクは 63 個までのパーティションを保持することができる。
87 SCSI ディスクは 15 までである。
88 .I /usr/src/linux/Documentation/devices.txt
89 も参考にすると良い。
90
91 BSD/SUN 形式のディスクラベルは 8 パーティションを扱うことができる。
92 そのうち 3 番目は「ディスク全体」を表すパーティションとなる。
93 先頭セクタを実際に利用するパーティション (スワップなど) を
94 シリンダ 0 から割り当ててはならない。ディスクラベルを破壊してしまう。
95
96 IRIX/SGI 形式のディスクラベルは、16 パーティションを記述できる。
97 そのうちの第 11 番目は `volume' 全体に対応するパーティションであり、
98 第 9 番目は `volume header' とラベル付けされる。
99 volume header はパーティションテーブルの領域もカバーする。
100 つまり volume header はブロック 0 から始まり、デフォルトでは
101 シリンダ 5 までの部分を占める。volume header の残りの部分は
102 ヘッダディレクトリエントリに用いられる。
103 volume header は他のパーティションと重なってはならない。
104 またパーティションテーブルが含まれているので、形式を変更したり、
105 ファイルシステムを作ったりもできない。
106 このラベル形式は、IRIX/SGI マシンで動作している Linux か、
107 IRIX/SGI ディスクを Linux で使う場合に限って用いること。
108
109 DOS 形式のパーティションテーブルは、パーティションの数に制限がない。
110 セクタ 0 には、4 つのパーティション
111 (「基本 (primary) パーティション」と呼ばれる) に関する情報が記述されている。
112 これら基本パーティションは、拡張 (extended) パーティションにすることもできる。
113 これは論理 (logical) パーティションの入れ物となる。
114 拡張パーティションにはディスクリプターが
115 セクタのリンクリストの形式で置かれ、
116 それぞれ対応する論理パーティションの情報を保持する。
117 四つの基本パーティションには (存在していなくても)
118 番号 1\-4 が割り当てられる。論理パーティションの番号は 5 から始まる。
119
120 DOS 形式のパーティションテーブルでは、それぞれのパーティションの
121 スタートオフセットとサイズは、二種類の方法で保存される。
122 一つはセクタの絶対数 (32 ビット) であり、
123 もう一つは「シリンダ数/ヘッド数/セクタ数 
124 (C/H/S)」の三つの組み合わせである (それぞれ 10, 8, 6 ビット)。
125 前者には問題は特になく、512 バイトのセクタで 2 TB を扱うことができる。
126 後者には二種類の問題がある。まず第一に、この C/H/S を与えるためには、
127 ヘッド数とトラックあたりのセクタ数を知っていなければならない。
128 第二に、これらの数値がわかったとしても、24 ビットでは足りないかもしれない。
129 DOS は C/H/S だけを用いる。Windows は両方を用いる。
130 Linux では C/H/S は使わない。
131
132 .B fdisk
133 は、
134 可能な場合にはディスクのジオメトリを自動的に取得する。
135 これはディスクの物理的なジオメトリであるとは限らない
136 (実際、最近のディスクでは、本当に物理的な \- 単純な
137 C/H/S 形式で記述できるような \- ジオメトリを持っていないものもある)。
138 しかしいずれにせよ、
139 MS-DOS はこのジオメトリをパーティションテーブルで利用する。
140
141 Linux しか置かないディスクなら、通常はデフォルトで問題なくすべてうまくいく。
142 しかし他の OS とディスクを共有しなければならない場合には、
143 まず他の OS 上で、その OS 付属の fdisk を先に実行し、
144 少なくとも一つのパーティションを作っておくと良い場合が多い。
145 Linux は、他の OS とうまく付き合うために、
146 ブート時にパーティションテーブルを参照し、
147 どんなジオメトリが要求されているのかを判断・決定しようとする
148 (要求されているジオメトリは、
149 物理的なものとは異なっているかもしれないから)。
150
151 パーティションテーブルが表示されるときには、パーティションテーブルの
152 エントリに対して整合性チェックが行われる。このチェックは、パーティション
153 の開始と終了に関する、物理的な情報と論理的なそれとが同一であるか、また
154 パーティションの開始/終了点がシリンダ境界にあるかを調べる (ただし後者
155 のチェックでは、最初のパーティションは例外である)。
156
157 MS-DOS のバージョンによっては、最初のパーティションの開始点をシリンダ
158 境界ではなく先頭シリンダの第 2 セクタにするものがある。
159 シリンダ 1 から始まるパーティションの開始点はシリンダ境界にならないが、
160 これは問題になることはあまりないだろう。
161 ただし OS/2 を同じマシンで使っていなければ、であるが。
162
163 パーティションテーブルが更新されると、終了する前に sync() と BLKRRPART
164 ioctl() (ディスクからパーティションテーブルを読み込みなおす) が
165 実行される。とても昔には、fdisk を利用した後にはリブートが
166 必須だったこともあった。
167 多分これは現在では直っていると思う \- むしろ、あまりに急いで
168 リブートすると、まだ書き込まれていないデータを失うかもしれない。
169 カーネルとディスクハードウェアの両方にバッファーデータが存在することに
170 注意すること。
171
172 .SH "DOS 6.x 向けの警告"
173
174 DOS 6.x の FORMAT コマンドはパーティションのデータエリアの
175 第一セクタからある種の情報を検索し、
176 これをパーティションテーブルにある情報より信頼できるものとして扱う。
177 DOS の FORMAT は、容量が変更されたときには最初の 512 バイト分の
178 データ領域が DOS 版 FDISK によってクリアされていることを仮定している。
179 DOS の FORMAT はこの拡張情報を /U フラグを指定した場合でも見ようとする
180 \- これは DOS FORMAT と DOS FDISK のバグであると我々は考える。
181
182 結局のところ、cfdisk や fdisk を用いて DOS パーティションの容量を
183 変更したときは、DOS FORMAT を使ってパーティションをフォーマットする前に
184 .B dd
185 を使って先頭の 512 バイトを 0 で埋めなければならない、というわけである。
186 例えば cfdisk を用いて /dev/hda1 の DOS パーティションの
187 テーブルエントリを作成した場合には、(fdisk または cfdisk を終了し、
188 Linux をリブートしてパーティションテーブルの情報を有効にしたあとで)
189 先頭の 512 バイトをゼロにするために
190 "dd if=/dev/zero of=/dev/hda1 bs=512 count=1"
191 などと実行する必要がある。
192
193 .B dd
194 コマンドを使う場合には\fB特に注意すること\fP。ちょっとしたタイプミスで、
195 ディスク上のすべてのデータがパーになる可能性もある。
196
197 できるだけ問題を起こしたくなければ、常に OS 固有のパーティション
198 テーブル用プログラムを用いることである。
199 例えば DOS パーティションは DOS FDISK プログラムで作り、
200 Linux のパーティションは Linux の fdisk または cfdisk で作るべきなのである。
201
202 .SH オプション
203 .TP
204 .BI "\-b " sectorsize
205 ディスクのセクタサイズを指定する。
206 指定できる値は 512, 1024, 2048 のいずれかである。
207 (最近のカーネルはセクタサイズをうまく扱える。
208 このオプションを用いるのは、カーネルが古い場合や、
209 カーネルの考えを上書きする場合だけにすること。)
210 .TP
211 .BI "\-C " cyls
212 ディスクのシリンダ数を指定する。
213 なぜこれを指定したいと思うのかは分からない。
214 .TP
215 .BI "\-H " heads
216 ディスクのヘッダ数を指定する
217 (もちろん物理的なヘッダ数ではなく、
218 パーティションテーブルに使われるヘッダ数である)。
219 適切な値は 255 または 16 である。
220 .TP
221 .BI "\-S " sects
222 ディスクの 1 トラック当りのセクタ数を指定する
223 (もちろん物理的なセクタ数ではなく、
224 パーティションテーブルに使われるセクタ数である)。
225 適切な値は 63 である。
226 .TP
227 .B \-l
228 指定したデバイスのパーティションテーブルをリストして終了する。
229 デバイスを何も指定しないと、
230 .I /proc/partitions
231 があれば、そこにあるデバイスを対象にする。
232 .TP
233 .B \-u
234 パーティションテーブルをリストするときに、サイズをシリンダ単位ではなく
235 セクタ単位で表示する。
236 .TP
237 .BI "\-s " partition
238 パーティションのサイズを (ブロック単位で) 標準出力に表示する。
239 .TP
240 .B \-v
241 .B fdisk
242 プログラムのバージョン番号を表示して終了する。
243 .SH バグ
244 この種の *fdisk プログラムには、同じ機能を持ったものが複数存在する。
245 それぞれ長所短所がある。
246 .BR cfdisk ,
247 .BR fdisk ,
248 .B sfdisk
249 の順に試してみると良いだろう。
250 (実際のところ、
251 .B cfdisk
252 は美しいプログラムであり、受付けるパーティションテーブルに
253 厳しい条件を課し、品質の高いパーティションテーブルを生成する。
254 可能な場合はこれを用いること。
255 .B fdisk
256 はバグっぽいプログラムで、やることもややあやふやである -
257 通常は真っ当な結果を出力するけれど。一つ利点があるとすると、
258 .B fdisk
259 は BSD のディスクラベルや、その他の非 DOS パーティションテーブルを
260 多少サポートしている点である。
261 .B sfdisk
262 はハッカー専用である。ユーザーインターフェースはひどいが、
263 fdisk よりも正しく、また fdisk, cfdisk のどちらよりもパワフルだ。
264 それに、インタラクティブでない使い方もできる)
265 .PP
266 最近は
267 .B parted
268 というツールもある。
269 cfdisk のインタフェースは優れているが、parted はより優れている。
270 parted はパーティションのサイズを変更するだけではなく、
271 パーティションにあるファイルシステムのサイズも変更する。
272 .PP
273 IRIX/SGI 形式のディスクラベルは、現時点ではカーネルでサポートされていない。
274 また IRIX/SGI ヘッダディレクトリはまだ完全にはサポートできていない。
275 .PP
276 「パーティションテーブルをファイルにダンプする」
277 オプションは存在しない。
278 .\" .SH AUTHORS
279 .\" A. V. Le Blanc (LeBlanc@mcc.ac.uk)
280 .\" Bernhard Fastenrath (fasten@informatik.uni-bonn.de)
281 .\" Jakub Jelinek (jj@sunsite.mff.cuni.cz)
282 .\" Andreas Neuper (ANeuper@GUUG.de)
283 .\" and many others.
284 .SH 関連項目
285 .BR cfdisk (8),
286 .BR mkfs (8),
287 .BR parted (8),
288 .BR sfdisk (8)