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