`
844604778
  • 浏览: 547554 次
文章分类
社区版块
存档分类
最新评论

linux kernel启动流程

 
阅读更多

linux kernel启动是从./init/main.c中开始的,其大概流程是:
1. 调用start_kernel()函数;
2. start_kernel()调用rest_init()函数;
3. rest_init()调用kernel_init()函数;
4. kernel_init()调用init_post()函数;
5. init_post()调用run_init_process()函数去创建init进程,
这个函数中的代码如下:
run_init_process("/init");
run_init_process("/sbin/init");
run_init_process("/etc/init");
run_init_process("/bin/init");
run_init_process("/bin/sh");
这时因为run_init_process()函数创建init进程成功后就不会返回了。

init程序会做哪些事呢?
1. 读/etc/inittab,从中读取当前系统预设的run level,
sh-# cat /etc/inittab
# /etc/inittab: init(8) configuration.
# $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $

# The default runlevel.
id:4:initdefault:
....
sh-# exit
exit
INIT: Entering runlevel: 4

2. 根据读出的run level的值,选择执行不同的服务,比如:
如果系统预设的run level值为4,那么执行配置在/etc/rc4.d/下的服务;
如果系统预设的run level值为5,那么执行配置在/etc/rc5.d/下的服务。
用户自己的程序都是根据需要,进行相应的配置。

以上,linux kernel就启动起来了。

在shell下验证查看,init进程所执行的程序就是预设的/sbin/init程序。
sh-# ls -l /sbin/init
-rwxr-xr-x 1 root root 28323 Oct 10 03:00 /sbin/init
sh-# ls -l /proc/1/exe
lrwxrwxrwx 1 root root 0 Oct 10 06:19 /proc/1/exe -> /sbin/init
sh-#

分享到:
评论

相关推荐

    linux_kernel启动过程

    linux_kernel启动过程资料整理,详细分析,你可以完全明白linux kernel的详细启动过程

    Android 系统 Linux系统 内核kernel启动流程 init 进程介绍

    Android 系统 Linux系统 内核kernel启动流程 init 进程介绍,init进程初始化,内核启动三个阶段深入浅出介绍,简单易懂 。kernel_init() 函数介绍,ramdisk_execute_command,execute_command /sbin/init,/etc/init,...

    随笔之GoldFish Kernel启动过程中arm汇编分析

    详细介绍linux kernel启动时,汇编部分的内容

    Linux内核启动流程

    最近整理linux内核启动流程,从自解压-》cpu初始化->start_kernel,希望对大家有帮助

    Linux系统启动过程

    Linux开机过程: (1) 加载BIOS硬件信息,并取得第一个开机装置代号 (2) 读取第一个开机装置的MBR的boot Loader(grub)开机信息 (3) 加载Kernel操作系统核心信息,Kernel开始解压缩,并且尝试驱动所有硬件装置 ...

    linux 2.6.22启动过程分析

    这是我自己参照网上的资料针对2.6.22的内核启动过程所做的大概分析,有很多不足之处,请多多指教

    解析linux根文件系统的挂载过程

    根据Linux Kernel代码,详细解析kernel启动过程中,根文件系统的挂载过程。

    android系统之从上电到kernel启动完成

    介绍android系统的第一阶段,即linux系统系统阶段详细流程

    新唐NUC977开发板kernel代码解析1-启动流程

    新唐NUC977开发板kernel代码解析1-启动流程 新唐NUC977开发板kernel代码解析1-启动流程

    linux多核CPU启动流程图

    多核启动的流程图,包含boot,tee,linux kernel流程

    ARM-Linux内核启动的分析

    这是一篇对armlinux内核启动的分析,主要是arch/arm/kernel/head-armv.S文件, head-armv.S文件是整个内核的入口,也就是说bootloader执行完毕后将跳转到head-armv.S的第一条指令,head-armv.S执行完后将跳转到start...

    Linux系统启动流程探讨

    linux系统启动流程:  linux系统启动流程,按层次分的话,可以分为内核空间的启动与用户空间的启动。  下面先说说内核空间的启动流程。  一个linux要跑起来,在简陋的情况下,必须有:kernel , lib ,...

    简要分析linux系统的启动过程

    接触linux系统运维已经好几年了,常常被问到linux系统启动流程问题,刚好今天有空来梳理下这个过程: 一般来说,所有的操作系统的启动流程基本就是: 总的来说,linux系统启动流程可以简单总结为以下几步: 1)...

    qemu下u-boot+kernel+rootfs完整启动移植手册

    嵌入式开发中,较流行的虚拟开发板qemu,本文挡详细描述了在qemu下,通过加载bin文件(u-boot+linux内核+根文件系统)成功挂载根文件系统的流程,有问题可留言。

    linux启动的函数调用关系

    跟踪linux启动代码 从start_kernel()开始一直到rest_init();描述了 linux启动过程中的函数调用关系

    基于x86的linux编译流程及内核启动流程

    分析了内核源码下如何生成x86 bzImage及x86内核的启动流程

    Little Kernel分析与移植

    Little Kernel(lk)是被Android系统接受进入源码树的Bootloader程序,并被多款智能手机和平板电脑所采用。论文介绍了lk的主要功能,分析...将移植后的lk进行编译并下载至TCC8801 DEMO板上,lk能够正常启动并引导linux内核。

    Android-start-boot-analyze-.rar_android_android bootloader_andro

    &#8226 linuxkernel启动linux内核 &#8226 init进程启动 &#8226 init进程读取init.rc启动必要的daemon程序,如:adbd、vold、netd、等 &#8226 init进程启动servicemanager---随后详细分析其过程 &#8226 init进程...

    10-Linux开机启动流程1

    1. 加载 BIOS 的硬件信息并自我测试 , 依据设定取得第一个可开机的装置 ; 3. 依据 boot loader 的设定加载 Kernel 4. Kern

    ARM Linux 启动过程分析

    本文针对arm linux, 从kernel的第一条指令开始分析,一直分析到进入 start_kernel()函数. 我们当前以linux-2.6.19内核版本作为范例来分析,本文中所有的代码,前面都会加上行号以便于和源码进行对照, 例: 在文件init/...

Global site tag (gtag.js) - Google Analytics