「Fdisk」の版間の差分
Kusakata.bot2 (トーク | 投稿記録) (Pkg/AUR テンプレートの更新) |
(→パーティションテーブルとパーティションの作成: 誤字(とそれに伴うリンクの)修正 SSH -> SSD) |
||
(3人の利用者による、間の24版が非表示) | |||
2行目: | 2行目: | ||
[[Category:ファイルシステム]] |
[[Category:ファイルシステム]] |
||
[[Category:システムリカバリ]] |
[[Category:システムリカバリ]] |
||
+ | [[Category:コマンド]] |
||
+ | [[de:fdisk]] |
||
[[en:Fdisk]] |
[[en:Fdisk]] |
||
+ | [[es:Fdisk]] |
||
[[ru:Fdisk]] |
[[ru:Fdisk]] |
||
+ | [[tr:Fdisk]] |
||
[[zh-hans:Fdisk]] |
[[zh-hans:Fdisk]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|ファイルシステム}} |
{{Related|ファイルシステム}} |
||
+ | {{Related|gdisk}} |
||
{{Related|GNU Parted}} |
{{Related|GNU Parted}} |
||
− | {{Related|GParted}} |
||
{{Related|パーティショニング}} |
{{Related|パーティショニング}} |
||
+ | {{Related|dd}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
− | [https://git.kernel.org/cgit/utils/util-linux/util-linux.git/ util-linux fdisk] はダイアログで操作するコマンドラインユーティリティで、ハードディスク上のパーティションテーブルやパーティションを作成・編集することができます。ハードディスクはパーティションに分割され、その分割情報はパーティションテーブルに記述されま |
+ | [https://git.kernel.org/cgit/utils/util-linux/util-linux.git/ util-linux fdisk] はダイアログで操作するコマンドラインユーティリティで、ハードディスク上のパーティションテーブルやパーティションを作成・編集することができます。ハードディスクはパーティションに分割され、その分割情報はパーティションテーブルに記述されます。 |
− | この記事では |
+ | この記事では {{man|8|fdisk}} とその派生である {{man|8|sfdisk}} ユーティリティについて解説します。 |
+ | |||
+ | {{Note|1={{Pkg|util-linux}} 2.23 以降、''fdisk'' は [[GPT]] をサポートしています。[https://git.kernel.org/pub/scm/utils/util-linux/util-linux.git/commit/?id=766d5156c43b784700d28d1c1141008b2bf35ed7] [[GPT]] に対しては {{Pkg|gptfdisk}} を使うこともできます。詳細は [[gdisk]] を見てください。}} |
||
+ | |||
+ | {{Tip|[[Wikipedia:ja:Curses|Curses]] ベースのユーザインターフェイスで基本的なパーティショニング機能を使いたい場合は、{{man|8|cfdisk}} を使うことができます。}} |
||
== インストール == |
== インストール == |
||
− | ''fdisk'' と派生ユーティリティ |
+ | ''fdisk'' とその派生ユーティリティは、{{Pkg|util-linux}} パッケージにより提供されています。このパッケージは {{Pkg|base}} [[メタパッケージ]]の依存パッケージです。 |
− | == パーティション |
+ | == パーティション一覧 == |
− | デバイス上のパーティションテーブルとパーティションを |
+ | [[ブロックデバイス]]上のパーティションテーブルとパーティションを一覧表示するには、以下を実行します (デバイスの名前 {{ic|/dev/sda}}、{{ic|/dev/nvme0n1}}、{{ic|/dev/mmcblk0}} は適当に置き換えてください): |
# fdisk -l /dev/sda |
# fdisk -l /dev/sda |
||
28行目: | 37行目: | ||
{{Note|デバイスを指定しなかった場合、''fdisk'' は {{ic|/proc/partitions}} の全てのパーティションを表示します。}} |
{{Note|デバイスを指定しなかった場合、''fdisk'' は {{ic|/proc/partitions}} の全てのパーティションを表示します。}} |
||
+ | == パーティションテーブルのバックアップとリストア == |
||
− | あるいは ''gdisk'' の場合: |
||
+ | ハードディスクに変更を加える前に、ドライブのパーティションテーブルとパーティションスキームをバックアップしておくと良いでしょう。また、バックアップを利用して、同じパーティションレイアウトを多数のドライブにコピーすることもできます。 |
||
− | # gdisk -l /dev/sda |
||
+ | GPT と MBR のどちらでも ''sfdisk'' の {{ic|-d}}/{{ic|--dump}} オプションを使ってデバイスのパーティションレイアウトをファイルに保存できます。{{ic|/dev/sda}} デバイスを保存するには以下のコマンドを実行: |
||
− | == バックアップとリストア == |
||
− | |||
− | ハードディスクを変更する前に、ドライブのパーティションテーブルとパーティションスキームをバックアップすると良いでしょう。また、バックアップを使うことで同じパーティションレイアウトを複数のドライブにコピーすることもできます。[[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 |
# sfdisk -d /dev/sda > sda.dump |
||
− | + | 1 GiB の ext4 パーティションが存在する場合、ファイルは以下のようになります: |
|
− | {{hc|sda.dump| |
+ | {{hc|sda.dump|2= |
label: gpt |
label: gpt |
||
label-id: AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE |
label-id: AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE |
||
74行目: | 54行目: | ||
first-lba: 34 |
first-lba: 34 |
||
last-lba: 1048576 |
last-lba: 1048576 |
||
+ | sector-size: 512 |
||
/dev/sda1 : start=2048, size=1048576, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=BBF1CD36-9262-463E-A4FB-81E32C12BDE7 |
/dev/sda1 : start=2048, size=1048576, type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=BBF1CD36-9262-463E-A4FB-81E32C12BDE7 |
||
+ | }} |
||
− | </nowiki>}} |
||
− | レイアウトを |
+ | レイアウトを復元するには次を実行: |
# sfdisk /dev/sda < sda.dump |
# sfdisk /dev/sda < sda.dump |
||
+ | == パーティションテーブルとパーティションの作成 == |
||
− | === sgdisk を使う === |
||
+ | [[パーティショニング]]するときはまずパーティションテーブルを作成します。その後、望ましい[[パーティショニング#パーティションスキーム|パーティションスキーム]]にあわせてパーティションを作成します。[[Master Boot Record|MBR]] と [[GPT]] のどちらを使用するかについては[[パーティショニング#パーティションテーブル|パーティションテーブル]]を見てください。 |
||
− | ''sgdisk'' を使うことで保護 MBR、メイン GPT ヘッダ、バックアップ GPT ヘッダ、そしてパーティションテーブルのコピーからなるバイナリバックアップを作成できます: |
||
+ | 最初に、パーティションテーブルとレイアウトを[[#パーティションテーブルのバックアップとリストア|バックアップ]]することを推奨します。 |
||
− | # sgdisk -b=sgdisk-sda.bak |
||
+ | ''fdisk'' は自動的に全てのパーティションを2048セクタ (1024 KiB、1セクタあたり 512 B) にアライメントします。なので、すべての [[Advanced Format]] HDD と、全てではないにしても大半の [[SSD]] と互換性があるはずです。つまりデフォルト設定で正しいアライメントが行われます。 |
||
− | 次を実行することでバックアップをリストアできます: |
||
+ | ''fdisk'' を使うには、変更/編集したい[[ブロックデバイス]]の名前を指定してプログラムを実行してください。以下の例では {{ic|/dev/sda}} を使います: |
||
− | # sgdisk -l=sgdisk-sda.bak |
||
+ | # fdisk /dev/sda |
||
− | 現在のデバイス (例: {{ic|/dev/sda}}) のパーティションレイアウトを別のドライブ (例: {{ic|/dev/sdc}}) に複製したい場合、次を実行: |
||
+ | これで、''fdisk'' の対話が開始され、コマンドを実行してパーティショニングを行うことができます。 |
||
− | # sgdisk -R=/dev/sdc /dev/sda |
||
+ | === 新しいテーブルの作成 === |
||
− | 両方のドライブが同じコンピュータに接続されている場合、GUID をランダム化する必要があります: |
||
+ | {{Warning|データが含まれているディスクに新しいパーティションテーブルを作成すると、ディスク上の全てのデータが消去されます。注意して実行してください。}} |
||
− | # sgdisk -G /dev/sdc |
||
+ | {{Tip| |
||
− | == パーティションテーブルとパーティションの作成 == |
||
+ | * NVMe ドライブや Advanced Format ハードディスクドライブが、パーティショニングする前に[[Advanced Format|最適な論理セクターサイズ]]を使用していることを確認してください。 |
||
+ | * SSDをパーティショニングする前に、[[ソリッドステートドライブ/メモリセルの消去]]を実行することを検討してください。 |
||
+ | }} |
||
− | + | 新しいパーティションテーブルを作成して既存のパーティションデータを全て消去するには、MBR パーティションを作成する場合はプロンプトに {{ic|o}} と、GUID パーティションテーブル(GPT)を作成する場合は {{ic|g}} 入力します。既存のテーブルを使用する場合は、何もせず次に進んで下さい。 |
|
+ | === パーティションの作成 === |
||
− | 最初に、パーティションテーブルとレイアウトを[[#バックアップとリストア|バックアップ]]することを推奨します。 |
||
− | + | {{ic|n}} コマンドで新しいパーティションを作成します。MBR パーティションタイプ、パーティション番号、開始セクタ、終わりのセクタを入力します。 |
|
+ | {{Note|パーティションのサイズや場所に関する考慮事項は [[パーティショニング#パーティションスキーム]] を見てください。}} |
||
− | === パーティションの操作の開始 === |
||
+ | ==== パーティションタイプ ==== |
||
− | ''fdisk'' または ''gdisk'' を起動して、[[#新しいテーブルの作成|新しいテーブルの作成]]に進んで下さい。 |
||
+ | MBR を使用している場合、''fdisk'' は MBR パーティションタイプを尋ねてきます。プライマリパーティションを作成したい場合は {{ic|p}} と、拡張パーティションを作成したい場合は {{ic|e}} と入力してください。プライマリパーティションは4つまで作成できます。 |
||
− | ==== fdisk ==== |
||
+ | ''fdisk'' はパーティションタイプ ID を尋ねずに、デフォルトで 'Linux filesystem' を使用します。[[#パーティションタイプの変更]]できます。 |
||
− | MBR を使う場合、パーティションテーブルを編集するためのユーティリティは ''fdisk'' と呼ばれています。最近のバージョンの ''fdisk'' はデフォルトの表示単位にシリンダーを使用する古いシステムのサポートや、MS-DOS との互換性をデフォルトで廃止しています。最新の ''fdisk'' は自動的に全てのパーティションを2048セクタ (1024 KiB) にアライメントをするため、SSD メーカーによって使用されている EBS サイズ全てで問題なく整列されます。つまりデフォルト設定で正しいアライメントが行われます。 |
||
+ | ==== パーティション番号 ==== |
||
− | 昔の ''fdisk'' は、デフォルトの表示単位にシリンダーを使っていて、SSD のアライメントと干渉する MS-DOS との互換性も残っていました。そのため、2008-2009年あたりのインターネットのガイドを調べたら、大げさに書かれているのが見て取れると思います。最新の ''fdisk'' では、物事はもっとシンプルになり、そのことはこの記事にも反映されています。 |
||
+ | パーティション番号とは、パーティションに割り当てられた番号であり、例えば、ディスク {{ic|/dev/sda}} 上の番号 {{ic|1}} のパーティションは {{ic|/dev/sda1}}、{{ic|/dev/nvme0n1}} 上では {{ic|/dev/nvme0n1p1}}、{{ic|/dev/mmcblk0}} 上では {{ic|/dev/mmcblk0p1}} となります。命名規則の詳細については[[デバイスファイル#パーティション]]を参照してください。パーティション番号はディスク上のパーティションの順序と一致しない場合があり、その場合には[[#パーティションのソート|ソート]]できます。 |
||
− | root でドライブを指定して ''fdisk'' を起動してください。{{ic|/dev/sda}} の例: |
||
+ | パーティション番号は、''fdisk'' によって提案されたデフォルトの番号を使うことをおすすめします。 |
||
− | # fdisk /dev/sda |
||
+ | ==== 先頭と末尾のセクタ ==== |
||
− | ''fdisk'' ダイアログが開いてコマンドを入力することができます。 |
||
+ | パーティションの先頭のセクタは、セクタ番号を使って絶対値で指定しなければなりません。パーティションの末尾のセクタは、セクタ番号で絶対値で指定するか、あるいはキビバイト({{ic|K}})、メビバイト({{ic|M}})、ギビバイト({{ic|G}})、テビバイト({{ic|T}})、ペビバイト({{ic|P}})単位で指定することができます。 |
||
− | ==== gdisk ==== |
||
+ | パーティションの末尾のセクタの位置の指定方法は以下の2通りあります: |
||
− | [[GPT]] を使う場合、パーティションテーブルを編集するためのユーティリティは ''gdisk'' です。curses ベースの ''cgdisk'' を使うこともできますが、操作は以下と異なります。cgdisk の使用方法は {{man|8|cgdisk}} を参照してください。 |
||
+ | * ディスクの先頭からの絶対値。例えば、先頭のセクタとして {{ic|40M}} を指定すると、ディスクの先頭から 40 MiB の位置となります。 |
||
− | ''gdisk'' は殆ど全ての SSD と互換性のある 2048 セクター (または 1024KiB) ブロックサイズベースの自動パーティションアライメントができます。GNU parted も GPT をサポートしていますが、パーティションのアライニングについては[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=601813 あまりユーザーフレンドリーとは言えません]。 |
||
+ | * {{ic|'''+'''''size''}} や {{ic|'''-'''''size''}} のように、サイズの前に +/- を付けると相対値を指定できます。例えば、デフォルトの先頭セクタから 2 GiB の点を指定するには {{ic|+2G}}、利用可能な末尾のセクタから 200 MiB の点を指定するには {{ic|-200M}}。 |
||
+ | 何も入力しないで {{ic|Enter}} キーを押すと、先頭セクタの一番広いブロックから末尾セクタと同じブロックの終末までが指定されます。 |
||
− | ''gdisk'' を使うときは、変更・編集したいデバイスの名前を指定してプログラムを起動します。{{ic|/dev/sda}} の例: |
||
+ | {{Note| |
||
− | # gdisk /dev/sda |
||
+ | * パーティショニング時に {{ic|+''size{M,G,T,P}''}} 記法による相対値を使ってパーティションサイズを指定し、常に 1 MiB 以上のサイズを使うと良いでしょう。このようにサイズを指定すれば、パーティションは常にデバイスの特性に従ってアライメントされます。 |
||
+ | * [[EFI システムパーティション]]には、タイプ {{ic|EFI System}} を指定する必要があります。 |
||
+ | * [[GRUB]] を GPT のディスクにインストールする際は、タイプ {{ic|BIOS boot}} の [[BIOS ブートパーティション]]が必要です。 |
||
+ | }} |
||
+ | {{Tip| |
||
− | === 新しいテーブルの作成 === |
||
+ | * MBR パーティションテーブルのディスクでは、ディスクの末尾に512バイトのセクタ33個分(16.5 KiB)のパーティショニングされていない空き領域を作っておくことで、[[gdisk#MBR と GPT の変換|MBR と GPT の変換]]ができるようになります。 |
||
+ | }} |
||
+ | 必要なパーティションが揃うまで、この手順を繰り返してください。 |
||
− | 新しい MBR パーティションテーブルを作成して既存のパーティションデータを全て消去するには、プロンプトに {{ic|o}} と入力します。既存のテーブルを使用する場合は次に進んで下さい。 |
||
+ | === パーティションタイプの変更 === |
||
− | {{Warning|データが含まれているディスクに新しいパーティションテーブルを作成すると、ディスク上の全てのデータが消去されます。注意して実行してください。}} |
||
+ | それぞれのパーティションには、1つのタイプが割り当てられます。MBR では、[[Wikipedia:Partition type|パーティション ID]] を使います。GPT では、[[Wikipedia:GUID Partition Table#Partition type GUIDs|パーティションタイプ GUID]] を使います。 |
||
− | === パーティションの作成 === |
||
+ | パーティションのタイプを変更するには、{{ic|t}} を入力してください。デフォルトでは {{ic|Linux filesystem}} が使用され、ほとんどのユースケースで問題ないはずです。 |
||
− | {{ic|n}} コマンドで新しいパーティションを作成します。パーティションタイプ (''fdisk'' のみ)、パーティションの番号、開始セクタ、終末セクタを入力します。 |
||
− | |||
− | ''fdisk'' の場合、パーティションタイプを指定するとき、{{ic|p}} でプライマリパーティションを作成し {{ic|e}} で拡張パーティションを作成します。プライマリパーティションは4つまでしか作成できません。 |
||
− | |||
− | 開始・終末セクタはセクタ番号、あるいはキビバイト ({{ic|K}}), メビバイト ({{ic|M}}), ギビバイト ({{ic|G}}), テビバイト ({{ic|T}}), ペビバイト ({{ic|P}}) で絶対的に指定することができます。例えば、{{ic|40M}} でディスクの最初から 40MiB の位置が指定できます。また、数字に {{ic|+}} や {{ic|-}} 記号を付けることで開始位置・終了位置を相対的に指定することができます。例えば {{ic|+2G}} ならデフォルトの開始セクタから 2GiB の位置が、{{ic|-200M}} なら最後のセクタから 200MiB の位置が指定されます。何も入力しないで {{ic|Enter}} キーを押すと、開始セクタの一番広いブロックから終末セクタと同じブロックの終末までが指定されます。 |
||
− | |||
− | パーティションのタイプ id を選択します。大抵の場合はデフォルトの {{ic|Linux filesystem}} で問題ありません。{{ic|l}} (''fdisk'') や {{ic|L}} (''gdisk'') を押すことでコードの一覧を表示できます。 |
||
{{Tip| |
{{Tip| |
||
+ | * fdisk の内部コードを一覧表示するには {{ic|L}} を入力してください。 |
||
− | * [[EFI システムパーティション]]のコードは ''gdisk'' の場合は {{ic|ef00}}、''fdisk'' の場合は {{ic|EFI System}} に設定する必要があります。 |
||
+ | * {{man|8|systemd-gpt-auto-generator}} がパーティションを自動マウントするので、[https://systemd.io/DISCOVERABLE_PARTITIONS/ Discoverable Partitions Specification] に従うことをおすすめします。 |
||
− | * [[GRUB]] をディスクにインストールするとき、BIOS boot partition が必要です。''gdisk'' ではコードが {{ic|ef02}}、''fdisk'' では {{ic|BIOS boot}} のパーティションになります。 |
||
− | * [[スワップ]]パーティションを作成するときは systemd によって自動マウントされるように ''gdisk'' では {{ic|8200}}、''fdisk'' では {{ic|Linux swap}} を使うことを推奨します。 |
||
}} |
}} |
||
− | + | === パーティションを起動可能にする === |
|
+ | {{ic|a}} を入力することで、MBR パーティションを起動可能にすることができます。 |
||
− | === ディスクに変更を書き込む === |
||
+ | === パーティションテーブルの変更を確認 === |
||
− | ディスクにテーブルを書き込んで終了するには {{ic|w}} コマンドを使います。 |
||
+ | * {{ic|p}} コマンドで変更を表示します。 |
||
− | == ヒントとテクニック == |
||
+ | * {{ic|q}} コマンドで変更を中止します。 |
||
+ | * {{ic|w}} コマンドで変更をディスクに書き込み、終了します。 |
||
− | + | == パーティションの移動 == |
|
+ | {{Warning|パーティションはオフラインでのみ移動できます。パーティションを移動するには、パーティション全体をディスクに書き直す必要があるため、時間がかかり、潜在的に危険な操作になります。バックアップを強くお勧めします! {{man|8|sfdisk|OPTIONS}} によると、 'この操作は危険を伴います"}} |
||
− | MBR パーティションテーブルを GPT に変換するには、''sgdisk'' ツールを使います: |
||
+ | パーティションを移動するには、パーティションを移動する場所に空き領域が必要です。必要に応じて、パーティションとその上のファイルシステムを縮小することでスペースを空けることができます。 [[Parted#パーティションの縮小]] を参照してください。パーティションを再配置するには: |
||
− | # sgdisk -g /dev/sda |
||
+ | # echo '+''sectors'',' | sfdisk --move-data ''device'' -N ''number'' |
||
− | GPT を MBR に変換するときは {{ic|m}} オプションを使います (5つ以上のパーティションを GPT から MBR に変換することはできないので注意してください): |
||
+ | ここで、{{ic|''sectors''}} はパーティションを移動するセクターの数です({{ic|''+''}} はパーティションを前方に移動することを示します)、{{ic|''device''}} はパーティションを保持するデバイスであり、{{ic|''number''}} はパーティション番号です。ディスクの中央または先頭に新しいパーティションを追加する場合は、パーティションの番号を付け直す必要があることに注意してください。 [[#パーティションのソート]] または ''fdisk'' の "extrafunctionality" モードを参照してください。 |
||
− | # sgdisk -m /dev/sda |
||
+ | == ヒントとテクニック == |
||
− | デバイスから起動するには ''fdisk'' で起動フラグを設定する必要があります。 |
||
+ | === パーティションのソート === |
||
− | [[GUID Partition Table#MBR から GPT への変換]]も参照。 |
||
− | |||
− | === パーティションの並び替え === |
||
パーティションの合間に新しいパーティションを作成したり、パーティションを削除した場合に、以下のコマンドでパーティションを並び替えられます。 |
パーティションの合間に新しいパーティションを作成したり、パーティションを削除した場合に、以下のコマンドでパーティションを並び替えられます。 |
||
− | MBR の場合: |
||
# sfdisk -r ''/dev/sda'' |
# sfdisk -r ''/dev/sda'' |
||
+ | [[永続的なブロックデバイスの命名]]を使っていない場合、パーティションを並び替えたら {{ic|/etc/fstab}} や {{ic|/etc/crypttab}} ファイルを修正する必要があるかもしれません。 |
||
− | GPT の場合: |
||
− | # sgdisk -s ''/dev/sda'' |
||
+ | {{Note|パーティション(例えば {{ic|/dev/sda1}})を利用可能にするために、カーネルは新しいパーティションテーブルを読み込む必要があります。システムを再起動するか、カーネルに[https://serverfault.com/questions/36038/reread-partition-table-without-rebooting パーティションテーブルを再読込み]させてください (つまり {{ic|partprobe /dev/sda}})。}} |
||
− | [[永続的なブロックデバイスの命名]]を使っていない場合、パーティションを並び替えたら {{ic|/etc/fstab}} や {{ic|/etc/crypttab}} ファイルを修正する必要があります。 |
||
+ | == 参照 == |
||
− | === GPT ヘッダのリカバリ === |
||
+ | * [https://www.redhat.com/sysadmin/partitions-fdisk Managing partitions in Linux with fdisk] |
||
− | メイン GPT ヘッダあるいはバックアップ GPT ヘッダが破損した場合、''gdisk'' を使うことでどちらか片方からもう片方を復元できます ({{ic|/dev/sda}} は適当なディスクに置き換えてください): |
||
− | # gdisk ''/dev/sda'' |
||
− | リカバリの {{ic|r}} を選択して、以下のどちらかを選択してください: |
||
− | * {{ic|b}}: バックアップ GPT ヘッダを使う (メイン GPT ヘッダを再生成)。 |
||
− | * {{ic|d}}: メイン GPT ヘッダを使う (バックアップ GPT ヘッダを再生成)。 |
||
− | リカバリが完了したらディスクにテーブルを書き込んで {{ic|w}} コマンドで終了してください。 |
||
− | |||
− | == 参照 == |
||
+ | {{TranslationStatus|fdisk|2024-06-15|803424}} |
||
− | *[http://www.rodsbooks.com/gdisk/index.html GPT fdisk Tutorial] - gdisk の公式ウェブページ。 |
||
− | *[http://www.novell.com/coolsolutions/feature/19350.html Manually Partitioning Your Hard Drive with fdisk] |
2024年9月10日 (火) 20:24時点における最新版
関連記事
util-linux fdisk はダイアログで操作するコマンドラインユーティリティで、ハードディスク上のパーティションテーブルやパーティションを作成・編集することができます。ハードディスクはパーティションに分割され、その分割情報はパーティションテーブルに記述されます。
この記事では fdisk(8) とその派生である sfdisk(8) ユーティリティについて解説します。
目次
インストール
fdisk とその派生ユーティリティは、util-linux パッケージにより提供されています。このパッケージは base メタパッケージの依存パッケージです。
パーティション一覧
ブロックデバイス上のパーティションテーブルとパーティションを一覧表示するには、以下を実行します (デバイスの名前 /dev/sda
、/dev/nvme0n1
、/dev/mmcblk0
は適当に置き換えてください):
# fdisk -l /dev/sda
パーティションテーブルのバックアップとリストア
ハードディスクに変更を加える前に、ドライブのパーティションテーブルとパーティションスキームをバックアップしておくと良いでしょう。また、バックアップを利用して、同じパーティションレイアウトを多数のドライブにコピーすることもできます。
GPT と MBR のどちらでも sfdisk の -d
/--dump
オプションを使ってデバイスのパーティションレイアウトをファイルに保存できます。/dev/sda
デバイスを保存するには以下のコマンドを実行:
# sfdisk -d /dev/sda > sda.dump
1 GiB の ext4 パーティションが存在する場合、ファイルは以下のようになります:
sda.dump
label: gpt label-id: AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE device: /dev/sda unit: sectors first-lba: 34 last-lba: 1048576 sector-size: 512 /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 のどちらを使用するかについてはパーティションテーブルを見てください。
最初に、パーティションテーブルとレイアウトをバックアップすることを推奨します。
fdisk は自動的に全てのパーティションを2048セクタ (1024 KiB、1セクタあたり 512 B) にアライメントします。なので、すべての Advanced Format HDD と、全てではないにしても大半の SSD と互換性があるはずです。つまりデフォルト設定で正しいアライメントが行われます。
fdisk を使うには、変更/編集したいブロックデバイスの名前を指定してプログラムを実行してください。以下の例では /dev/sda
を使います:
# fdisk /dev/sda
これで、fdisk の対話が開始され、コマンドを実行してパーティショニングを行うことができます。
新しいテーブルの作成
新しいパーティションテーブルを作成して既存のパーティションデータを全て消去するには、MBR パーティションを作成する場合はプロンプトに o
と、GUID パーティションテーブル(GPT)を作成する場合は g
入力します。既存のテーブルを使用する場合は、何もせず次に進んで下さい。
パーティションの作成
n
コマンドで新しいパーティションを作成します。MBR パーティションタイプ、パーティション番号、開始セクタ、終わりのセクタを入力します。
パーティションタイプ
MBR を使用している場合、fdisk は MBR パーティションタイプを尋ねてきます。プライマリパーティションを作成したい場合は p
と、拡張パーティションを作成したい場合は e
と入力してください。プライマリパーティションは4つまで作成できます。
fdisk はパーティションタイプ ID を尋ねずに、デフォルトで 'Linux filesystem' を使用します。#パーティションタイプの変更できます。
パーティション番号
パーティション番号とは、パーティションに割り当てられた番号であり、例えば、ディスク /dev/sda
上の番号 1
のパーティションは /dev/sda1
、/dev/nvme0n1
上では /dev/nvme0n1p1
、/dev/mmcblk0
上では /dev/mmcblk0p1
となります。命名規則の詳細についてはデバイスファイル#パーティションを参照してください。パーティション番号はディスク上のパーティションの順序と一致しない場合があり、その場合にはソートできます。
パーティション番号は、fdisk によって提案されたデフォルトの番号を使うことをおすすめします。
先頭と末尾のセクタ
パーティションの先頭のセクタは、セクタ番号を使って絶対値で指定しなければなりません。パーティションの末尾のセクタは、セクタ番号で絶対値で指定するか、あるいはキビバイト(K
)、メビバイト(M
)、ギビバイト(G
)、テビバイト(T
)、ペビバイト(P
)単位で指定することができます。
パーティションの末尾のセクタの位置の指定方法は以下の2通りあります:
- ディスクの先頭からの絶対値。例えば、先頭のセクタとして
40M
を指定すると、ディスクの先頭から 40 MiB の位置となります。 +size
や-size
のように、サイズの前に +/- を付けると相対値を指定できます。例えば、デフォルトの先頭セクタから 2 GiB の点を指定するには+2G
、利用可能な末尾のセクタから 200 MiB の点を指定するには-200M
。
何も入力しないで Enter
キーを押すと、先頭セクタの一番広いブロックから末尾セクタと同じブロックの終末までが指定されます。
必要なパーティションが揃うまで、この手順を繰り返してください。
パーティションタイプの変更
それぞれのパーティションには、1つのタイプが割り当てられます。MBR では、パーティション ID を使います。GPT では、パーティションタイプ GUID を使います。
パーティションのタイプを変更するには、t
を入力してください。デフォルトでは Linux filesystem
が使用され、ほとんどのユースケースで問題ないはずです。
パーティションを起動可能にする
a
を入力することで、MBR パーティションを起動可能にすることができます。
パーティションテーブルの変更を確認
p
コマンドで変更を表示します。q
コマンドで変更を中止します。w
コマンドで変更をディスクに書き込み、終了します。
パーティションの移動
パーティションを移動するには、パーティションを移動する場所に空き領域が必要です。必要に応じて、パーティションとその上のファイルシステムを縮小することでスペースを空けることができます。 Parted#パーティションの縮小 を参照してください。パーティションを再配置するには:
# echo '+sectors,' | sfdisk --move-data device -N number
ここで、sectors
はパーティションを移動するセクターの数です(+
はパーティションを前方に移動することを示します)、device
はパーティションを保持するデバイスであり、number
はパーティション番号です。ディスクの中央または先頭に新しいパーティションを追加する場合は、パーティションの番号を付け直す必要があることに注意してください。 #パーティションのソート または fdisk の "extrafunctionality" モードを参照してください。
ヒントとテクニック
パーティションのソート
パーティションの合間に新しいパーティションを作成したり、パーティションを削除した場合に、以下のコマンドでパーティションを並び替えられます。
# sfdisk -r /dev/sda
永続的なブロックデバイスの命名を使っていない場合、パーティションを並び替えたら /etc/fstab
や /etc/crypttab
ファイルを修正する必要があるかもしれません。