Upgrade to Pro — share decks privately, control downloads, hide ads and more …

たまには名前らしいことを

Avatar for Takanori Watanabe Takanori Watanabe
May 11, 2025
790

 たまには名前らしいことを

FreeBSDのinitについて

Avatar for Takanori Watanabe

Takanori Watanabe

May 11, 2025

Transcript

  1. 自己紹介 • 渡辺尊紀 / Takanori Watanabe • takawata(別にひねりもなく自分の名前) • X

    @takawata19 • FreeBSDの開発者 最近サボり気味 ACPIなんかをちょっといじっ たりした。
  2. ここでFreeBSDの起動プロセスを軽く • まず、アセンブラで書かれたカーネルエントリに入る • アーキテクチャ依存の初期化関数が走って戻ってくる。 • init_main.c:mi_startup()という関数が呼ばれる。 • かつてはmain()という名前の関数だった。 •

    ちなみに私はinit-main.comというドメインを持ってる。 • この中でデバイスドライバ等アーキテクチャ独立な初期化が行われ る。 • 最後付近でユーザーランドプロセスであるinitが起動する。
  3. multi_user • 通常の運用状態 • セッションごとに登録済みのプロセスを上げていく。 • あとは延々waitpidを発行して待っておく • signalが発行されたり、子プロセスや孤児プロセスが終了すると waitpidから起きる。

    • シグナルハンドラで状態遷移が要求されると別の状態に移行する • 正常にプロセス終了を検知した場合、セッションのpidと比較し、一致 した場合、セッションを再び上げ直す。