bootloader
- 基本的初始化工作:關閉看門狗,設置ddr、nand flash
- 啓動內核
kernel
kernel初始化步驟:
- 進入kernel階段,系統會先探測可識別的所有硬件設備
- 隨後系統會加載設備驅動程序,並生成一個臨時只讀的rootfs系統
- 在運行了rootfs後,系統將開始運行第一個初始化程序--init
內核文件位置:
- /boot/vmlinuz-3.13.0-32-generic
- /boot/initrd-xx.img
主要函數:
- start_kernel() -- 完成了內核的大部分初始化工作,相當於內核的 main 函數
- reset_init() -- 啓動內核線程kernel_init
- kernel_init() --初始化設備驅動
- init_post() -- 啓動 init進程
至此,kernel已經啓動了用戶空間的第一號進程- init
init
主要任務:啓動守護進程--daemon
ubuntu最新的初始化進程已更新爲systemd.
用戶登錄
守護進程加載ok後,用戶開始登錄:
1. 命令行登錄 -- init 調用getty程序,讓用戶輸入name 和 pwd,然後調用login程序覈對pwd,通過後就從文件 /etc/passwd 讀取該user指定的shell,啓動它。
2. ssh登錄 -- init 調用sshd程序,取代getty和login,然後啓動shell。
3. 圖形界面登錄 -- init調用gdm
進入login shell,也就是登錄時的shell界面
1. 命令行與ssh的處理方式一樣