ハンドブック: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 ディスクの残り 選択されたプロファイル、追加のパーティション (任意)、およびシステムの目的によって rootfs のサイズの見積もりの複雑さは高まるので、ハンドブックの作者は rootfs パーティションに対する「万能」の提案を提供することはできません。<br></br>そのディスクを使用する唯一の OS が Gentoo なら、ディスクの残りを選択するのが最も安全かつ提案される選択肢です。 ルートパーティションの詳細。

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

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/レガシーモードで起動する場合には、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 ブートパーティションはとても小さい (1 - 2 MB) パーティションで、GRUB2 などのブートローダが、与えられた領域に収まらないようなデータを置くためのパーティションです。ディスクが GPT ディスクラベルを使ってフォーマットされているが、システムのファームウェアがレガシー BIOS/MBR DOS ブートモードの GRUB2 を利用してブートしようとしている場合にのみ、必要になります。EFI/UEFI モードで起動する場合には不要で、MBR/レガシー DOS ディスクラベルを使用する場合にも不要です。BIOS ブートパーティションはこのガイドでは使用しません。

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: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: HGST HTS721010A9
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 3E56EE74-0571-462B-A992-9872E3855D75

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 1953523711 1943035904 926.5G Linux root (x86-64)

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

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

g キーを押下するとすぐに、既存のパーティションがすべて削除され、新しい GPT ディスクラベルが作成されるでしょう:

Command (m for help):g
Created a new GPT disklabel (GUID: 3E56EE74-0571-462B-A992-9872E3855D75).

または、既存の 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: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: HGST HTS721010A9
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 3E56EE74-0571-462B-A992-9872E3855D75

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

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-1953525134, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-1953525134, default 1953523711): +1G
 
Created a new partition 1 of type 'Linux filesystem' and of size 1 GiB.
Partition #1 contains a vfat signature.

Do you want to remove the signature? [Y]es/[N]o: Y
The signature will be removed by a write command.

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

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

必須ではありませんが、ESP を Discoverable System Partition (DSP) 仕様に準拠させるためには、エキスパートモードに切り換えて、パーティションの UUID を設定するための以下の追加のステップを実行してください:

Command (m for help):x
Expert command (m for help):u
Selected partition 1

New UUID (in 8-4-4-4-12 format): c12a7328-f81f-11d2-ba4b-00a0c93ec93b
Partition UUID changed from 10293DC1-DF6C-4443-8ACF-C756B81B4767 to C12A7328-F81F-11D2-BA4B-00A0C93EC93B.

r キーを押してメインメニューに戻ります:

Expert command (m for help):r

Command (m for help):

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

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

Command (m for help):n
Partition number (2-128, default 2): 
First sector (2099200-1953525134, default 2099200): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2099200-1953525134, default 1953523711): +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 or alias (type L to list all): 19
 
Changed type of partition 'Linux filesystem' to 'Linux swap'.

必須ではありませんが、スワップパーティションを Discoverable System Partition (DSP) 仕様に準拠させるためには、エキスパートモードに切り換えて、パーティションの UUID を設定するための以下の追加のステップを実行してください:

Command (m for help):x
Expert command (m for help):u
Partition number (1,2, default 2): 2
Selected partition 2

New UUID (in 8-4-4-4-12 format): 0657fd6d-a4ab-43c4-84e5-0933c84b4f4f
Partition UUID changed from 7529CDF6-9482-4497-B021-576745648B2A to 0657FD6D-A4AB-43C4-84E5-0933C84B4F4F..

r キーを押してメインメニューに戻ります:

Expert command (m for help):r

Command (m for help):

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

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

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

Created a new partition 3 of type 'Linux filesystem' and of size 926.5 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)'

必須ではありませんが、ルートパーティションを Discoverable System Partition (DSP) 仕様に準拠させるためには、エキスパートモードに切り換えて、パーティションの UUID を設定するための以下の追加のステップを実行してください:

Command (m for help):x
Expert command (m for help):u
Partition number (1-3, default 3): 3

New UUID (in 8-4-4-4-12 format): 4f68bce3-e8cd-4db1-96e7-fbcaf984b709

Partition UUID changed from 40465382-FA2A-4846-9827-640821CC001F to 4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709.

r キーを押してメインメニューに戻ります:

Expert command (m for help):r

Command (m for help):

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

Command (m for help):p
Disk /dev/sda: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: HGST HTS721010A9
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: gpt
Disk identifier: 3E56EE74-0571-462B-A992-9872E3855D75

Device        Start        End    Sectors   Size Type
/dev/sda1      2048    2099199    2097152     1G Linux filesystem
/dev/sda2   2099200   10487807    8388608     4G Linux swap
/dev/sda3  10487808 1953523711 1943035904 926.5G Linux root (x86-64)

Filesystem/RAID signature on partition 1 will be wiped.

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

このパーティションレイアウトを保存して fdisk ユーティリティを終了するために、w を押下してください。

Command (m for help):w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

これでパーティションが利用可能になったので、次のインストール手順はここにファイルシステムを置いていくことです。

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: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: HGST HTS721010A9
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xf163b576

Device     Boot    Start        End    Sectors   Size Id Type
/dev/sda1  *        2048    2099199    2097152     1G 83 Linux
/dev/sda2        2099200   10487807    8388608     4G 82 Linux swap / Solaris
/dev/sda3       10487808 1953525167 1943037360 926.5G 83 Linux

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

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

o キーを押下するとすぐに、既存のパーティションがすべて削除され、新しい MBR ディスクラベル (DOS ディスクラベルとも呼ばれます) が作成されるでしょう:

Command (m for help):o
Created a new DOS disklabel with disk identifier 0xf163b576.
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: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: HGST HTS721010A9
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xf163b576

これで、新しいパーティションを作るためのディスクの準備ができました。

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

まずは、/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-1953525167, default 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-1953525167, default 1953525167): +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 (2099200-1953525167, default 2099200):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2099200-1953525167, default 1953525167): +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 を押しましょう:

Command (m for help):n
Partition type
   p   primary (2 primary, 0 extended, 2 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (3,4, default 3): 3
First sector (10487808-1953525167, default 10487808):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (10487808-1953525167, default 1953525167):

Created a new partition 3 of type 'Linux' and of size 926.5 GiB.

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

Command (m for help):p
Disk /dev/sda: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disk model: HGST HTS721010A9
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xf163b576

Device     Boot    Start        End    Sectors   Size Id Type
/dev/sda1  *        2048    2099199    2097152     1G 83 Linux
/dev/sda2        2099200   10487807    8388608     4G 82 Linux swap / Solaris
/dev/sda3       10487808 1953525167 1943037360 926.5G 83 Linux

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

このパーティションレイアウトを書き込んで fdisk を終了するために、w を押下してください:

Command (m for help):w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

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