企業でよく利用されているRed Hat系のLinuxですが、
AWSでEC2インスタンス起動時にクイックスタートにて選択可能になっています。

お試しに画像のAMI(Red Hat Enterprise Linux9(HVM),SSD Volume Type)を選択してEC2を起動。
起動はあっという間ですが、中身がどうなっているのか気になって確認してみました。
1.OSのバージョンは?
TeraTermなどで「ec2-user」にてEC2に接続した際は、デフォルトでユーザーディレクトリに飛ばされます。
とりあえず、OSのバージョン確認のため、以下のコマンドを実行します。
cat /etc/redhat-release
または
cat /etc/os-release

1つ目のコマンドはシンプル表示。

2つ目のコマンドで表示される内容はちょっとくどいですね!
2024年の夏ごろは RHEL9.4 がインストールされていましたが、2025年2月時点では 9.5 です。
AWSから提供される AMI は常にアップデートされているようです。
2.カーネルのバージョンは?
カーネル確認のため以下のコマンドを実行します。
uname -r

3.ディレクトリ構成は?
デフォルトのディレクトリは「/」(ルートディレクトリ)に存在するため、まずはルートディレクトリに移動します。
cd /
その後、ファイル・ディレクトリの内容を表示するコマンドを実行します。
ls -l

※画像の左側に表示されている「d」は「ディレクトリ」、「l」は「シンボリックリンク」の意味です。
もっと詳しく階層構造を見たい場合は以下のようなコマンドもあります。
例)2階層目までのディレクトリ構成を確認
sudo find / -maxdepth 2 -type d
例)ルートディレクトリ以下の全ディレクトリ構造を疑似的なツリー形式で表示
sudo ls -R / | grep ":$" | grep -v "^\./" | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
※長くなるので画像は割愛します。TeraTermなどの log 機能で確認することをお勧めします。
※面倒なので tree コマンドは導入していません。
4.各ディレクトリの役割と用途
ディレクトリ構成を見てみたところで、いったいこれらは何なのか? という疑問がわいてきます。
「ChatGPT o1」に確認しつつ、とりあえず上から順番に整理しました。(時間があるときに表形式にしたいと思います。)
一般的なLinuxの階層構造については、「LPIC1」の教科書に詳しい説明があります。(でも、わかりづらい!)
RHEL9の場合は以下の公式ドキュメントも参考になります。
●Red Hat Enterprise Linux 9
https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9
/afs
- 役割
Andrew File System(AFS ※分散ファイルシステム)に関連するディレクトリ。AFSクライアントが参照する。 - 用途
- 分散ファイルシステムを利用している場合、ここからネットワーク越しにファイルをアクセス・管理する。
- AFSを導入していない環境では空だったり、そもそも存在しないこともある。
/bin → /usr/bin(シンボリックリンク)
- 役割
元々は「ユーザーが一般的に使うコマンド」を集める場所。現在は多くのディストリビューションで/usr/bin
に統合されているため、単なるリンクとして残っている。 - 用途
ls
,cp
,mv
といった基本コマンドを実行するときに参照される。- 管理者・ユーザー問わずほとんどのコマンドがここにあるため、システムにPATHが通っており、端末から入力すると自動で探される。
/boot
- 役割
システムが起動するためのブートローダ(GRUB)やカーネルイメージ(vmlinuz)などを置く重要フォルダ。 - 用途
- OSインストール時に自動的に設定され、ブートローダの設定ファイル(例:
grub.cfg
)や起動時に使われるイメージファイルが置かれる。 - マルチブート環境でカーネルのバージョンを切り替えるときに内容を確認・編集することがある。
- 通常は手動で操作する場面はほぼない。誤って削除・上書きしないよう注意。
- OSインストール時に自動的に設定され、ブートローダの設定ファイル(例:
/dev
- 役割
デバイスファイル(ハードウェアをファイルのように扱う仕組み)をまとめた仮想ディレクトリ。 - 用途
- 例:
/dev/sda
(ハードディスク)、/dev/tty
(端末)など。 - USB接続した機器が
/dev/sdb
のように割り当てられることがある。 - デバイス名を指定してマウントしたり、特殊な設定(例:シリアルポート設定)を行う場合に使用する。
- 例:
/efi
- 役割
UEFI(BIOSの後継)対応のシステムが起動用に利用するEFIパーティションをマウントする場所。 - 用途
- RHELをUEFIモードでインストールしている場合、ブート情報がこのパーティションに書き込まれ、ここからOSを起動する。
- マルチブートやEFI設定をカスタマイズする場合はEFIパーティション内のディレクトリを編集することがある。
/etc
- 役割
システム全体の各種設定ファイルをまとめるディレクトリ。 - 用途
- ネットワーク設定(
/etc/sysconfig/network-scripts/
など)、ユーザーアカウント(/etc/passwd
,/etc/group
)、サービス設定(/etc/httpd/
,/etc/ssh/
など)を変更するときに使う。 - システム管理において、最も編集機会が多いフォルダの一つ。
- ネットワーク設定(
/home
- 役割
各ユーザーアカウントの個人用ディレクトリ(ホームディレクトリ)をまとめる。 - 用途
- 一般ユーザーは
/home/ユーザー名
以下に自分のファイルや設定を保存する。 - バックアップやユーザープロファイル管理が必要なときは、このディレクトリをまるごと保存することが多い。
- 一般ユーザーは
/lib → /usr/lib、 /lib64 → /usr/lib64
- 役割
システムのライブラリ(プログラムが利用する部品ファイル)を置く場所。
最近のディストリビューションでは/lib
は/usr/lib
への、/lib64
は/usr/lib64
へのリンクになっていることが多い。 - 用途
ldd
コマンドなどで実行ファイルがどのライブラリを参照しているか確認すると、このディレクトリ配下が表示される。- 手動でライブラリを追加・削除するケースは少ないが、特別なパッケージをインストールするときに使用するかも。
/media
- 役割
CD/DVDやUSBメモリなどの外部メディアを自動(または手動)でマウントする場所として使われる。 - 用途
- デスクトップ環境では、USBメモリを差し込むと
/media/ユーザー名/デバイス名
のように自動マウントされることが多い。 - CLIのみの環境でもこのディレクトリを使ってマウントする場合がある。
- デスクトップ環境では、USBメモリを差し込むと
/mnt
- 役割
管理者が手動で一時的にファイルシステムをマウントするためのディレクトリ。 - 用途
- ネットワークドライブ(NFS等)やISOイメージを手動でマウントするとき、
/mnt
以下にフォルダを作成してマウントする。 - システム保守やトラブルシューティング時に一時的に使うことが多い。
- ネットワークドライブ(NFS等)やISOイメージを手動でマウントするとき、
/opt
- 役割
パッケージ管理システム(dnfやyumなど)以外でインストールするサードパーティ製ソフトウェアを置くことが想定されたディレクトリ。 - 用途
- タールボール(.tar.gzなど)で配布される独自ソフトを解凍し、そのまま
/opt
配下に配置する。 - バイナリやライブラリをパッケージ管理外で導入したいときに使う。
- タールボール(.tar.gzなど)で配布される独自ソフトを解凍し、そのまま
/proc
- 役割
カーネルやプロセス情報など、システム内部の状態をファイルとして参照するための仮想ファイルシステム。 - 用途
- システムモニタリング:
cat /proc/cpuinfo
でCPU情報を見たり、cat /proc/meminfo
でメモリ情報を確認したりできる。 - プロセスごとのディレクトリがあり、PIDごとの情報を確認・操作する際に使うことがある。
- システムモニタリング:
/root
- 役割
システム管理者(rootユーザー)用のホームディレクトリ。 - 用途
- rootユーザーが個人的に管理するファイルを置く。
- 一般ユーザーの
/home/ユーザー名
とは分離されており、セキュリティの観点からも特別扱いされる。
/run
- 役割
システム起動後、ランタイム時に一時的に必要となる情報(PIDファイル、ソケットファイル等)を格納するためのディレクトリ。 - 用途
- サービスが起動した際に
/run/サービル名/
のようなディレクトリが作られ、そこに現在のプロセスIDやソケット情報を置く。 - 再起動すると内容が失われることが多い一時領域として利用される。
- サービスが起動した際に
/sbin → /usr/sbin(シンボリックリンク)
- 役割
システム管理用コマンド(管理者権限が必要なコマンド)を置く場所。現在は/usr/sbin
へのリンクになっていることが多い。 - 用途
ifconfig
,reboot
,shutdown
といったコマンドが含まれ、管理業務時に利用される。- 一般ユーザーはPATHに含まれない設定が多く、root権限でのみ直接利用するのが基本。
/srv
- 役割
サーバー(WebやFTPなど)が提供するコンテンツやデータを配置することを想定したディレクトリ。 - 用途
- Apacheを設定するときに、
/srv/www
のような場所にWebコンテンツを置く運用をすることがある(※ディストリビューションごとの慣習にもよる)。 - プロトコルごとにディレクトリを分けて管理することもある。
- Apacheを設定するときに、
/sys
- 役割
システムのハードウェアやカーネルの情報をファイルとして扱うための仮想ファイルシステム。 - 用途
/sys/class/
や/sys/devices/
などにハードウェア情報があり、ハードウェアの状態を確認・制御できる。- CPUのスピードや電源管理など、設定を変更するコマンドがこのディレクトリに読み書きすることがある。
/tmp
- 役割
一時的なファイルを保管するためのディレクトリ。 - 用途
- アプリケーションが一時ファイルを作成して削除するために使う。
- システム再起動時や一定期間操作がないファイルを自動で削除する設定の場合もあるため、重要データの長期保存には適さない。
/usr
- 役割
ユーザーが利用する各種プログラムやライブラリ、ドキュメントなどを集約するディレクトリ。 - 用途
/usr/bin
や/usr/sbin
、/usr/lib
など大量のファイルが配置されており、システムを構成する主要なファイル群が含まれる。- ソフトウェアパッケージをインストールしたとき、多くはこの下に配置される。
/var
- 役割
ログファイルやキャッシュ、スプール(メールキューや印刷ジョブなど)など、データが可変(Variable)で増減するファイルを置くディレクトリ。 - 用途
- システムログは
/var/log/
配下(例:/var/log/messages
、/var/log/secure
など)に保存されるため、トラブルシューティング時に最もよく参照する。 - メールサーバや印刷のジョブ情報、キャッシュファイルなどもここに置かれる。定期的なログローテーションなどで管理する。
- システムログは
以上!
コメント