簡體   English   中英

switch_root和run_init有什么區別?

[英]what's the difference between switch_root and run_init?

switch_rootrun_init之間的區別是什么,除了switch_root來自klibcbusyboxrun_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM