ハンドブック:X86/ブロック/ディスク

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:X86/Blocks/Disks and the translation is 100% complete.



パーティションテーブル

Linux システムを入れるために、(btrfs RAID を作成した場合のように)パーティショニングされていない生のディスクを使うことも理論上は可能ですが、実際にそのようなことを行うことはほとんどありません。代わりに、ディスク全体のブロックデバイスをより小さく扱いやすいブロックデバイスに分けて使います。x86 システムでは、この分けられたブロックデバイスのことをパーティションと呼びます。現在主流なパーティショニング技術は、MBR(DOS ディスクラベルとも呼ばれる)と GPT の 2 つがあります。これらは 2 種類のブートプロセスに関連しています: レガシー BIOS ブートと UEFIです。

GUID パーティションテーブル (GPT)

GUID パーティションテーブル (GPT)構成(GPT ディスクラベルとも呼ばれます)は、パーティションの識別子として 64 ビットの値を使います。パーティション情報を格納する領域は MBR パーティションテーブル(DOS ディスクラベル)の 512 バイトよりもずっと大きいため、パーティション数の制限はないようなものです。さらに、パーティションサイズの上限ももっと大きく設定されています(およそ 8 ZiB、そう、ゼビバイトです)。

オペレーティングシステムとファームウェアの間のソフトウェアインターフェースが(BIOS ではなく)UEFI ならば、DOS ディスクラベルでは互換性の問題が発生するので、GPT はほぼ必須となります。

GPTはまたチェックサムと冗長性も備えています。具体的にはヘッダやパーティションテーブルのエラーを検出するCRC32チェックサムや、ディスクの末尾にバックアップのGPTを持っています。もしディスク先頭にあるプライマリGPTに損害があっても、バックアップのGPTを使って回復できます。

重要
GPT にはいくつか注意点があります:
  • BIOS ベースのコンピュータで GPT を使うことは可能ではありますが、Microsoft Windows オペレーティングシステムとのデュアルブートを行うことはできません。理由は、Microsoft Windows は GPT パーティションラベルを検出すると UEFI モードで起動しようとするためです。
  • 一部、バグのある(古い)マザーボードのファームウェアは、BIOS/CSM/legacy モードで起動するように設定されていると、GPT ラベルのディスクから起動する際に問題が発生する場合があります。

マスターブートレコード (MBR) あるいは DOS ブートセクタ

マスターブートレコードブートセクタ (DOS ブートセクタ、または DOS ディスクラベルとも呼ばれ、最近では GPT/UEFI 構成と対比してレガシー BIOS ブートとも呼ばれます) は、1983 年に PC DOS 2.x とともに最初に導入されました。MBR はパーティションの識別子として、32 ビットで、開始セクタとパーティションのセクタ数を使い、3 種類のパーティションタイプ (プライマリ、拡張、論理) を持っています。プライマリパーティションは、ディスク先頭のとても小さい領域 (ふつうは 512 バイト) にある MBR の中に、その情報が格納されます。この小ささのために、たった 4 つのプライマリパーティションしか使うことができません (例えば /dev/sda1 から /dev/sda4 まで)。

より多くのパーティションを使うために、プライマリパーティションのうちのひとつを拡張パーティションとしてマークすることができます。拡張パーティションは追加の論理パーティションを複数格納することができます(パーティションの中にパーティションが存在することになります)。

重要
まだほとんどのマザーボードメーカーがサポートしてはいるものの、MBR ブートセクタと、それに関連するパーティションの制限は既に過去のものと考えられます。2010 年以前のハードウェアを扱っているのでない限り、GUID パーティションテーブルでディスクをパーティショニングする方が良いでしょう。このセットアップを使って作業を続ける必要がある読者は、以下のことを認識しておいてください:
  • 2010 年以降のほとんどのマザーボードは、MBR ブートセクタを利用するのを過去の(サポートはされているが理想的でない)ブートモードとみなします。
  • 32 ビットの識別子を使用しているため、MBR のパーティションテーブルは 2 TiB を超えるサイズのストレージ空間のアドレスを指定することができません。
  • 拡張パーティションを作成しない限り、MBR は最大で4つまでのパーティションしかサポートしません。
  • このセットアップではバックアップのブートセクタは一切提供されないので、何かがパーティションテーブルを上書きしてしまうとすべてのパーティション情報が失われます。
とはいえ、MBR とレガシー BIOS ブートは AWS などの仮想化されたクラウド環境ではいまだに使われていることがあります。

ハンドブックの著者たちは、可能であればいつでも、Gentoo をインストールするためには GPT を使うことを提案します。

高度なストレージ

公式 Gentoo ブートメディアは Logical Volume Manager (LVM) サポートを提供しています。LVM を使用すると、パーティションまたはディスク等の物理ボリュームを組み合わせてボリュームグループを構成することができます。ボリュームグループはパーティションと比較して高い柔軟性を持ち、RAID グループや、低速な HD に対して高速な SSD 上にキャッシュを定義するために使用することができます。ハンドブックではその使用法について取り扱いませんが、Gentoo で LVM は完全にサポートされています。

デフォルトのパーティション構成

これよりこのハンドブックでは、ふたつの場合を考察し説明します:

  1. GUID パーティションテーブル (GPT) と UEFI ブート。
  2. MBR パーティションテーブルと MBR DOS/レガシー BIOS ブート。

特定のマザーボードファームウェアではブートタイプを混ぜて組み合わせることも可能ではありますが、このハンドブックの対象範囲からは外れます。上述の通り、現代的なハードウェアに対するインストールでは GPT と UEFI ブートを使用することが強く推奨されます。

シンプルな例として以下のパーティション構造を使います。

重要
以下の表の一行目は、GPT ディスクラベルまたは MBR DOS/レガシー BIOS ディスクラベルのどちらか一方を選択したときの、それぞれに対応する排他的な情報を記載しています。疑わしい場合は、2010 年以降に製造された x86 マシンは一般的に UEFI ファームウェアと GPT ブートセクタをサポートしているので、GPT で進めてください。
パーティション ファイルシステム サイズ 説明
/dev/sda1 fat32 EFI システムパーティションのために必要なファイルシステム。常に GPT ディスクラベルと関連付けられます。 1 GiB EFI システムパーティションの詳細。UEFI 実装をサポートするシステムファームウェアで適用可能です。これは典型的には 2010 年頃から現在までに製造されたシステムが該当します。
ext4 MBR パーティションテーブルのブートパーティションにおすすめのファイルシステム。DOS/レガシー BIOS ディスクラベルに制限された古いファームウェアと組み合わせて使用されます。 MBR DOS/レガシー BIOS ブートパーティションの詳細。レガシー BIOS マシンのファームウェアで適用可能です。この種のシステムは典型的には 2010 年<u>より前</u>に製造されたシステムが該当し、一般論として徐々に製造が中止されてきています。
/dev/sda2 linux-swap RAM サイズ * 2 スワップパーティションの詳細。
/dev/sda3 xfs ディスクの残り ルートパーティションの詳細。

もしこの情報だけで十分なほど熟練した読者は、実際のパーティション作成に進んで構いません。

fdiskparted はいずれも、公式 Gentoo live イメージ環境に含まれるパーティショニングのためのユーティリティです。fdisk はよく知られていて、安定した、MBR と GPT の両ディスクを扱うことができるツールです。parted は GPT パーティションをサポートした、最初期の Linux ブロックデバイスの管理ツールの一つです。読者が望むのであれば fdisk への代替として使用することができますが、ハンドブックでは、多くの Linux 環境で広く利用できる fdisk のための手順のみを提供します。

パーティションの生成方法に進む前に、以降の数セッションでパーティション構造がどのように生成されるのかについて、その詳細を述べ、いくつかの共通した落とし穴について触れておきます。


パーティション構成の設計

パーティション数とサイズ

ディスクのパーティションレイアウトの設計は、システムに対する要求と、デバイスに適用されるファイルシステムに大きく依存します。多数のユーザがいる場合、セキュリティを向上し、バックアップの作成とその他のメンテナンスを容易にするために、/home を分離されたパーティションに配置することが推奨されます。もし メールサーバとして動作する場合は、/var を分離されたパーティションとし、すべてのメールを /var ディレクトリに保存すべきでしょう。ゲームサーバでは、ほとんどのゲームサーバソフトウェアは /opt にインストールされるので、/opt を分離されたパーティションとすることができます。これらが推奨される理由は最初の /home ディレクトリと同様で、セキュリティ、バックアップ、そしてメンテナンスです。

Gentoo では多くの場合、/usr/var は相対的に大きい容量を確保すべきです。/usr にはシステム上で利用可能なアプリケーションの大部分と、Linux カーネルソース (/usr/src 配下) が配置されます。デフォルトでは、/var には Gentoo ebuild リポジトリが (/var/db/repos/gentoo 配下に) 配置され、ファイルシステム依存ではあるものの通常 650 MiB ほどのディスク容量を消費します。この推定容量には /var/cache/distfiles/var/cache/binpkgs ディレクトリは含まれていません。これらはそれぞれ、ソースファイルとバイナリパッケージ (使用している場合) を格納するディレクトリで、システムに追加すればするほど大きくなっていきます。

適切なパーティションの数とサイズは、システムを取り巻く環境と、トレードオフを考慮することで大きく変わります。パーティションやボリュームを分離することには下記の利点があります:

  • それぞれのパーティションまたはボリュームに対して、最も性能が高いファイルシステムを選択できます
  • ゾンビプロセスがパーティションまたはボリュームに継続的に書き込みをした場合でも、システム全体の空き領域を使い切ることはありません
  • 必要ならば、複数のチェックを並行して実行することで、ファイルシステムチェックの時間を短縮できます (複数のパーティションよりも複数のディスクの方が効果を実感できます)
  • リードのみ、nosuid(setuidビット無効)、noexec(実行ビット無効)等のマウントオプションによって、セキュリティが向上します


しかし、複数パーティションにはデメリットもあります:

  • もし適切に設定されていないと、あるパーティションが空き領域をたくさん持ち、別のパーティションにはまったく空き領域がなくなるといったことが起こり得ます。
  • /usr/ を独立したパーティションにすると、他のブートスクリプトが動作する前にパーティションをマウントするために、initramfs を使ってブートする必要があるかもしれません。initramfs の生成と保守はこのハンドブックのスコープの範囲外ですので、慣れていない方が /usr を独立したパーティションとすることは推奨しません。
  • SCSI や SATA では仕様上の制約により、GPT ラベルを使用しない限りは 15 個までしかパーティションを作れません。
メモ
サービスおよび init システムとして systemd を使うつもりのインストールでは、/usr ディレクトリはルートファイルシステムの一部とするか、または initramfs によりマウントされるようにして、ブート時に利用できるようにしなくてはなりません。

スワップ領域について

スワップ領域のサイズについて完璧な値というものはありません。スワップ領域の目的は、メインメモリ(RAM)が逼迫した際、カーネルにディスク領域を提供するためにあります。スワップ領域があれば、カーネルは最近最も使われていないメモリページをディスクに書き出し(スワップもしくはページアウト)、現在のタスクのために RAM 上に置かれたメモリを開放します。もちろん、もしディスクにスワップされたページが急に必要になった場合は、これらのページはメモリに戻す(ページイン)必要があります。これには、RAM から読み込むより相当長い時間がかかります(メインメモリと比較してディスクはとても遅いためです)。

システムがメモリを大量に消費するアプリケーションを実行しないとき、またシステムが多くの RAM を持っているときは、それほど大きいスワップ領域は必要ではありません。しかし、ハイバネーションの際に、スワップ領域はメモリの内容すべてを保存するために使われる(サーバシステムよりも、デスクトップやラップトップシステムでよくあることです)ことに留意してください。システムにハイバネーションのサポートが必要な場合は、メモリの全体量以上のサイズのスワップ領域が必要です。

一般的なルールとして、スワップ領域のサイズは内部メモリ (RAM) の 2 倍であることが推奨されます。複数のハードディスクを備えるシステムでは、並列して読み込み/書き込み操作が行えるように、それぞれのディスクに 1 つずつスワップパーティションを作成するのが賢い方法です。スワップ空間内のデータにアクセスしなくてはならないときに、ディスクがより高速にスワップできるほど、システムもより高速に動作するでしょう。回転式ディスクとソリッドステートディスクを比較すると、SSD 上にスワップを置いたほうが高いパフォーマンスが発揮できます。また、スワップパーティションの代わりにスワップファイルを使用することもできます。これは主にディスク容量が非常に限られたシステムで興味深いものです。


EFI システムパーティション (ESP) とは

オペレーティングシステムを起動するのに (BIOS ではなく) UEFI を使うシステムに Gentoo をインストールするときは、EFI システムパーティションを作成することが重要です。この手順については後述の説明でも述べます。BIOS/Legacy モードで起動する場合には、EFI システムパーティションは不要です。

ESP は FAT 系列のファイルシステム (Linux システムでは vfat と表示することもあります) である必要があります。UEFI specification では、UEFI ファームウェアは FAT12、16、32 を認識すると書かれている一方で、ESP には FAT32 を推奨しています。パーティションを作成したら、ESP をフォーマットしてください:

root #mkfs.fat -F 32 /dev/sda1
重要
ESP が FAT 系列のファイルシステムでフォーマットされていないと、UEFI ファームウェアはブートローダー (か Linux カーネル) を見つけられず、おそらくシステムをブートすることができません!

BIOS ブートパーティションとは

BIOS ブートパーティションは、GPT パーティションレイアウトを BIOS/Legacy ブートモードで GRUB2 と組み合わせる場合にのみ必要になります。EFI/UEFI モードで起動する場合や、MBR テーブルを使用する場合には不要です。これはとても小さい (1 - 2 MB) パーティションで、GRUB2 などのブートローダが、与えられた領域に収まらないようなデータを置くためのパーティションです。このガイドでは使用しません。

UEFI 向けに GPT でディスクをパーティショニングする

以降の部分では、単一の GPT ディスクデバイスのためのパーティションレイアウト例を、UEFI 仕様書および Discoverable Partitions Specification (DPS) に準拠するように作成する方法を説明します。DPS は Linux Userspace API (UAPI) Group Specification の一部として提供されている仕様であり、準拠することが推奨されますが、必須ではありません。この仕様を、sys-apps/util-linux パッケージの一部である fdisk ユーティリティを使って実装します。

表は単純な Gentoo インストールのために推奨されるデフォルトを提供します。個人の好みやシステムの設計目的に応じて追加のパーティションを追加してもかまいません。

デバイスパス (sysfs) マウントポイント ファイルシステム DPS UUID (Type-UUID) 説明
/dev/sda1 /efi vfat c12a7328-f81f-11d2-ba4b-00a0c93ec93b EFI システムパーティション (ESP) の詳細。
/dev/sda2 なし。スワップはデバイスファイルのようにファイルシステムにマウントされることはありません。 0657fd6d-a4ab-43c4-84e5-0933c84b4f4f スワップパーティションの詳細。
/dev/sda3 / xfs 44479540-f297-41b2-9af7-d131d5f0458a ルートパーティションの詳細。

現在のパーティションレイアウトを表示する

fdiskは、ディスクをパーティション分割するためのポピュラーでパワフルなツールです。ディスク(我々の例では/dev/sda)に対してfdiskを起動しましょう。

root #fdisk /dev/sda

pキーを使えば、現在のディスクのパーティション構成を表示できます。

Command (m for help):p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors
Disk model: DataTraveler 2.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 21AAD8CF-DB67-0F43-9374-416C7A4E31EA

Device        Start      End    Sectors  Size Type
/dev/sda1      2048   2099199   2097152     1G EFI System
/dev/sda2   2099200  10487807   8388608     4G Linux swap
/dev/sda3  10487808  60549119  50061311  23.9G Linux filesystem

このディスクは 2 つの Linux ファイルシステム ("Linux" と書かれているパーティションに対応します) と 1 つの swap パーティション ("Linux swap" と書かれているパーティション) で構成されているようです。

新しいディスクラベルを作成する / すべてのパーティションを削除する

新しい GPT ディスクラベルを作成するには、g を入力してください。この操作は既存のパーティションをすべて削除します。

Command (m for help):g
Created a new GPT disklabel (GUID: 87EA4497-2722-DF43-A954-368E46AE5C5F).

GPT ディスクラベルがすでに存在する (上の p の出力を確認してください) 場合は、代わりに既存のパーティションをひとつずつ削除することを検討してください。パーティションを削除するには d と入力します。例えば /dev/sda1 を削除するにはこのようにします:

Command (m for help):d
Partition number (1-4): 1

これで指定したパーティションの削除が予約されました。パーティションの一覧 (p) にはもう現れませんが、変更を保存するまで実際の消去は行われないので、間違えて操作してしまった場合は中止することができます。すぐに q を入力して Enter を押せば、パーティションは削除されません。

p でパーティションの一覧を表示して d とパーティション番号を入力する、という作業を繰り返すと、パーティションテーブルは空っぽになります。

Command (m for help):p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors
Disk model: DataTraveler 2.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 87EA4497-2722-DF43-A954-368E46AE5C5F

さて、メモリ内のパーティションテーブルが空になり、パーティションを作る準備ができました。

EFI システムパーティション (ESP) を作成する

メモ
より小さい ESP にすることもできますが、推奨はされません。他の OS と共有するかもしれない場合は特に。

まずは、/boot としてマウントされることになる小さな EFI システムパーティションを作成します。新規パーティションを作るので n を入力し、1 で最初の基本パーティションを選択しましょう。開始セクタについて聞かれたら、2048 (ブートローダーのために必要になるかもしれません) になっていることを確認して Enter を押しましょう。終了セクタの指定では、1 GB のパーティションを作るので +1G と入力します:

Command (m for help):n
Partition number (1-128, default 1): 1
First sector (2048-60549086, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-60549086, default 60549086): +1G
 
Created a new partition 1 of type 'Linux filesystem' and of size 1 GiB.

パーティションを EFI システムパーティションとしてマークしてください:

Command (m for help):t
Selected partition 1
Partition type (type L to list all types): 1
Changed type of partition 'Linux filesystem' to 'EFI System'.

スワップパーティションを作成する

次に、スワップパーティションを作成したいので、新規パーティション作成の n を入力し、2 で 2 番目のパーティション、/dev/sda2 を選択しましょう。開始セクタの指定ではそのまま Enter を押します。終了セクタの指定では、4GB のパーティションを作るので +4G (もしくはお好みのswap領域のサイズ) と入力します。

Command (m for help):n
Partition number (2-128, default 2): 
First sector (526336-60549086, default 526336): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (526336-60549086, default 60549086): +4G
 
Created a new partition 2 of type 'Linux filesystem' and of size 4 GiB.

ここまでできたら、パーティションタイプを設定するために t と入力し、今作成したパーティション 2 を選択、そしてパーティションタイプ "Linux Swap" を意味する 19 を入力します。

Command (m for help):t
Partition number (1,2, default 2): 2
Partition type (type L to list all types): 19
 
Changed type of partition 'Linux filesystem' to 'Linux swap'.

ルートパーティションを作成する

最後に、ルートパーティションを作成します。n で新規パーティション作成、3番目のパーティション、/dev/sda3 を作成するために 3 を入力、最初のセクタはそのまま Enter を押します。最後のセクタを聞かれたら、ディスクの空き領域全てをこのパーティションに割り当てたいのでそのまま Enter を押しましょう。

Command (m for help):n
Partition number (3-128, default 3): 3
First sector (10487808-60549086, default 10487808):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (10487808-60549086, default 60549086):

Created a new partition 3 of type 'Linux filesystem' and of size 23.9 GiB.
メモ
ルートパーティションのタイプを "Linux root (x86-64)" に設定する必要はなく、"Linux filesystem" タイプに設定されていてもシステムは通常通り機能するでしょう。このファイルシステムタイプは、それをサポートするブートローダ (つまり systemd-boot) を使用し、fstab を使用したくない場合のみ必要です。

ルートパーティションを作成したら、パーティションタイプを設定するために t と入力し、今作成したパーティション 3 を選択、そしてパーティションタイプ "Linux Root (x86-64)" を意味する 23 を入力します。

Command(m for help):t
Partition number (1-3, default 3): 3
Partition type or alias (type L to list all): 23

Changed type of partition 'Linux filesystem' to 'Linux root (x86-64)'

これが終わったら、 p で次のようなパーティションテーブルが表示されるはずです:

Command (m for help):p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors
Disk model: DataTraveler 2.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 87EA4497-2722-DF43-A954-368E46AE5C5F
 
Device       Start      End  Sectors  Size Type
/dev/sda1     2048   526335   524288    1G EFI System
/dev/sda2   526336  8914943  8388608    4G Linux swap
/dev/sda3  8914944 60549086 51634143 24.6G Linux root (x86-64)

パーティションのレイアウトを保存する

このパーティションレイアウトを保存して fdisk を終了するために、w を入力します。

Command (m for help):w

パーティションが作成できたら、今度はそこにファイルシステムを置きます。

BIOS / legacy ブート向けに MBR でディスクをパーティショニングする

以下の表は、単純な MBR / レガシー BIOS ブートでのインストールに推奨されるパーティションレイアウトを提供します。個人の好みやシステムの設計目的に応じて追加のパーティションを追加してもかまいません。

デバイスパス (sysfs) マウントポイント ファイルシステム DPS UUID (PARTUUID) 説明
/dev/sda1 ext4 なし MBR DOS / レガシー BIOS ブートパーティションの詳細。
/dev/sda2 なし。スワップはデバイスファイルのようにファイルシステムにマウントされることはありません。 0657fd6d-a4ab-43c4-84e5-0933c84b4f4f スワップパーティションの詳細。
/dev/sda3 / xfs 44479540-f297-41b2-9af7-d131d5f0458a ルートパーティションの詳細。

パーティションレイアウトはお好みで変更してください。

現在のパーティションレイアウトを表示する

ディスク(我々の例では/dev/sda)に対してfdiskを起動しましょう。

root #fdisk /dev/sda

pキーを使えば、現在のディスクのパーティション構成を表示できます。

Command (m for help):p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors
Disk model: DataTraveler 2.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 21AAD8CF-DB67-0F43-9374-416C7A4E31EA
 
Device        Start      End  Sectors  Size Type
/dev/sda1      2048   526335   524288    1G EFI System
/dev/sda2    526336  2623487  2097152    1G Linux swap
/dev/sda3   2623488 19400703 16777216    8G Linux filesystem
/dev/sda4  19400704 60549086 41148383 19.6G Linux filesystem

このディスクは現時点まで、GPT テーブルを使用して、2 つの Linux ファイルシステム ("Linux" と書かれているパーティションに対応します) と 1 つの swap パーティション ("Linux swap" と書かれているパーティション) で構成されているようです。

新しいディスクラベルを作成する / すべてのパーティションを削除する

新しい MBR ディスクラベル (ここでは DOS ディスクラベルとも呼ばれています) を作成するには、o を入力してください。この操作は既存のパーティションをすべて削除します。

Command (m for help):o
Created a new DOS disklabel with disk identifier 0xe04e67c4.
The device contains 'gpt' signature and it will be removed by a write command. See fdisk(8) man page and --wipe option for more details.

DOS ディスクラベルがすでに存在する (上の p の出力を確認してください) 場合は、代わりに既存のパーティションをひとつずつ削除することを検討してください。パーティションを削除するには d と入力します。例えば /dev/sda1 を削除するにはこのようにします:

Command (m for help):d
Partition number (1-4): 1

これで指定したパーティションの削除が予約されました。パーティションの一覧 (p) にはもう現れませんが、変更を保存するまで実際の消去は行われないので、間違えて操作してしまった場合は中止することができます。すぐに q を入力して Enter を押せば、パーティションは削除されません。

p でパーティションの一覧を表示して d とパーティション番号を入力する、という作業を繰り返すと、パーティションテーブルは空っぽになります。

Command (m for help):p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors
Disk model: DataTraveler 2.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe04e67c4

これでパーティションを作る準備ができました。

ブートパーティションを作成する

まずは、/boot としてマウントされることになる小さなパーティションを作成します。新規パーティションを作るので n を入力し、p で基本パーティションを選択、1 で最初の基本パーティションを選択しましょう。開始セクタについて聞かれたら、2048 (ブートローダーのために必要になるかもしれません) になっていることを確認して Enter を押しましょう。終了セクタの指定では、1 GB のパーティションを作るので +1G と入力します:

Command (m for help):n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-60549119, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-60549119, default 60549119): +1G
 
Created a new partition 1 of type 'Linux' and of size 1 GiB.

a キーを押して、Enter を押すことで、パーティションをブート可能としてマークしてください。

Command (m for help):a
Selected partition 1
The bootable flag on partition 1 is enabled now.

メモ: ディスク上で複数のパーティションが利用可能な場合は、パーティションを選択する必要があるでしょう。

スワップパーティションを作成する

次に、スワップパーティションを作成したいので、新規パーティション作成の n を入力し、p で基本パーティションを選択し、 2 で2番目の基本パーティション、/dev/sda2 を選択しましょう。開始セクタの指定ではそのまま Enter を押します。終了セクタの指定では、4GB のパーティションを作るので +4G (もしくはお好みのswap領域のサイズ) と入力します。

Command (m for help):n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (526336-60549119, default 526336): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (526336-60549119, default 60549119): +4G
 
Created a new partition 2 of type 'Linux' and of size 4 GiB.

ここまでできたら、パーティションタイプを設定するために t と入力し、今作成したパーティション 2 を選択、そしてパーティションタイプ "Linux Swap" を意味する 82 を入力します。

Command (m for help):t
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): 82

Changed type of partition 'Linux' to 'Linux swap / Solaris'.

ルートパーティションを作成する

最後に、ルートパーティションを作成します。n で新規パーティション作成、3番目の基本パーティション、/dev/sda3 を作成するために p3 を入力、最初のセクタはそのまま Enter を押します。最後のセクタを聞かれたら、ディスクの空き領域全てをこのパーティションに割り当てたいのでそのまま Enter を押しましょう。これが終わったら、 p で次のようなパーティションテーブルが表示されるはずです:

Command (m for help):p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors
Disk model: DataTraveler 2.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe04e67c4
 
Device     Boot   Start      End  Sectors  Size Id Type
/dev/sda1          2048   526335   524288    1G 83 Linux
/dev/sda2        526336  8914943  8388608    4G 82 Linux swap / Solaris
/dev/sda3       8914944 60549119 51634176 24.6G 83 Linux

パーティションのレイアウトを保存する

このパーティションレイアウトを保存して fdisk を終了するために、w を入力します。

Command (m for help):w

それでは、パーティション上にファイルシステムを作成していきましょう。