ARM linux 啓動流程-整理

bootloader

  1. 基本的初始化工作:關閉看門狗,設置ddr、nand flash
  2. 啓動內核

kernel

kernel初始化步驟:

  1. 進入kernel階段,系統會先探測可識別的所有硬件設備
  2. 隨後系統會加載設備驅動程序,並生成一個臨時只讀的rootfs系統
  3. 在運行了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的處理方式一樣

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章