CFDISK(8) | Linux Programmer's Manual | CFDISK(8) |
cfdisk - Linux 用のパーティションテーブル操作ツール (curses 版)
cfdisk [ -agvz ] [ -c cylinders ] [ -h heads ] [ -s sectors-per-track ] [ -P opt ] [ device ]
cfdisk は、ハードディスクドライブのパーティション分割をする curses ベースのプログラムである。 device 引き数の典型的な値は、以下のものがある:
/dev/hda [default] /dev/hdb /dev/sda /dev/sdb /dev/sdc /dev/sdd
パーティションテーブルを書き込むために、 cfdisk はディスクの「ジオメトリ」と呼ばれるものを必要とする: ジオメトリとは、「ヘッド数」と「1 トラック当たりのセクタ数」である。 Linux はジオメトリを使わないので、 ディスクが他のオペレーティングシステムからアクセスされることがなければ、 cfdisk が選んだデフォルトを受け入れても安全である。 cfdisk が使うジオメトリは、次のようにして見付ける。 初めにパーティションテーブルを調べる。 これは、以前にジオメトリを変更したプログラムが どのようなジオメトリを使ったかを見るためである。 パーティションテーブルが空である・ゴミを含んでいる・ 整合性の取れたジオメトリを指していない、といった場合は、 カーネルから情報をもらう。 うまく動かない場合は、ヘッド数 255, トラック当たりのセクタ数 63 を仮定する。 ジオメトリは、コマンドラインまたは `g' コマンドを使って上書きできる。 大容量の最近のディスクを何も書かれていない状態から パーティション分割する場合、 通常はヘッド数 255, トラック当たりのセクタ数 63 を選ぶのが良い。 cfdisk はディスクサイズを知っているので、 シリンダ数を設定する必要はない。
次に cfdisk はディスクドライブからパーティションテーブルを読み込みこもうとする。 パーティションテーブルが検出できなかった場合は、 エラーを表示してプログラムが終了する。 これは間違ったジオメトリ情報によっても起こることなので、 コマンドライン上から上書きすることができる。 この問題を回避するもう 1 つの方法は、 -z オプションを使うことである。 このオプションにより、ディスクのパーティションテーブルは無視される。
メインの表示画面は 4 つのセクションから構成される: 上から順に、ヘッダ・パーティション・コマンド行・警告行がある。 ヘッダには、プログラム名・バージョン番号・ ディスクドライブ・ジオメトリが書かれている。 パーティションのセクションには、 現在のパーティションテーブルが常に表示される。 コマンド行は、コマンドとテキストが入力される場所である。 使用できるコマンドは、通常、大括弧の中に表示される。 警告行は、表示すべき重要な情報があるとき以外、通常は何も表示されない。 現在選択しているパーティションは反転してハイライト表示される (-a オプションが指定された場合は、矢印で示される)。 パーティション毎に適用される全てのコマンドは、 現在選択されているパーティションに適用される。
パーティションセクションにあるパーティションテーブルのフォーマットは、 左から右へ、名前・フラグ・パーティションタイプ・ファイルシステムタイプ・ (訳註: ラベル)・サイズのようになっている。 名前はパーティションのデバイス名である。 フラグは、ブート可能パーティションを表す ブート、 または「DOS や OS/2 と互換性がない (Not Compatible) 」 ことを表す NC である。 DOS, OS/2 では (もしかしたら他の OS でも)、 第 2 ヘッドを起こすために、 ディスクの第 1 パーティションと 全ての論理パーティションの第 1 セクタを必要とする。 これは第 1 ヘッドの第 1 トラックにある 第 2 セクタから最終セクタまでを無駄にしている (第 1 セクタはパーティションテーブル自身に使用される)。 cfdisk は、この「失われた」セクタを最大化 (maximize) コマンド (m) で回復させることができる。 注意: fdisk(8) と幾つかの初期バージョンの DOS は、 セクタ数を最大化した状態で全パーティションを作成する。 より詳細な情報は、後述の最大化コマンドを参照すること。 パーティションタイプは、 基本 (Primary) または 論理 (Logical) のどちらかである。 ドライブ内の割り当てられていない領域では、 そのパーティションタイプは、 基本/論理 、 または (その領域を使用していないのであれば) 空白にしておくことができる。 もし既知のファイルシステムである場合は、 ファイルシステムタイプのセクションに パーティションで使われているファイルシステム名が表示される。 不明の場合は、 不明 という文字列とファイルシステムタイプを示す 16 進数の値が表示される。 (全ての基本パーティションが使われているために) ディスクドライブのセクタが使用できない、という特殊なケースがある。 この様なケースを検知した場合、 ファイルシステムタイプは 使用不可 と表示される。 サイズフィールドには、パーティションのサイズが (デフォルトでは) MB 単位で表示される。 サイズをセクタ数やシリンダ数で表示することもできる (以下の単位変更コマンドを参照すること)。 アスタリスク (*) がサイズの後に表示されている場合、 パーティションがシリンダの境界線上に並んでいないことを示す。
DOS 6.x の FORMAT コマンドはパーティションのデータエリアの 第一セクタからある種の情報を検索し、 これをパーティションテーブルにある情報より信頼できるものとして扱う。 DOS の FORMAT は、容量が変更されたときには 最初の 512 バイト分のデータ領域が DOS 版 FDISK によってクリアされていることを仮定している。 DOS の FORMAT はこの拡張情報を /U フラグを指定した場合でも見ようとする - これは DOS FORMAT と DOS FDISK のバグであると我々は考える。
結局のところ、 cfdisk や fdisk を用いて DOS パーティションの容量を変更したときは、 DOS FORMAT を使ってパーティションをフォーマットする前に dd を使って先頭の 512 バイトを 0 で埋めなければならない、というわけである。 例えば cfdisk を用いて /dev/hda1 の DOS パーティションの テーブルエントリを作成した場合には、(fdisk または cfdisk を終了し、 Linux をリブートしてパーティションテーブルの情報を有効にしたあとで) 先頭の 512 バイトをゼロにするために "dd if=/dev/zero of=/dev/hda1 bs=512 count=1" などと実行する必要がある。 注意点:
dd コマンドを使う場合には特に注意すること。 ちょっとしたタイプミスで、 ディスク上のすべてのデータがパーになる可能性もある。
できるだけ問題を起こしたくなければ、 常に OS 固有のパーティションテーブル用プログラムを用いることである。 例えば DOS パーティションは DOS FDISK プログラムで作り、 Linux のパーティションは Linux の fdisk または cfdisk で作るべきなのである。
cfdisk コマンドは、キーを押すことで入力できる (コマンドの後に Enter を押す必要はない)。 使用可能なコマンドは、以下の通りである:
セクタ順フォーマットのパーティションテーブル は、セクタ番号で並べたパーティションテーブルを表示する。 フィールドは、左から右に、 パーティション番号・パーティションタイプ・最初のセクタ・最後のセクタ・ パーティションの最初のセクタからデータの始まりまでのオフセット・ パーティションの長さ・ ファイルシステムタイプ (括弧内にその 16 進数の値が表示される)・ フラグ (括弧内にその 16 進数の値が表示される) がある。 基本パーティションと論理パーティションに加え、 空き領域と使用不可領域が表示される。 拡張パーティションは、最初の論理パーティションの前に表示される。
パーティションがシリンダの境界で始まるか終るかしていない場合、 またはパーティションの長さがシリンダサイズで表示できない場合、 並んでいないセクタ番号/カウントの後にアスタリスク (*) が表示される。 通常、これは、 パーティションをシリンダ境界に並べて作成されない OS か、 異なるディスクジオメトリ情報を使う OS によって パーティションが作成されたことを示す。 他の OS のディスクジオメトリが分かる場合には、 ジオメトリ変更コマンド (g) を使ってジオメトリ情報を入力することができる。
ディスクの最初のパーティションと全ての論理パーティションでは、 パーティションの先頭からのオフセットが トラック当たりのセクタ数に一致しない場合 (つまり、データが最初のヘッドから始まっていない場合)、 番号記号 (#) がオフセットの後に表示される。 残りのパーティションでは、 オフセットが 0 でない場合、番号記号がオフセットの後に表示される。 これは、メイン画面のパーティションセクションにおける NC フラグに対応する。
生データフォーマットのパーティションテーブル では、パーティションの番号順にパーティションテーブルが表示される。 この場合、全ての使用不可領域と空き領域は無視される。 フィールドは、左から右へ、パーティション番号・(16 進数の) フラグ・ 最初のヘッド・セクタとシリンダ・(16 進数の) ファイルシステム ID・ 最後のヘッド・セクタとシリンダ・パーティションの最初のセクタと パーティション内のセクタ数となっている。 このテーブルの情報は、直接 生データフォーマット に変換される。
パーティションテーブルのエントリは、 最初と最後のシリンダを表すのに 10 ビットしか使用できない。 よって、最初 (最後) のセクタの絶対的なセクタ番号が シリンダ数で 1023 を超える場合、 最初 (最後) のヘッド・セクタ・シリンダの最大値が表示される。 これは OS/2 で使われている方法で、 このフォーマットで書かれていない場合でも、 OS/2 の fdisk によるパーティションテーブルの再書き込みに 関連する問題を修正する。 Linux と OS/2 は絶対的なセクタカウントを使うので、 最初と最後のヘッド・セクタ・シリンダの値は使われない。
0: エラーなし; 1: 起動エラー; 2: I/O エラー; 3: ジオメトリが取得できない; 4: ディスクのパーティションテーブルが不正である
現在のバージョンでは、複数のディスクをサポートしていない。
Kevin E. Martin (martin@cs.unc.edu)
この man ページの翻訳にあたり、 <http://www.debian.or.jp/Documents/manuals_not_sgml/cfdisk.ja.txt> を参考にさせていただいた。
3 June 1995 | The BOGUS Linux Release |