Linux系統初始化流程

2021-09-11 23:47:34 字數 1494 閱讀 3286

linux系統的啟動,指的是從系統加電到系統控制台顯示「login:」登入提示符為止的系統執行階段,與這部分動作密切相關的**主要是:

在系統啟動過程中,主要關注一下幾個方面:

中斷系統及排程系統

檔案系統的初始化

裝置管理系統的初始化

網路協議的初始化

init/main.creset_init函式:

在此函式中,有kernel_thread函式,這個函式建立了核心執行緒,原型如下:

int kernel_thread(int (*fn), void *arg, unsigned long flags)
此函式定義在arch/***/kernel/process.c中,它利用do_fork()函式建立乙個新的核心態執行緒,linux的核心執行緒是沒有虛擬儲存空間的程序,它們執行在核心中,直接使用實體地址空間。

kernel_thread建立的新的核心執行緒是init,然後返回,執行unlock_kernel(與start_kernel中的lock_kernel對應),接著執行cpu_idle(),這實際是執行初始化主線程的歸宿:它觀察自己是否處於tif_need_resched——在need_resched實現,如果不是,就讓自己睡眠,否者完成schedule()函式。tif即thread information flag的意思。

下一步轉入init函式中:

init執行緒呼叫了許多函式,但與網路有關的在do_basic_setup中初始化的sock_init(),然後繼續執行do_initcalls函式,此函式定義在c檔案中,有兩個重要的變數__initcall_start__initcall_end,它們的定義如下:

extern initcall_t __initcall_start, __initcall_end;

static void __init do_initcalls(void)

}

initcall_t類與__initcall_start__initcall_end定義在include/linux目錄下的init.**件中。

理解linux系統初始化

文章內容由網上蒐集的資料整理而得,由於資料下的太多沒注意出處及作者,在這裡只好謝謝各位大大們了。要說linux服務就不得不說linux系統的初始化過程了。開機步驟 1.開機自檢 2.預引導 3.核心映像裝入 4.核心啟動 5.系統初始化 6.等待使用者登入 注 在核心啟動完之後會搜尋檔案系統中的in...

linux初始化系統init

linux從bios開始啟動,然後載入記憶體映像到記憶體,進行記憶體初始化,核心初始化的最後一步是啟動乙個pid為1的init的程序!他負責載入啟動別的程序。對應的啟動指令碼都在 etc init.d下。init是序列化啟動,啟動較慢!init的管理 etc init.d deamon start,...

LINUX 系統初始化指令碼

bin bash the system first start configuretion for install copy right by donglei 1 配置sysctl mv etc sysctl.conf etc sysctl.bak echo the new config for s...