「Fdisk」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) |
Kusanaginoturugi (トーク | 投稿記録) (→バックアップとリストア: 削除) |
||
56行目: | 56行目: | ||
# sfdisk /dev/sda < sda.dump |
# sfdisk /dev/sda < sda.dump |
||
− | |||
− | == バックアップとリストア == |
||
− | |||
− | ハードディスクを変更する前に、ドライブのパーティションテーブルとパーティションスキームをバックアップすると良いでしょう。また、バックアップを使うことで同じパーティションレイアウトを複数のドライブにコピーすることもできます。[[Master Boot Record#バックアップとリストア]]も参照。 |
||
− | |||
− | === dd を使う === |
||
− | |||
− | MBR はディスクの頭512バイトに保存されています。MBR は3つの構成部位から成ります: |
||
− | |||
− | # 最初の446バイトにはブートローダーが含まれます。 |
||
− | # 次の64バイトにはパーティションテーブルが含まれます (16バイトごとに4エントリ、1つのエントリに1つのプライマリパーティション)。 |
||
− | # 最後の2バイトには識別子が含まれます。 |
||
− | |||
− | MBR を {{ic|mbr.img}} ファイルに保存するには: |
||
− | # dd if=/dev/sd''X'' of=''/path/to/mbr_file.img'' bs=512 count=1 |
||
− | |||
− | リストアするには (注意: 以下の操作で既存のパーティションテーブルが破壊されディスク上の全てのデータにアクセスできなくなる可能性があります): |
||
− | # dd if=/path/to/mbr_file.img of=/dev/sdX |
||
− | |||
− | ブートローダーだけをリストアして、プライマリパーティションテーブルのエントリはそのままにしたい場合、MBR の最初の446バイトだけをリストアしてください: |
||
− | # dd if=''/path/to/mbr_file.img'' of=/dev/sd''X'' bs=446 count=1 |
||
− | |||
− | パーティションテーブルだけをリストアするには、次のコマンドを使用します: |
||
− | # dd if=''/path/to/mbr_file.img'' of=/dev/sd''X'' bs=1 skip=446 count=64 |
||
− | |||
− | 完全な dd ディスクイメージから MBR を取得することもできます: |
||
− | # dd if=''/path/to/disk.img'' of=''/path/to/mbr_file.img'' bs=512 count=1 |
||
− | |||
− | === sfdisk を使う === |
||
− | |||
− | GPT と MBR のどちらでも ''sfdisk'' の {{ic|--dump}} オプションを使ってデバイスのパーティションレイアウトをファイルに保存できます。{{ic|/dev/sda}} デバイスを保存するには以下のコマンドを実行: |
||
− | |||
− | # sfdisk -d /dev/sda > sda.dump |
||
− | |||
− | 1GB の ext4 パーティションが存在する場合、ファイルは以下のようになります: |
||
− | |||
− | {{hc|sda.dump|<nowiki> |
||
− | label: gpt |
||
− | label-id: AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE |
||
− | device: /dev/sda |
||
− | unit: sectors |
||
− | first-lba: 34 |
||
− | last-lba: 1048576 |
||
− | |||
− | /dev/sda1 : start=2048, size=1048576, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=BBF1CD36-9262-463E-A4FB-81E32C12BDE7 |
||
− | </nowiki>}} |
||
− | |||
− | レイアウトをリストアするには次を実行: |
||
− | |||
− | # sfdisk /dev/sda < sda.dump |
||
− | |||
− | === sgdisk を使う === |
||
− | |||
− | ''sgdisk'' を使うことで保護 MBR、メイン GPT ヘッダ、バックアップ GPT ヘッダ、そしてパーティションテーブルのコピーからなるバイナリバックアップを作成できます: |
||
− | |||
− | # sgdisk -b=sgdisk-sda.bak |
||
− | |||
− | 次を実行することでバックアップをリストアできます: |
||
− | |||
− | # sgdisk -l=sgdisk-sda.bak |
||
− | |||
− | 現在のデバイス (例: {{ic|/dev/sda}}) のパーティションレイアウトを別のドライブ (例: {{ic|/dev/sdc}}) に複製したい場合、次を実行: |
||
− | |||
− | # sgdisk -R=/dev/sdc /dev/sda |
||
− | |||
− | 両方のドライブが同じコンピュータに接続されている場合、GUID をランダム化する必要があります: |
||
− | |||
− | # sgdisk -G /dev/sdc |
||
== パーティションテーブルとパーティションの作成 == |
== パーティションテーブルとパーティションの作成 == |
2021年6月8日 (火) 12:58時点における版
util-linux fdisk はダイアログで操作するコマンドラインユーティリティで、ハードディスク上のパーティションテーブルやパーティションを作成・編集することができます。ハードディスクはパーティションに分割され、その分割情報はパーティションテーブルに記述されます。Arch Linux をインストールするにはパーティションが必要です。
この記事では fdisk とその派生である sfdisk と cfdisk ユーティリティだけでなく、類似の機能を持った gdisk, sgdisk, cgdisk ユーティリティについても解説します。
目次
インストール
fdisk と派生ユーティリティを使用するには、util-linux パッケージが必要です (base グループに含まれています)。gdisk と派生ユーティリティを使用したい場合、gptfdisk パッケージをインストールしてください。
パーティションの確認
デバイス上のパーティションテーブルとパーティションを確認するには、以下を実行します (デバイスの名前 /dev/sda
は適当に置き換えてください):
# fdisk -l /dev/sda
あるいは gdisk の場合:
# gdisk -l /dev/sda
パーティションテーブルのバックアップとリストア
ハードディスクに変更を加える前に、ドライブのパーティションテーブルとパーティションスキームをバックアップしておくと良いでしょう。また、バックアップを利用して、同じパーティションレイアウトを多数のドライブにコピーすることもできます。
GPT と MBR のどちらでも sfdisk の -d
/--dump
オプションを使ってデバイスのパーティションレイアウトをファイルに保存できます。/dev/sda
デバイスを保存するには以下のコマンドを実行:
# sfdisk -d /dev/sda > sda.dump
1GB の ext4 パーティションが存在する場合、ファイルは以下のようになります:
sda.dump
label: gpt label-id: AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE device: /dev/sda unit: sectors first-lba: 34 last-lba: 1048576 /dev/sda1 : start=2048, size=1048576, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=BBF1CD36-9262-463E-A4FB-81E32C12BDE7
レイアウトをリストアするには次を実行:
# sfdisk /dev/sda < sda.dump
パーティションテーブルとパーティションの作成
パーティショニングするときはまずパーティションテーブルを作成します。その後、望ましいパーティション形態にあわせてパーティションを作成します。MBR と GPT のどちらを使用するかについてはパーティションテーブルを見てください。
最初に、パーティションテーブルとレイアウトをバックアップすることを推奨します。
以下のセクションでは gdisk と fdisk を使用してパーティションテーブルとパーティションを作成する方法を説明しています。違いについては必要なときに記載しています。
パーティションの操作の開始
fdisk または gdisk を起動して、新しいテーブルの作成に進んで下さい。
fdisk
MBR を使う場合、パーティションテーブルを編集するためのユーティリティは fdisk と呼ばれています。最近のバージョンの fdisk はデフォルトの表示単位にシリンダーを使用する古いシステムのサポートや、MS-DOS との互換性をデフォルトで廃止しています。最新の fdisk は自動的に全てのパーティションを2048セクタ (1024 KiB) にアライメントをするため、SSD メーカーによって使用されている EBS サイズ全てで問題なく整列されます。つまりデフォルト設定で正しいアライメントが行われます。
昔の fdisk は、デフォルトの表示単位にシリンダーを使っていて、SSD のアライメントと干渉する MS-DOS との互換性も残っていました。そのため、2008-2009年あたりのインターネットのガイドを調べたら、大げさに書かれているのが見て取れると思います。最新の fdisk では、物事はもっとシンプルになり、そのことはこの記事にも反映されています。
root でドライブを指定して fdisk を起動してください。/dev/sda
の例:
# fdisk /dev/sda
fdisk ダイアログが開いてコマンドを入力することができます。
gdisk
GPT を使う場合、パーティションテーブルを編集するためのユーティリティは gdisk です。curses ベースの cgdisk を使うこともできますが、操作は以下と異なります。cgdisk の使用方法は cgdisk(8) を参照してください。
gdisk は殆ど全ての SSD と互換性のある 2048 セクター (または 1024KiB) ブロックサイズベースの自動パーティションアライメントができます。GNU parted も GPT をサポートしていますが、パーティションのアライニングについてはあまりユーザーフレンドリーとは言えません。
gdisk を使うときは、変更・編集したいデバイスの名前を指定してプログラムを起動します。/dev/sda
の例:
# gdisk /dev/sda
新しいテーブルの作成
新しい MBR パーティションテーブルを作成して既存のパーティションデータを全て消去するには、プロンプトに o
と入力します。既存のテーブルを使用する場合は次に進んで下さい。
パーティションの作成
n
コマンドで新しいパーティションを作成します。パーティションタイプ (fdisk のみ)、パーティションの番号、開始セクタ、終末セクタを入力します。
fdisk の場合、パーティションタイプを指定するとき、p
でプライマリパーティションを作成し e
で拡張パーティションを作成します。プライマリパーティションは4つまでしか作成できません。
開始・終末セクタはセクタ番号、あるいはキビバイト (K
), メビバイト (M
), ギビバイト (G
), テビバイト (T
), ペビバイト (P
) で絶対的に指定することができます。例えば、40M
でディスクの最初から 40MiB の位置が指定できます。また、数字に +
や -
記号を付けることで開始位置・終了位置を相対的に指定することができます。例えば +2G
ならデフォルトの開始セクタから 2GiB の位置が、-200M
なら最後のセクタから 200MiB の位置が指定されます。何も入力しないで Enter
キーを押すと、開始セクタの一番広いブロックから終末セクタと同じブロックの終末までが指定されます。
パーティションのタイプ id を選択します。大抵の場合はデフォルトの Linux filesystem
で問題ありません。l
(fdisk) や L
(gdisk) を押すことでコードの一覧を表示できます。
上記の手順を繰り返して全てのパーティションを作成してください。
ディスクに変更を書き込む
ディスクにテーブルを書き込んで終了するには w
コマンドを使います。
Moving partitions
In order to move a partition, you need to have free space available where the partition will be moved. If necessary, you can make room by shrinking your partitions and the filesystems on them. See Parted#Shrinking partitions. To relocate a partition:
# echo '+sectors,' | sfdisk --move-data device -N number
Where sectors
is the number of sectors to move the partition (the +
indicates moving it forward), device
is the device that holds the partition, and number
is the partition number. Note that if you add a new partition in the middle or at the beginning of your disk, you will likely want to renumber the partitions. See #Sort partitions or the "extra functionality" mode of fdisk.
ヒントとテクニック
MBR と GPT の変換
MBR パーティションテーブルを GPT に変換するには、sgdisk ツールを使います:
# sgdisk -g /dev/sda
GPT を MBR に変換するときは m
オプションを使います (5つ以上のパーティションを GPT から MBR に変換することはできないので注意してください):
# sgdisk -m /dev/sda
デバイスから起動するには fdisk で起動フラグを設定する必要があります。
GUID Partition Table#MBR から GPT への変換も参照。
パーティションの並び替え
パーティションの合間に新しいパーティションを作成したり、パーティションを削除した場合に、以下のコマンドでパーティションを並び替えられます。
MBR の場合:
# sfdisk -r /dev/sda
GPT の場合:
# sgdisk -s /dev/sda
永続的なブロックデバイスの命名を使っていない場合、パーティションを並び替えたら /etc/fstab
や /etc/crypttab
ファイルを修正する必要があります。
GPT ヘッダのリカバリ
メイン GPT ヘッダあるいはバックアップ GPT ヘッダが破損した場合、gdisk を使うことでどちらか片方からもう片方を復元できます (/dev/sda
は適当なディスクに置き換えてください):
# gdisk /dev/sda
リカバリの r
を選択して、以下のどちらかを選択してください:
b
: バックアップ GPT ヘッダを使う (メイン GPT ヘッダを再生成)。d
: メイン GPT ヘッダを使う (バックアップ GPT ヘッダを再生成)。
リカバリが完了したらディスクにテーブルを書き込んで w
コマンドで終了してください。
参照
- GPT fdisk Tutorial - gdisk の公式ウェブページ。
- Manually Partitioning Your Hard Drive with fdisk