嵌入式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。 图4:linux内核启动及文件系统加载全过程 (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |