私たちはLinux 3.12を実行しているBBBベースのカスタムLinuxボードを持っています。
現在、ブートにはSysV initを使用しています。私が知っている限り、開始は次の順序で発生します。
- ROMコードは、ブートピン構成に基づいてブートデバイスを探します。
- ROMコードは、フェーズ1のブートローダ(SPL / X-ローダ)を内部SRAMにロードして制御します。
- SPLはDDRなどのいくつかの初期化を実行し、U-BootをRAMにロードします。
- U-BootはNAND / eMMC / Ethernetなどの他の周辺機器の初期化を実行し、カーネル+ dtbをロードします。
- カーネルは初期化を行い、dtbに基づいてさまざまなハードウェア/周辺機器を構成し、すべてのドライバを初期化します。
- カーネルは最初のプロセスであるinit(
/sbin/init
私たちの場合はカーネルコマンドライン引数で設定できます)を実行します。 - inittab(設定ファイル)に基づくinitアプリケーションは、inittabファイルで指定された起動スクリプトを実行します。
::sysinit:/etc/init.d/rcS
- これにより、
/etc/init.d/rcS
フォルダ内のすべての初期化スクリプトが実行されます/etc/init.d/
。
これがSysV initを介してマザーボードが起動する方法です。 (少なくともこれは私の理解です。間違いがあれば訂正してください。)
今、ある時点で、システムの起動がどのように行われるかを評価したいと思います。私たちはPOCを実施し、システムの起動とプロセスメンテナンスの改善または低下を調査する必要があります。
私たちは基本を知っています。 systemdはcgroupで動作し、プロセスを並列に開始できますが、それをmonitのように扱います。
しかし、私たちはsystemdの実際の起動プロセスを知りません。
System 5 initの代わりにsystemdを使用するときのBeagleBoneBlack Linuxの起動プロセスは何ですか?上記の既存の起動プロセスとどう違うのですか?
ベストアンサー1
systemd の init バイナリが inittab または rcS スクリプトを使用せずに、代わりに別のロジックを使用してデーモンを起動する方法を決定することを除いて、まったく同じように動作します。
しかし、そのコアは同じままです。
より多くの内容が必要な場合は、より具体的に教えてください。