第2回 各ディレクトリの役割を知ろう(ルートディレクトリ編)
関野史朗
2001/8/7
ルートディレクトリ下の各ディレクトリ
|
では、FHS 2.2による定義を中心に、各ディレクトリの役目やセオリーを解説していきましょう。必要に応じて、実際のディストリビューションでどのように扱われているかについても紹介します。
■/bin
ここには、システム管理者と一般ユーザーの両方が使う、極めて基本的なコマンドが入っています。ほかのファイルシステムがマウントされていない、シングルユーザーモードでも一通りの作業が行えるコマンド群です。
FHS 2.2では、ここに収めるべきコマンドをRequirements(必須)とOptions(オプション)の2種類に分けて定義しています。定義されているコマンドは以下のとおりです。
Requirements(必須)コマンド
|
||||||
cat | chgrp | chmod | chown | cp | date | dd |
df | dmesg | echo | false | hostname | kill | ln |
login | ls | mkdir | mknod | more | mount | mv |
ps | pwd | rm | rmdir | sed | sh | stty |
su | sync | true | umount | uname | ||
Options(オプション)コマンド
|
||||||
csh | ed | tar | cpio | gzip | gunzip | zcat |
netstat | ping |
実際のシステム(ディストリビューション)では、もう少しコマンドがあります。
/binは、NFSを使ってネットワークで共有したり、ROMに収めたりすることを想定していますから、ここにユーザーが新たにコマンドをインストールするべきではありません。
■/boot
ブート時に必要なファイルは、このディレクトリに配置されます。初期のLinuxには存在しなかったディレクトリで、Slackwareなどはルートディレクトリにいきなりカーネルが置かれていました。FHS 2.2では、カーネルは/(ルート)か/bootのどちらかに置くことになっています。
最近のディストリビューションでは、だいたいにおいて/bootに配置されているようです。Debianでは、/bootにある実体に対してのシンボリックリンクが/にあります。
このディレクトリがあると、BIOSの制限からブートできなくなるといった事態を回避するのに便利です。ディスクの先頭から100Mbytesくらいのパーティションを作り、これを/bootディレクトリに割り当てておくのです。
/bootはカーネルの再構築を行うとき以外、触る必要のないディレクトリです。
■/dev
/devにはデバイスファイルが配置されています。コンソール画面に何かを出力するなら、/dev/consoleに書き込めばいいわけです。
Linuxの特徴として、「各種のデバイスもファイルとして扱う」ということがよくいわれます。もっとも、これはUNIXの特徴だったのですが、現代のOSは大なり小なりUNIXの影響を受けているためか、割と一般的な機能です。
よほどのことがない限り、/dev内のファイルを変更する必要はありません。訳の分からないうちにいじると、デバイスがグシャグシャになったりするので注意が必要です。
■/etc
さまざまな設定ファイルは、ここ/etcにあります。かなりの数のファイルがあるので、最初は戸惑うかもしれません。しかし、一度にすべてが必要になるわけではないので、1つずつ確認していっても間に合います。関連する設定ファイルが多い場合は、/etc以下にサブディレクトリを作ってその中に配置することもあります。
/etc以下のファイルはホスト固有のデータなので、共有することは考えられていません。ディレクトリ内の細かい説明は、次回に行います。
■/home
/homeは、各ユーザーのホームディレクトリがある場所です。概して容量を必要とするので、/usrの下にシンボリックリンクが張ってあったりします。できれば、このディレクトリは独立したパーティションにしておいた方がいいでしょう(前回のパーティション分割/非分割のセオリー参照)。
もっとも、/homeはFHS 2.2ではオプション扱いになっており、必須というわけではありません。例えば、純然たる共用ファイルサーバであれば個人用のホームディレクトリは不要でしょう。
■/lib
Linuxでは早くからシェアドライブラリを使ったダイナミックリンク機能が提供されていました。シェアドライブラリは、実行時、必要になった時点で初めてHDからメモリに読み込まれます。そのイメージを保存しておくディレクトリが/libです。カーネルのブート時に必要なものと、/ファイルシステムにあるコマンド(/binや/sbin内のコマンド)を実行するのに必要なライブラリはここにあります。
なお、FHS 2.2では複数の実行形式バイナリをサポートするシステムのために、/lib<qual>という形式のディレクトリもオプションとして既定されています。
■/lost+found
fsckでディスクをチェックしたときに作られる、破損ファイルの断片を収めるディレクトリです。ルートディレクトリだけでなく、あちこちにあります。とはいえ、普通のユーザーには、ここに残っている情報から元のファイルを復元するのはまず無理でしょう。/lost+foundディレクトリの内容にこだわるよりも、正常なファイルのバックアップをマメに取っておく方が重要です。
実は、このディレクトリはファイルシステムのフォーマットにも依存するので、FHS 2.2では規定されていません。
■/mnt
一時的にファイルシステムをマウントするためのディレクトリです。ディストリビューションによって、/mntだけの場合と、その下にcdromやfloppyを含んでいる場合があります。一般のユーザーが使うことはなく、root専用と考えた方がいいでしょう。
■/opt
RPMやdpkgといったパッケージ管理システムでプログラムをインストールする場所です。ここにもbin、doc、include、info、libといったサブディレクトリがあるので、次回詳しく解説します。Red Hat Linux 7.1にはありますが、Debian GNU/Linuxにはまだありません。Solarisにもありますから、今後はこのディレクトリも標準的なものになっていくでしょう。
■/proc
Linux固有の性格が強い(FreeBSDやSolarisにも存在しますが)ディレクトリで、カーネル内部の情報にアクセスするためのファイル(編注)が集まっています。CPUやPCIバス、そして文字どおり各種プロセスの情報を読み出せます。
今回紹介したほかのディレクトリは、FHS 2.2で「Requirements」(必須)あるいは「Options」(オプション)として定義されています。しかし、/procはLinux固有の性格が強いため、「Operating System Specific Annex」(OS別付記事項)のLinux限定セクションで定義されています。
編注:/procの内容は「ファイル」と呼ばれるが、通常のファイルとは異なりHD容量を消費することはない。つまり、HD上にそのようなファイルは存在しないのである。 |
■/root
スーパーユーザーのホームディレクトリです。昔はルートディレクトリがそのままスーパーユーザーのホームディレクトリでしたが、「見通しが悪い」「セキュリティ上問題がある」といった理由で専用のディレクトリである/rootができました。/homeと別なのは、そちらが壊れてもrootだけは作業できるようにするためです。
FHS 2.2ではオプションですが、最近のディストリビューションではもはや標準となっているようです。
■/sbin
/sbinは、ブートやシステムのリカバリーに必要なシステム標準コマンドが収められています。/binと違うのは、rootが使用するシステムメンテナンス系のコマンドが集まっていることです。一般ユーザーが使う必要はありませんし、使おうとしても権限の問題で動作しないコマンドがほとんどです。
ここに必ず置かれるべきコマンドも、やはりFHS 2.2で以下のように規定されています。
Requirements(必須)コマンド
|
||||||
shutdown | ||||||
Options(オプション)コマンド
|
||||||
fastboot | fasthalt | fdisk | fsck | getty | halt | ifconfig |
init | mkfs | mkswap | reboot | route | swapon | swapoff |
update |
/bin同様、実際のシステムではもっと多くのコマンドが入っています。
このディレクトリにはシステム標準のコマンド群のみを収めておくべきであり、新しいコマンドをここにインストールすることは感心できません。
■/tmp
その名のとおり、一時的な作業用のディレクトリです。リブート時にきれいに掃除されます。だれでも使えますが、持続性を要求されるファイルを置くべきではありません。
■/usr
ユーザー向けのディレクトリで、多くのサブディレクトリを含んでいます。サブディレクトリの1つである/usr/localは、パッケージ管理システムの管轄外となっています。自分でソースからコンパイルしたプログラムなどは、この/usr/local下に配置するのが一般的です。
詳しいことは、次回解説します。
■/var
プリントやメール、ネットニュースのスプール、キャッシュといった作業用エリア、ログファイルなど、変化していく(variable)ファイルを配置するディレクトリです。/tmpと違って、リブートしても削除されません。
かつては、ここに属するファイルはほかのディレクトリにあるものが多かったのですが、NFSでファイルを共有するようになってから、変化しないほかのディレクトリと、変化する/varディレクトリを明確に分けるようになりました。システム運用上の効率アップと、セキュリティ対策がその理由です。
共有可能
|
共有不可
|
||
変化せず | /usr | /etc | |
/opt | /boot | ||
変化する | /var/mail | /var/run | |
/var/spool/news | /var/lock | ||
共有と変化から見たディレクトリの分類 |
いまだに残る細かい相違点
|
これまで、FHSをベースにしてルートディレクトリのディレクトリ構成を紹介してきました。各ディレクトリの役割や使い方はおおむねお分かりいただけたと思います。
しかし、すべてのディストリビューションが完全にFHS準拠になっているわけではありません。そのため、ディストリビューション間で微妙な差異が生じていることもあります。例えば、Debian GNU/Linuxには/cdromや/floppyといったデバイスマウント用のディレクトリ(Red Hatでは/mnt以下)、/initrd(Red Hatでは/bootに相当)がありますが、Red Hat Linuxにはありません。
|
FHS 2.2を見た限りでは、/直下にいきなり/cdromや/mo、/floppyといったディレクトリを作るのは推奨されていないようです。今後は、Red Hat Linuxのように/mnt/cdrom、/mnt/floppyといった形になっていくのでしょう。
2/2
|
|
Index | |
Windowsユーザーに教えるLinuxの常識 | |
ディレクトリを知ればLinuxが見えてくる | |
ディレクトリ/ファイル構成の標準規格FHS | |
ルートディレクトリ下の各ディレクトリ | |
いまだに残る細かい相違点 |
連載 Windowsユーザーに教える Linuxの常識 |
Linux Squareフォーラム Linux/システム学習関連記事 |
連載:Windowsユーザーに教えるLinuxの常識(全12回) Windowsのセオリーが通用しないLinux。Linux初心者向けに、LinuxというOSの考え方/常識をゼロから伝授! |
|
連載:LFSで作って学ぶLinuxの仕組み(全4回) 管理者(root)は、何をしなければならないのか? 管理に際して検討すべきことは? 管理のための技術とは? など、駆け出し管理者のための考え方や方法論を検討する |
|
連載:Linux管理者への道(全8回) 「Linux From Scratch」というシンプルなLinuxをインストール&環境構築する作業を通して、LinuxがOSとして機能するための仕組みや設定を見直そう |
|
Linux Squareフォーラム全記事インデックス |
|
- Linux Tips (2009/2/18)
− Fedora 10でカーネルを再構築するには
− Fedora 10でGRUBの起動メニューを表示するには
− makeで「/usr/bin/ld: cannot find」と表示されるときは - メインフレームLinuxの今後 (2009/2/16)
TCOの削減とサーバ統合、クラウド・コンピューティングといった課題にメインフレームLinuxはどう効くのでしょう? - OSSライセンスが求める条件とは? (2009/2/5)
世の中には70種類以上のOSSライセンスが存在します。それらが求める要求事項とは? 分類しながら見てみましょう - スケジューラの挙動は三巨頭会談で決まるのだ? (2009/1/30)
linux.conf.auを前に登場した2.6.28は、メモリやファイルシステム周りに大きな変更。お腹いっぱいになるほどのその中身は?
|
|
スポンサーからのお知らせ
- - PR -