Macはブラックボックスか
http://d.hatena.ne.jp/mirakui/20081016/1224179024
そんなことはない、と思う。すくなくともWindows Vistaよりはw
(Vistaの変なリンクはりまくりっぷりは異常)
ファイルシステム
MacはUNIX系とはいえ、全くディレクトリの構造が違うので気になる所だが、実際にはUNIXとMacを混ぜたが故の構造になっている。
/ はこんな風になっている
・Mac(Next)っぽい
Applications
Developer
Library
Network
System
Users
Volumes
private
net・Unixっぽい
bin
cores
dev
etc
home
opt
sbin
tmp
usr
var
こうやってみると下半分は途端に親しみがもてないか?
大体想像したとおりの物が下半分には入ってる。
プロセス
次にpstreeをたたいてみる。
長いので割愛するが、Linuxで言うところのinitdぽい位置にいるlaunchdからすべてのツリーが生えている。そんでもって巨大な枝をもったlaunchdがみあたらないだろうか、この下にGUIな感じで起動しているアプリがぶら下がっている。
その部分をよけつつ見ると、なんとなく普通のUNIXぽくなっているのが解るのではなかろうか。
勿論見慣れないデーモンが山ほどあるが、一つ一つ見てみるとなんとなく何をやっているのかはわかりそうな物ばかり。
むしろ最近の、やまほどプロセス(orスレッド)ができるLinuxよりはよっぽど目に優しい気がする。
ブートアップ
launchdがinitdにあたる事は上で説明した通りだが。じゃあinit.dにあたるものはどこにあるのか。
それは /System/Library/LaunchDaemons/ 。
みなれた物で、簡単そうな奴なら
cat /System/Library/LaunchDaemons/com.apple.nfsd.plist
辺りを見てみると良いのではないか?
ネットワークサービス、inetd
実はlaunchdはinetdの働きもする。
ls /System/Library/LaunchAgents/
してみると諸々のネットワークデーモンがいる事が解る。
プロセスが比較的すっきりしているのも、これのおかげなんだろう。
.plist は XMLなのは何故か
多分、GUIから編集する事が前提なので、ini形式は厳格にできないので破綻する、という事なのだろう。
基本OSXはXMLファイルの設定の固まりなのだ。
ちなみに、普通のアプリケーションの設定は~/Libraryに入っている。
つまり設定ファイル>Unix的:etc Mac的:Library
ちなみに、Libraryは設定ファイルの他にいわゆるlib的なファイルも入っている。
そういうのを「用途別に」ばらばらの場所に置かずに、「アプリ別に」おいているというのがMac流なんだろう。
ほら、何となく見えてくる。
ブートと設定を保存している仕組みがわかればなんとなくみえてきません?