Linux內(nèi)核的啟動(dòng)過(guò)程大體上可以分為3個(gè)階段:
1、內(nèi)核解壓(匯編+C) 主要由arch/arm/boot/compressed/對(duì)zImage完成解壓(C語(yǔ)言),并跳轉(zhuǎn)到下階段代碼
2、板級(jí)引導(dǎo)階段(匯編) 主要進(jìn)行對(duì)cpu和體系結(jié)構(gòu)的檢查、cpu本身的初始化以及頁(yè)表的建立,使能MMU、復(fù)制數(shù)據(jù)段、清BSS段、調(diào)用start_kernel函數(shù)
3、通用內(nèi)核啟動(dòng)階段(C語(yǔ)言) 進(jìn)入init/main.c文件,從start_kernel開始進(jìn)行內(nèi)核初始化工作,最后調(diào)用rest_init。
具體內(nèi)容如下:
設(shè)置與體系架構(gòu)相關(guān)的環(huán)境 初始化控制臺(tái) 在rest_init中創(chuàng)建init進(jìn)程,如果命令參數(shù)設(shè)置了init=/linuxrc,則執(zhí)行l(wèi)inuxrc進(jìn)程作為1號(hào)進(jìn)程
設(shè)置初始化控制臺(tái)
解析inittab