どのようなオペレーティングシステムでも同じことが言えますが、本システムでもインストール先は専用のパーティションを用いることにします。 LFS システムを構築していくには、利用可能な空のパーティションか、あるいはパーティション化していないものをパーティションとして生成して利用することにします。
最小限のシステムであれば 10 GB 程度のディスク容量があれば十分です。 これだけあればパッケージやソースの収容に十分で、そこでコンパイル作業を行っていくことができます。 しかし主要なシステムとして LFS を構築するなら、さらにソフトウェアをインストールすることになるはずなので、さらなる容量が必要となります。 30 GB ほどのパーティションがあれば、増量していくことを考えても十分な容量でしょう。 LFS システムそのものがそれだけの容量を要するわけではありません。 これだけの容量は十分なテンポラリ領域のために必要となるものであり、また LFS の完成後に機能追加していくためのものです。 パッケージをインストールした後はテンポラリ領域は開放されますが、コンパイルの間は多くの領域を利用します。
コンパイル処理において十分なランダムアクセスメモリ (Random Access Memory; RAM)
を確保できるとは限りませんので、スワップ (swap)
領域をパーティションとして設けるのが普通です。
この領域へは利用頻度が低いデータを移すことで、アクティブな処理プロセスがより多くのメモリを確保できるようにカーネルが制御します。
swap パーティションは、LFS
システムのものとホストシステムのものを共有することもできます。 その場合は新しいパーティションを作る必要はありません。
ディスクのパーティション生成は cfdisk
コマンドや fdisk
コマンドを使って行います。 コマンドラインオプションにはパーティションを生成するハードディスク名を指定します。
例えばプライマリーディスクであれば /dev/sda といったものになります。
そして Linux ネイティブパーティションと、必要なら swap
パーティションを生成します。 プログラムの利用方法について不明であれば cfdisk(8) や fdisk(8)
を参照してください。
上級者の方であれば別のパーティション設定も可能です。 最新の LFS システムは、ソフトウェア RAID アレーや、LVM 論理ボリュームを利用することができます。 ただしこれらを実現するには initramfs が必要であり、高度なトピックです。 こういったパーティション設定は、LFS 初心者にはお勧めしません。
新しく生成したパーティションの名前を覚えておいてください。 (例えば sda5
など。) 本書ではこのパーティションを LFS パーティションとして説明していきます。 また swap パーティションの名前も忘れないでください。 これらの名前は、後に生成する
/etc/fstab ファイルに記述するために必要となります。
LFS メーリングリストにてパーティションに関する有用情報を望む声をよく聞きます。 これは個人の趣味にもよる極めて主観的なものです。 既存ディストリビューションが採用しているデフォルトのパーティションサイズと言えば、たいていはスワップパーティションを小容量で配置した上で、そのドライブ内の残容量すべてのサイズを割り当てています。 このようなサイズ設定は LFS では最適ではありません。その理由はいくつかあります。 そのようにしてしまうと、複数のディストリビューションの導入時や LFS 構築時に、柔軟さを欠き、構築がしにくくなります。 バックアップを取る際にも無用な時間を要し、ファイルシステム上にて不適当なファイル配置を生み出すため、余計なディスク消費を発生させます。
ルートパーティション (これを /root
ディレクトリと混同しないでください) は 20 GB もあれば、どんなシステムであっても妥当なところでしょう。 それだけあれば
LFS 構築も、また BLFS においてもおそらく十分なはずです。
実験的に複数パーティションを設けるとしても、これだけのサイズで十分です。
既存のディストリビューションは、たいていはスワップパーティションを自動的に生成します。 一般にスワップパーティションのサイズは、物理 RAM サイズの二倍の容量とすることが推奨されています。 しかしそれだけの容量はほとんど必要ありません。 ディスク容量が限られているなら、スワップパーティションの容量を 2GB 程度に抑えておいて、ディスクスワップがどれだけ発生するかを確認してみてください。
Linux のハイバーネーション(ディスクへの退避状態)機能を利用する場合、マシンが停止する前に RAM の内容がスワップパーティションに書き出されます。 この場合、スワップパーティションの容量は、システムの RAM 容量と最低でも同程度である必要があります。
スワップは好ましいことではありません。 物理的なハードドライブの場合、スワップが発生しているかどうかは、単純にディスク音を聞いたり、コマンド実行時にシステムがどのように反応するかを見ればわかります。 SSD の場合、スワップ時の音は聞こえてきません。 その場合は top や free プログラムを使ってスワップ使用量を確認することができます。 SSD にスワップパーティションを割り当てることは極力避けるべきです。 最初は 5GB くらいのファイルを編集するといった極端なコマンド実行を行ってみて、スワップが起きるかどうかを確認してみてください。 スワップがごく普通に発生するようであれば、RAMを増設するのが適切です。
GUID パーティションテーブル (GUID Partition Table; GPT) を利用して ブートディスク をパーティショニングした場合、BIOS 起動が必要なのであれば普通は 1 MB 程度の小さなパーティションを用意しておくことが必要です。 このパーティションのフォーマットは不要であり、ブートローダーをインストールする際に GRUB が利用できるものでなければなりません。 通常このパーティションは fdisk を用いた場合は 'BIOS Boot' と名付けられます。 また gdisk コマンドを用いた場合はEF02 というコード名が与えられます。
ブートディスクが MBR パーティションテーブル、つまり DOS ディスクラベルを使ってパーティショニングされている場合、そのパーティションは GRUB が利用する最初のパーティションよりも前に存在している必要はありません。
Grub BIOS パーティションは、BIOS がシステムブート時に用いるドライブ上になければなりません。 これは LFS ルートパーティションがあるドライブと同一にする必要はありません。 システム上にあるドライブは、同一のパーティションテーブルタイプを利用していないことがあります。 つまりこの Grub BIOS パーティションに必要なのは、ブートディスクのパーティションテーブルタイプに合わせることだけです。
このパーティションは ESP とも呼ばれます。 これは UEFI を使ったシステムをブートするために必要となります。 ここにはブート時に実行される EFI アプリケーションが置かれます。 ブートドライブは MBR パーティションテーブル、つまりは DOS パーティションテーブルによってパーティショニングされている必要があります。 ただこのことにより、互換性の問題が発生する傾向にあります。 その場合には GUID パーティションテーブル (GPT) を使ってブートドライブをパーティショニングすることが推奨されます。 そのパーティションから LFS のブートだけを行うのであれば、その容量は 20 MB もあれば十分です。 しかしこのパーティションは EFI イメージサイズよりも大きくしなければなりません。 それは EFI イメージが生成される前に GRUB が大量のデータをこのパーティションに対して出力するためです。 安全を考えて 128 MB から 256 MB とすることが推奨されますが、実験的にこれより少なくすることもありえます。 fdisk を利用した場合、このパーティションは 'EFI System' と表されます。
GRUB を使うなら EFI システムパーティションは /boot/efi に配置する必要があります。
多くの UEFI システムには Compatibility Support Mode (CSM) あるいは Legacy Boot オプションが用意されていて、これにより BIOS を使ったブートが可能となります。 もし UEFI によるブートがうまく動作しない場合であって、システムが CSM をサポートしているのであれば、Grub BIOS パーティションを生成するのが有効かもしれません。
この他にも、必要のないパーティションというものがいくつかあります。 しかしディスクレイアウトを取り決めるには考えておく必要があります。 以下に示すのは十分な説明ではありませんが、一つの目安として示すものです。
/boot – 作成することが強く推奨されます。 カーネルやブート情報を収納するために利用するパーティションです。 容量の大きなディスクの場合、ブート時に問題が発生することがあるので、これを回避するには、一つ目のディスクドライブの物理的に一番最初のパーティションを選びます。 パーティションサイズを 200MB とすればそれで十分です。
/home – 作成することが強く推奨されます。 複数のディストリビューションや LFS の間で、ホームディレクトリおよびユーザー固有の設定を共有することができます。 パーティションサイズは、ある程度大きく取ることになりますが、利用可能なディスク残容量に依存します。
/usr – LFS においては /bin,
/lib, /sbin の各ディレクトリは、/usr 配下からのシンボリックリンクとしています。 したがって
/usr
には、システムを動作させるために必要となる実行モジュールがすべて置かれます。 LFS において
/usr を別パーティションとすることは、普通は不要です。
それでもこれを生成する場合、システム内のプログラムやライブラリすべてが収容できるように、そのパーティション容量を十分に確保することが必要です。
root パーティションは、このような設定とするなら、極端に小さなサイズ(1 ギガバイト程度)でも十分です。
これはシンクライアントやディスクなしワークステーションに適しています。 (そういった環境では /usr がリモートサーバーにマウントされます。) ただし(LFS
では対応していない)initramfs を利用する際には、これがブートする際に /usr が別パーティションになっていることが必要であるため、注意してください。
/opt – このディレクトリは BLFS などにおいて、KDE や Texlive といった巨大なパッケージをいくつもインストールする際に活用されます。 /usr ディレクトリ以外にインストールする場合です。 これを別パーティションとするなら、一般的には 5 ~ 10 GB 程度が適当でしょう。
/tmp – systemd はデフォルトで tmpfs をマウントします。 この動作を上書きしたい場合は
「/tmp の tmpfs としての生成抑止」
に従って LFS システムを設定してください。
/usr/src – このパーティションは LFS のパッケージソースを収容し LFS ビルド工程にて共用するものとして有効に利用することができます。 さらに BLFS パッケージソースを収容しビルドする場所としても利用可能です。 30~50GBくらいの容量があれば、十分なものです。
ブート時に自動的にパーティションをマウントしたい場合は /etc/fstab ファイルにて設定します。 パーティションの設定方法については
「/etc/fstab ファイルの生成」で説明しています。
Below is an example layout for an empty disk drive.
Number Start (sector) End (sector) Size Code Name 1 2048 22527 10.0 MiB EF00 EFI system partition 2 22528 24575 1024.0 KiB EF02 BIOS boot partition 3 24576 1048575 500.0 MiB 8300 /boot 4 1048576 5242879 2.0 GiB 8200 swap 5 5242880 89128959 40.0 GiB 8300 lfs13.0+ 6 89128960 173015039 40.0 GiB 8300 /home
The above example makes a few assumptions:
The partition table is a GUID Partition Table (GPT).
Both EFI and BIOS Boot partitions are present, although only one will be used. Which is used depends on the system BIOS. If the system is old, it will not have UEFI capabilities at all. Some later systems can disable UEFI through the BIOS by disabling "Secure Boot" and enabling "Legacy Support" or "CSM" (Compatibility Support Mode). If you know in advance which mode you will use, the other partition can be omitted.
The EFI partition must be formatted as VFAT.
The BIOS partition is not formatted.
The swap partition must be formatted as swap.
The /boot partition can be formatted as ext2 since it is rarely written (and then only by root) and does not need a journal.
The recommendation for all other partitions is to use ext4 formatting.
Another partition can be added for installing the "host" system for building LFS. A minimal sized partition, 10 GiB, should be sufficient. If you are building the system using a LiveCD, a host partition may not be required.