美文网首页
内核启动流程

内核启动流程

作者: gbmaotai | 来源:发表于2018-09-03 14:38 被阅读0次

内核的初始化过程由start_kernel函数开始,至第一个用户进程init结束,调用了一系列的初始化函数对所有的内核组件进行初始化。其中,start_kernel、rest_init、kernel_init、init_post等4个函数构成了整个初始化过程的主线。

start_kernel函数

从start_kernel函数开始,内核即进入了C语言部分,它完成了内核的大部分初始化工作。实际上,可以将start_kernel函数看做内核的main函数。

asmlinkage void __init start_kernel(void) 

rest_init函数

在start_kernel函数的最后调用了rest_init函数进行后续的初始化。

(1)rest_init中调用kernel_thread函数启动了2个内核线程,分别是:kernel_init和kthreadd

(2)调用schedule函数开启了内核的调度系统,从此linux系统开始转起来了。

rest_init最终调用cpu_idle函数结束了整个内核的启动。

进程0 idle进程, 叫空闲进程,也就是死循环。
进程1 kernel_init 函数就是进程1,这个进程被称为init进程。
进程2 kthreadd 函数就是进程2,这个进程是linux内核的守护进程。

kernel_init函数

kernel_init函数将完成设备驱动程序的初始化,并调用init_post函数启动用户空间的init进程。

init_post函数

到init_post函数为止,内核的初始化已经进入尾声,第一个用户空间进程init将姗姗来迟

如果内核命令行中给出了到init进程的直接路径(或者别的可替代的程序),这里就试图执行init。

init 进程

init:开始是内核态,后来转变为用户态】

init进程完成了从内核态向用户态的转变
init进程在内核态下面时,通过一个函数kernel_execve来执行一个用户空间编译连接的应用程序就跳跃到用户态了。

在init/main.c中最后会通过kernel_execve()来调用用户空间的init进程(如/sbin/init, /etc/init, /bin/init等

根文件系统在哪里?根文件系统的文件系统类型是什么?

uboot通过传参来告诉内核这些信息。
uboot传参中的root=/dev/mmcblk0p2 rw 这一句就是告诉内核根文件系统在哪里
uboot传参中的rootfstype=ext3这一句就是告诉内核rootfs的类型。

相关文章

  • 16-系统启动和内核管理

    本章内容 Linux组成 CentOS6 启动流程 CentOS6启动流程 启动流程 启动流程 内核 启动流程 ​...

  • 内核启动流程

    内核的初始化过程由start_kernel函数开始,至第一个用户进程init结束,调用了一系列的初始化函数对所有的...

  • 今日份打卡 180/365

    技术文章Linux内核启动流程Linux 的启动流程大致为:Uboot → Kernel → Root files...

  • 启动和内核管理

    1 CentOS 6 启动流程 2 内核参数调整 3 内核模块管理

  • day22-Linux系统服务

    1. 开机启动流程 1.1 CentOS6开机启动流程CentOS6开机启动流程内核引导:当计算机打开电源后,首先...

  • 启动流程、内核模块和Boot Loader

    1、启动流程 2、内核模块 3、Boot Loader

  • day23-Linux学习 系统服务

    一、Linux启动流程 1、CentOS6启动流程 CentOS6启动过程可以分为5个阶段: 内核的引导 运行in...

  • AMS服务

    Android 系统启动流程 开始 引导程序BootLoader启动 linux内核启动 查找init.rc文件并...

  • android app启动流程解析

    Linux系统启动流程 Linux启动概述 android系统内核实质是使用了Linux的内核,所以在谈到andr...

  • spark内核启动流程

    1.,用户提交Application 2,启动Driver进程 3,注册Application 4,启动Execu...

网友评论

      本文标题:内核启动流程

      本文链接:https://www.haomeiwen.com/subject/punbwftx.html