はじめに
Linuxを扱ううえで欠かせない概念のひとつにrootfs(ルートファイルシステム)があります。普段は意識することが少ないものの、OSが起動し、サービスが動き、ユーザーが操作できるようになるまでのすべての基盤となる重要な領域です。
この記事では、rootfs の基本的な役割や仕組みを解説します。
rootfsとは
rootfsとは、Linuxが起動時に最初にマウントする/(root)のファイルシステムのことです。 Linuxのディレクトリ構造はすべて/を起点として展開されるため、rootfsはOSの“土台”とも言える存在です。
rootfsには、OSが動作するために最低限必要なファイルやディレクトリが含まれています。例えば/bin や/etc、/libといった基本ディレクトリはrootfsの一部であり、これらが揃って初めてLinuxは正常に動作できます。
カーネルが起動すると、まずinitramfsと呼ばれる一時的なrootfsをRAM上に展開し、その中の/initを実行します。 その後、ストレージ上にある本来のrootfsを探し出してマウントし、switch_rootや pivot_rootによって本番環境へ切り替えます。
rootfsに含まれる主なディレクトリは以下の通りです。
- /bin: 基本コマンド(ls, cp等)
- /sbin: 管理者向けコマンド
- /etc: 設定ファイル
- /lib, /lib64: 共有ライブラリ
- /dev: デバイスファイル
- /proc, /sys: カーネル情報を提供する仮想ファイルシステム
また、rootfsは特定のファイルシステム形式に依存しません。ext4、XFS、Btrfsなど、用途に応じてさまざまな形式が利用できます。
さらにDockerなどのコンテナ記述においては、rootfsがコンテナ内部のOSの中身そのものとして扱われます。Dockerイメージは複数のレイヤーで構成され、その最終的なファイルセットがコンテナの rootfsとなります。
initramfsとは
initramfs(Initial RAM Filesystem)はカーネルが起動直後にRAM上へ展開する一時的なrootfsのことで、 ストレージ上の本来のrootfsをマウントするまでの“準備ステージ”として機能します。
initramfsはLinuxがどんな環境でも起動できるようにするための仕組みであり、
特に以下のような場面で重要な役割を果たします。
- rootfsが暗号化されている
- LVMやRAIDを利用している
- 特殊なドライバが必要なストレージを使っている
- コンテナや組み込み環境で最小構成のOSを起動する
まとめ
ここまでをまとめるとinitramfsとrootfsは下記のような関係になります。
- initramfs: 起動直後の一時的なrootfs(RAM上)
- rootfs: 最終的にOSが動作する本番のファイルシステム(ストレージ上)
この二段構えによって、Linuxは多様なストレージ構成やハードウェア環境でも柔軟に起動できるようになっています。
コンテナ技術や組み込み開発が普及した現在、rootfsやinitramfsの理解は単なるOSの知識にとどまらず、システム設計やトラブルシューティングにも役立つ重要な基礎となります。
今後もファイルシステムについて書いていこうと思いますので参考にしてください。

コメント