ディスクの準備
ブロックデバイスの概要
ブロックデバイス
Gentoo Linuxの、そしてLinux一般の、ブロックデバイス、パーティション、Linuxファイルシステムを含めた、ディスクやファイルシステム中心の考え方について詳しく見てみましょう。ディスクの入出力とファイルシステムについて理解することで、インストールのためのパーティションとファイルシステムを構築できるようになります。
まずはブロックデバイスについて見ていきます。SCSIドライブやシリアルATAドライブは両方とも/dev/sdaや/dev/sdb、/dev/sdcなどのようなデバイスハンドルとしてラベル付されます。更にモダンなマシンでは、PCI ExpressベースのNVMeソリッドステートディスクは、/dev/nvme0n1、/dev/nvme0n2などのようなデバイスハンドルを持ちます。
下の表は、各種のブロックデバイスがシステム上のどこにあるかを判断するのに役立つでしょう:
デバイスの種類 | デフォルトのデバイスハンドル | 編集者メモと、考慮すべき点 |
---|---|---|
IDE、SATA、SAS、SCSI、または USB フラッシュメモリ | /dev/sda | 2007 年頃から現在までに製造されたハードウェアで見られます。このデバイスハンドルはおそらく Linux 上でもっともよく使用されているものでしょう。この種のデバイスは SATA バス、SCSI、USB バスを介してブロックストレージとして接続されます。例えば、最初の SATA デバイス上の最初のパーティションは /dev/sda1 という名前になります。 |
NVM Express (NVMe) | /dev/nvme0n1 | ソリッドステートテクノロジとして最新の NVMe ドライブは PCI Express バスに接続され、一般市場でもっとも高速な転送速度を持っています。2014 年頃以降のシステムは NVMe ハードウェアのサポートを備えているかもしれません。最初の NVMe デバイスの最初のパーティションは /dev/nvme0n1p1 という名前になります。 |
MMC、eMMC、および SD カード | /dev/mmcblk0 | embedded MMC デバイス、SD カード、そして他の種類のメモリーカードはデータ用のストレージとして有用です。つまり、多くのシステムはこれらの種類のデバイスからのブートを許可していないかもしれません。これらのデバイスに Linux をインストールして常用するのはおすすめできません。それらの典型的な設計意図である、ファイルの交換用に使うものと考えてください。この種のストレージは短期的なファイルバックアップまたはスナップショットとして使用すると便利かもしれません。 |
上のブロックデバイスは、ディスクへの抽象的なインターフェースを表しています。ユーザープログラムはこれらのブロックデバイスを用いて、デバイスが SATA、SCSI、もしくは他のものであるかどうかを心配することなしにディスクと通信することができます。プログラムは容易にディスク上の記憶領域を、ランダムアクセスできる 4096 バイト (4K) ごとの連続領域としてアドレッシングできます。
パーティションテーブル
Linux システムを入れるために、(btrfs RAID を作成した場合のように)パーティショニングされていない生のディスクを使うことも理論上は可能ですが、実際にそのようなことを行うことはほとんどありません。代わりに、ディスク全体のブロックデバイスをより小さく扱いやすいブロックデバイスに分けて使います。amd64 システムでは、この分けられたブロックデバイスのことをパーティションと呼びます。現在主流なパーティショニング技術は、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 を使うことを提案します。
高度なストレージ
amd64インストールCDは Logical Volume Manager (LVM) サポートを提供しています。LVMのパーティション構造は、ストレージのより柔軟な管理を可能にします。LVM では、パーティションとディスクを組み合わせてボリュームグループを構成し、RAID グループや、低速な HD に対して高速な SSD 上にキャッシュを定義できます。この後の説明では「ふつう」のパーティションに焦点を当てていますが、LVMが好ましい場合は、それがサポートされていることを知っておいて損はないでしょう。詳細は LVM の記事をご覧ください。興味を持たれた方へ: 本ガイドはLVMをサポートしていないことにご注意ください。
デフォルトのパーティション構成
これよりこのハンドブックでは、ふたつの場合を考察し説明します:
- GUID パーティションテーブル (GPT) と UEFI ブート。
- MBR パーティションテーブルと MBR DOS/レガシー BIOS ブート。
特定のマザーボードファームウェアではブートタイプを混ぜて組み合わせることも可能ではありますが、このハンドブックの対象範囲からは外れます。上述の通り、現代的なハードウェアに対するインストールでは GPT と UEFI ブートを使用することが強く推奨されます。
シンプルな例として以下のパーティション構造を使います。
以下の表の一行目は、GPT ディスクラベルまたは MBR DOS/レガシー BIOS ディスクラベルのどちらか一方を選択したときの、それぞれに対応する排他的な情報を記載しています。疑わしい場合は、2010 年以降に製造された amd64 マシンは一般的に UEFI ファームウェアと GPT ブートセクタをサポートしているので、GPT で進めてください。
パーティション | ファイルシステム | サイズ | 説明 |
---|---|---|---|
/dev/sda1 | fat32 EFI システムパーティションのために必要なファイルシステム。常に GPT ディスクラベルと関連付けられます。 | 1 GiB | EFI システムパーティションの詳細。UEFI 実装をサポートするシステムファームウェアで適用可能です。これは典型的には 2010 年頃から現在までに製造されたシステムが該当します。 |
xfs MBR パーティションテーブルのブートパーティションにおすすめのファイルシステム。DOS/レガシー BIOS ディスクラベルに制限された古いファームウェアと組み合わせて使用されます。 | MBR DOS/レガシー BIOS ブートパーティションの詳細。レガシー BIOS マシンのファームウェアで適用可能です。この種のシステムは典型的には 2010 年<u>より前</u>に製造されたシステムが該当し、一般論として徐々に製造が中止されてきています。 | ||
/dev/sda2 | linux-swap | RAM サイズ * 2 | スワップパーティションの詳細。 |
/dev/sda3 | xfs | ディスクの残り | ルートパーティションの詳細。 |
もしこの情報だけで十分なほど熟練した読者は、実際のパーティション作成に進んで構いません。
fdisk と parted はいずれも、公式 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 (PARTUUID) | 説明 |
---|---|---|---|---|
/dev/sda1 | /efi | vfat | c12a7328-f81f-11d2-ba4b-00a0c93ec93b | EFI システムパーティション (ESP) の詳細。 |
/dev/sda2 | なし。スワップはデバイスファイルのようにファイルシステムにマウントされることはありません。 | swap | 0657fd6d-a4ab-43c4-84e5-0933c84b4f4f | スワップパーティションの詳細。 |
/dev/sda3 | / | xfs | 4f68bce3-e8cd-4db1-96e7-fbcaf984b709 | ルートパーティションの詳細。 |
現在のパーティションレイアウトを表示する
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 を押しましょう。これが終わったら、 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 filesystem
パーティションのレイアウトを保存する
このパーティションレイアウトを保存して fdisk を終了するために、w を入力します。
Command (m for help):
w
パーティションが作成できたら、今度はそこにファイルシステムを置きます。
BIOS / legacy ブート向けに MBR でディスクをパーティショニングする
以下の表は、単純な MBR / レガシー BIOS ブートでのインストールに推奨されるパーティションレイアウトを提供します。個人の好みやシステムの設計目的に応じて追加のパーティションを追加してもかまいません。
デバイスパス (sysfs) | マウントポイント | ファイルシステム | DPS UUID (PARTUUID) | 説明 |
---|---|---|---|---|
/dev/sda1 | /boot | xfs | なし | MBR DOS / レガシー BIOS ブートパーティションの詳細。 |
/dev/sda2 | なし。スワップはデバイスファイルのようにファイルシステムにマウントされることはありません。 | swap | 0657fd6d-a4ab-43c4-84e5-0933c84b4f4f | スワップパーティションの詳細。 |
/dev/sda3 | / | xfs | 4f68bce3-e8cd-4db1-96e7-fbcaf984b709 | ルートパーティションの詳細。 |
パーティションレイアウトはお好みで変更してください。
現在のパーティションレイアウトを表示する
ディスク(我々の例では/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.
スワップパーティションを作成する
次に、スワップパーティションを作成したいので、新規パーティション作成の 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 を作成するために p と 3 を入力、最初のセクタはそのまま 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
それでは、パーティション上にファイルシステムを作成していきましょう。
ファイルシステムを作成する
SSD または NVMe ドライブを使用する場合は、ファームウェアアップグレードが必要かどうか確認してください。特に一部の Intel SSDs (600p および 6000p) は、XFS の I/O 使用量パターンによって誘発されるデータ破損 (ファイルシステムの欠陥によるものではありません) を回避するために、重大なバグフィックスのためのファームウェアアップグレードが必要です。smartctl はモデルとファームウェアバージョンを確認するのに役立ちます。
はじめに
パーティションが作成できたら、その上にファイルシステムを作成します。次の節ではLinuxがサポートする各種ファイルシステムを紹介します。どのファイルシステムを使うかをすでに決めているなら、パーティションにファイルシステムを適用するへ進みましょう。そうでなければ、次の節を読んで利用可能なファイルシステムについて知るのがよいでしょう。
ファイルシステム
Linux は多くのファイルシステムをサポートしていますが、それらの多くは特定の目的をもって配備するのが賢明なものです。特定のファイルシステムのみが amd64 アーキテクチャ上で安定して動作するとされています - 重要なパーティションに実験的なファイルシステムを選択するときは、事前にファイルシステムのサポート状況を十分に知っておくことを推奨します。XFS はすべてのプラットフォームで、すべての目的で推奨されるファイルシステムです。以下は、網羅的ではないリストです:
- btrfs
- 次世代のファイルシステムです。スナップショット、チェックサムによる自己修復、透過的圧縮、サブボリューム、RAID の統合などの先進的な機能を提供します。RAID 5/6 とクオータグループは、btrfs のすべてのバージョンで安全ではありません。
- ext4
- ext4 は reflink などの現代的な機能を欠いてはいるものの、信頼性があり、全目的、全プラットフォームで使用できるファイルシステムです。
- f2fs
- Flash-Friendly File System はもともと、Samsung によって NAND フラッシュメモリで利用するために作られました。Gentoo を microSD カードや USB スティックや他のフラッシュベースの記憶装置にインストールする際にはすばらしい選択でしょう。
- XFS
- メタデータジャーナリングのあるファイルシステムで、堅牢な機能セットを持ち、スケーラビリティに最適化されています。新しい機能を取り入れながら継続的にアップグレードされ続けています。唯一の欠点は、現在対応中ではあるものの、 XFS パーティションはまだ縮小できないという点です。XFS の特筆すべき点として reflink とコピーオンライト (CoW) に対応しており、これは Gentoo システム上ではユーザが実施するコンパイル量の多さから特に有用です。XFS は全目的、全プラットフォームで利用できる、おすすめの現代的なファイルシステムです。パーティションは少なくとも 300MB ある必要があります。
- VFAT
- 別名 FAT32。Linux でサポートされていますが、標準的な UNIX パーミッションの設定をサポートしていません。ほとんど、他の OS (Microsoft Windows または Apple macOS) との相互運用性/交換のために使われていますが、いくつかのシステムブートローダーファームウェア (たとえば UEFI) でも必要になります。UEFI システムを使用している場合は、システムをブートするためには VFAT でフォーマットされた EFI システムパーティションが必要になるでしょう。
- NTFS
- この "New Technology" ファイルシステムは、Windows NT 3.1 以降の Microsoft Windows のフラッグシップファイルシステムです。VFAT と同様、BSD や Linux が正しく動作するために必要な UNIX パーミッション設定や拡張属性を保持しないため、ほとんどの場合ルートファイルシステムとして使うべきではありません。Microsoft Windows とデータ交換の相互運用のためにのみ使うべきです (のみの強調に注意してください)。
ファイルシステムについてのより広範な情報は、コミュニティによって維持されているファイルシステムの記事で見つけることができます。
パーティションにファイルシステムを適用する
後でハンドブックのインストールプロセスの最後に再起動する前に、選択したファイルシステムに関連するパッケージを emerge しておいてください。
パーティションまたはボリュームの上にファイルシステムを作成するには、ファイルシステムごとに異なるユーザースペースのユーティリティが利用可能です。下表でファイルシステムの名前をクリックすると、それぞれに追加の情報が得られます:
ファイルシステム | 作成コマンド | Minimal CD にある? | パッケージ |
---|---|---|---|
btrfs | mkfs.btrfs | はい | sys-fs/btrfs-progs |
ext4 | mkfs.ext4 | はい | sys-fs/e2fsprogs |
f2fs | mkfs.f2fs | はい | sys-fs/f2fs-tools |
xfs | mkfs.xfs | はい | sys-fs/xfsprogs |
vfat | mkfs.vfat | はい | sys-fs/dosfstools |
NTFS | mkfs.ntfs | はい | sys-fs/ntfs3g |
例えば、パーティション構造例の通りに、EFI システムパーティション (/dev/sda1) を FAT32 として、ルートパーティション (/dev/sda3) を xfs として設定するには、次のコマンドが使えます:
root #
mkfs.vfat -F 32 /dev/sda1
root #
mkfs.xfs /dev/sda3
ext4 を (8 GiB 未満の) 小さいパーティションに使用する場合は、十分な inode 数を確保できるように適切なオプションを指定してファイルシステムを作成する必要があります。これは、各ファイルシステム毎に、以下のコマンドのうちのひとつを使用することで行えます:
root #
mkfs.ext4 -T small /dev/<device>
上のコマンドは通常では、「inodeあたりのバイト数」を16kBから4kBに減らすので、ファイルシステムに4倍のinode数を確保できます。
それでは、新しく作成したパーティション(または論理ボリューム)にファイルシステムを作成しましょう。
スワップパーティションを有効にする
mkswapはスワップパーティションを初期化するために使われるコマンドです:
root #
mkswap /dev/sda2
スワップパーティションを有効化するには、swaponを使います:
root #
swapon /dev/sda2
上述のコマンドで、スワップを作成して有効化しましょう。
ルートパーティションのマウント
非 Gentoo インストールメディアを利用している場合、次を実行してマウントポイントを作成する必要があります:
root #
mkdir --parents /mnt/gentoo
パーティションが初期化され、ファイルシステムを格納したので、それらのパーティションをマウントする時です。 mount コマンドを使用しますが、作成されたすべてのパーティションに必要なマウントディレクトリを作成することを忘れないでください。例として、 rootパーティションをマウントします。
root #
mount /dev/sda3 /mnt/gentoo
もし/tmp/を別のパーティションに置く必要があるなら、マウントしたあと権限の変更を忘れずに行ってください:
root #
chmod 1777 /mnt/gentoo/tmp
このあと解説の中で、proc ファイルシステム (仮想的なカーネルとのインターフェース) が、他のカーネル擬似ファイルシステムと同様にマウントされますが、まず最初は、Gentoo インストールファイルをインストールします。