[英]what's the difference between switch_root and run_init?
switch_root
和run_init
之間的區別是什么,除了switch_root
來自klibc
, busybox
會run_init
?
非常感謝
它們都執行完全相同的功能,即從initramfs切換到“真實”根目錄,並執行execv(3)
“真實” init(8)
程序。 他們倆都假定應該成為根目錄的文件系統已經掛載在某個目錄中,並以此作為參數。
(initramfs是引導加載程序加載的(通常)臨時內存文件系統。其目的是在掛載真實根目錄並切換到真實init
程序之前進行任何可能需要的設置。)
可以在此處找到run-init
最新源代碼。 run_init()
是入口點(從解析參數的run-init.c中調用)。
可在此處找到switch_root
最新源代碼。 switch_root_main()
是入口點。
這兩種實現的代碼都很簡短(盡管有些棘手),這使得按眼睛比較它們很容易。 唯一的區別似乎是它們執行的完整性檢查略有不同,並且最新版本的run-init
還有一個額外的選項可以在execv()
將新的init
刪除之前刪除選定的capabilities(7)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.