ルートファイルシステムを用意 b. config.jsonでコンテナの設定を準備 c. libkrun, libkrunfwを配置 2. youki run コマンド実行 3. config.jsonでコンテナの設定を読み込む a. annotationsで判定 "run.oci.handler" = "krun" を指定した場合 libkrun用の処理を実行する 4. libkrun をロードし、コンテキストを作成 a. libkrun.soを読み込み , krun_create_ctxを実行 5. コンテナ初期化プロセスをクローン 6. cgroup を作成・適用してリソースを制限する 7. uts/ipc/net/mount/pidなどのnamespace をセットアップ 8. pivot_rootして新しいルートファイルシステムに切り替える 9. libkrunのVM起動設定 a. krun_set_vm_config, krun_set_root, krun_set_log_level 10. libkrunのVMを実行 a. krun_start_enter namespace切り替え前にロードしてランタイムの同一プロセス メモリ マップ上にlibkrunとlibkrunfwをのせる 通常のコンテナと同様に config.jsonで指定したエントリポイントを VMで 実行