コマンド
init
ログイン処理の初期化
UNIX で一番最初に実行されるプロセスが init である。全てのプロセスは init から fork/exec されて作成される。
init は最初に sh スクリプト /etc/rc を実行する。/etc/rc の中では
- /etc/fstab を参照しながら /、/usr、/var などのファイルシステムをマウントする
- /etc/rc.network や /etc/rc.serial を実行する
- ホストの設定ファイル /etc/rc.conf を読み込み、その内容に従って sendmail などの<li>各種デーモン・/usr/local/etc/rc.d/*.sh を実行する。
が順に行われる。
init は最後に /etc/ttys を参照しつつ /usr/libexec/getty を実行する。FreeBSD でのデフォルトでは、getty が 3つ起動される。getty は
と表示し、ユーザ名が入力されるのを待つ。ユーザ名が実行されると、getty は login コマンドを実行する。例えば hoge というユーザ名が入力されると
を実行する。
login コマンドは
と表示し、パスワード入力を待つ。パスワードが入力されたら、得られたユーザ名とパスワードを照合し、/etc/master.passwd (実際はデータベース化された /etc/spwd.db) と照らし合わせて正しいパスワードかどうかを調べる。正しければそのユーザのログインシェルを実行するわけである。
ユーザがログアウトすると login コマンドが終了し、init に処理が戻る。すると、init は再度 getty を実行し、再びユーザがログインしてくるのを待つ。
/etc/ttys を変更することで、xdm や getty などの細かな設定を行うことができる。