加入收藏 | 设为首页 | 会员中心 | 我要投稿 网站开发网_马鞍山站长网 (https://www.0555zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

嵌入式Linux内核启动主要分为这三个阶段

发布时间:2018-09-26 04:48:18 所属栏目:教程 来源:嵌入式ARM
导读:副标题#e# 【资讯】嵌入式linux内核的启动全过程主要分为三个阶段。第一阶段为内核自解压过程,第二阶段主要工作是设置ARM处理器工作模式、使能MMU、设置一级页表等,而第三阶段则主要为C代码,包括内核初始化的全部工作,下面是详细介绍。 一、Linux内核自

  找到init服务后,Linux会让init服务负责后续初始化系统使用环境的工作,init启动后,就代表系统已经顺利地启动了linux内核。启动init服务时,init服务会读取/etc/inittab文件,根据/etc/inittab中的设置数据进行初始化系统环境的工作。/etc/inittab定义init服务在linux启动过程中必须依序执行以下几个Script:

  /etc/rc.d/rc.sysinit /etc/rc.d/rc /etc/rc.d/rc.local

  /etc/rc.d/rc.sysinit主要的功能是设置系统的基本环境,当init服务执行rc.sysinit时 要依次完成下面一系列工作:

  (1)启动udev

  (2)设置内核参数

  执行sysctl –p,以便从/etc/sysctl.conf设置内核参数

  (3)设置系统时间

  将硬件时间设置为系统时间

  (4)启用交换内存空间

  执行swpaon –a –e,以便根据/etc/fstab的设置启用所有的交换内存空间。

  (5)检查并挂载所有文件系统

  检查所有需要挂载的文件系统,以确保这些文件系统的完整性。检查完毕后以可读可写的方式挂载文件系统。

  (6)初始化硬件设备

  Linux除了在启动内核时以静态驱动程序驱动部分的硬件外,在执行rc.sysinit时,也会试着驱动剩余的硬件设备。rc.sysinit驱动的硬件设备包含以下几项:

  a)定义在/etc/modprobe.conf的模块

  b)ISA PnP的硬件设备

  c)USB设备

  (7)初始化串行端口设备

  Init服务会管理所有的串行端口设备,比如调制解调器、不断电系统、串行端口控制台等。Init服务则通过rc.sysinit来初始化linux的串行端口设备。当rc.sysinit发现linux才能在这/etc/rc.serial时,才会执行/etc/rc.serial,借以初始化所有的串行端口设备。因此,你可以在/etc/rc.serial中定义如何初始化linux所有的串行端口设备。

  (8)清除过期的锁定文件与IPC文件

  (9)建立用户接口

  在执行完3个主要的RC Script后,init服务的最后一个工作,就是建立linux的用户界面,好让用户可以使用linux。此时init服务会执行以下两项工作

  (10)建立虚拟控制台

  Init会在若干个虚拟控制台中执行/bin/login,以便用户可以从虚拟控制台登陆linux。linux默认在前6个虚拟控制台,也就是tty1~tty6,执行/bin/login登陆程序。当所有的初始化工作结束后,cpu_idle()函数会被调用来使系统处于闲置(idle)状态并等待用户程序的执行。至此,整个Linux内核启动完毕。整个过程见图4。

  嵌入式Linux内核启动主要分为这三个阶段

  图4:linux内核启动及文件系统加载全过程

(编辑:网站开发网_马鞍山站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!