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&#x