了解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是否存在,存在的话就运行

 可以看出引出根文件系统

 

posted @ 2021-10-01 17:32  __help  阅读(63)  评论(0)    收藏  举报