FreeBSD - The Power To Serve |
GitHubに「Open Launchd」プロジェクトが追加された。Open LaunchdはMac OS Xのlaunchd(8)をFreeBSDへ移植することを目的にしており、最終的にはほかのBSD系オペレーティングシステムやLinux系オペレーティングシステムでも利用できるようにすることを目指している。システムの起動時間の短縮を実現できるほか、より包括的なプロセス管理が可能になるとされている。
Mac OS Xのlaunchd(8)は従来の仕組みでいえばinit(8)、rc(8)、cron(8)などを組み合わせたような作りになっている。カーネルが読み込まれたあとにカーネルによって起動され(init(8)に相当)、以降はシステムの起動処理を担当する(rc(8)に相当)。システム起動後はジョブ管理やユーザの使用するソフトウェア起動処理制御などに使われる(cron(8)に相当)。
/Users/daichi% ps ax | grep launchd
1 ?? Ss 0:07.91 /sbin/launchd
172 ?? Ss 0:00.06 /sbin/launchd
173 ?? Ss 0:02.22 /sbin/launchd
505 ?? Ss 0:00.01 /sbin/launchd
1654 s003 R+ 0:00.00 grep launchd
/Users/daichi%
Mac OS Xで動作しているlaunchd(8)
UNIX系オペレーティングシステムではカーネルによって起動されるのはinit(8)であることが多い。最初に起動されるため通常プロセス番号には1が使われる。Mac OS Xではカーネルが呼び出すのはlaunchd(8)であるため、launchd(8)にプロセス番号1が割り振られている。
% ps -u -p 1
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
root 1 0.0 0.0 9428 756 - ILs Tue10AM 0:00.06 /sbin/init --
%
FreeBSDではinit(8)がプロセス番号1としてカーネルから起動される
UNIX系オペレーティングシステムのシステム起動時におけるコマンドの実行やデーモンの起動処理などにはいくつかのやり方があり、Linuxディストリビューションでもディストリビューションごとに異なる仕組みを採用している。launchd(8)のアプローチがこうした既存のオペレーティングシステムでデフォルトのシステムとして採用されるかどうかは不透明だが、システムの起動時間短縮という目的で採用するには興味深いソフトウェア。