了解linux 启动流程
1.vmlinux.lds 简介
从arch/arm/kernel/vmlinux.lds分析Linux内核第一行启动代码,入口函数在ENTRY(stext),
在arch/arm/kernel/head.S。入口函数是setex,image和zLmage是经过压缩的,linux会先进行解压缩,解压缩完成以后就要运行linux内核,要求:
1.mmu关闭。2.D cache关闭。3.I cache无所谓。4.r0 = 0。 5.r1 machine nr。 6.r2 = atags or dtb pointer
2.start kernel函数
linux内核第二阶段
->rest init
->kernel thread(kernel_init, NULL, CLOSE_FS) 创建kernel_init 线程, PID = 1。
->kernel_thread(kthreadadd, NULL,CLOSE_FS | CLOSE_FILES) 创建kthread进程,进程PID = 2。
-> cpu_startup_entry 进入空闲进程,也就是主进程退化为空闲进程
烧写到开发板 ps -A查看进程
3.kernel init进程
->kernel_init_freeable
->设置标准输入,标准输出,标准错误使用console,比如ttymxc0
->ramdisk_execute_command = "/init"
->检查/init是否存在,存在的话就运行
可以看出引出根文件系统

浙公网安备 33010602011771号