[[PageNavi(internal22-navi)]]
{{{ comment
h2w-title:initプロセスの起動
}}}
= initプロセスの起動 = #SECTION05130000000000000000
即/etc/initが動作を始める訳ではなく、最初は下記関数を実行するカーネルスレッドとして実行を開始する。initはファイルシステム上のinitコマンドを実行する前に、カーネル初期化処理の続き(do_basic_setup関数)を行う。 これら処理をstart_kernel関数でなく、こちらで行う理由は、start_kernel関数と異なり待ちに入ることが出来るためだと思われる。
{{{
init()
カーネル初期化処理を行う(do_basic_setup関数)
標準入出力用にコンソール(/dev/console)をオープン
if(BOOTからの要求があれば)
BOOTから指定されたコマンドをexecする
initコマンドをexecする
if(initコマンドのexecに失敗したら)
シェル(/bin/sh)をexecする
do_basic_setup()
(各種初期化)
:
:
kflushdデーモンをカーネルスレッドとして起動
スワップの初期化(kswapd_setup関数)
スワップ処理のデーモン(kpiod, kswapd)をカーネルスレッドとして起動
各種デバイスドライバの初期化(device_setup関数)
各種実行可能オブジェクト登録(binfmt_setup関数)
各種ファイルシステムの登録(filesystem_setup関数)
rootファイルシステムのマウント(mount_root関数)
if(ラムディスクがrootの場合) {
スレッドを生成 "/linuxrc" コマンドを実行する。
}
}
}}}
----
''(NIS)HirokazuTakahashi [[BR]]2000年06月11日 (日) 22時29分57秒 JST''1
[[PageNavi(internal22-navi)]]