Linux系统启动过程
   
Red Hat Enterprise Linux启动流程图
一. 初始化BIOS
&  计算机开机后首先会初始化BIOS,总的来说BIOS任务有二:
其一,检测所有外置硬体设备,收集信息,以便以后给操作系统使用;
其二,根据BIOS设置的设备启动顺序,寻启动磁盘,以引导系统启动。
二. 执行启动加载器
&  BIOS到启动磁盘后,接下来就会启动磁盘中的“操作系统”。所谓到启动磁盘,通常是指到硬盘的第一个扇区,这个扇区也即启动扇区(Boot Sector),也称为主要启动记录(Master Boot Record,MBR)扇区。
&  系统到启动记录扇区后会执行并启动位于这个扇区中的前446字节空间中的“操作系统”,但由于操作系统不可能只有446字节的大小,所以这个空间无法存储真实的操作系统,为了解决这个问题人们采取了程序调用的方式,也即,在这个446字节的空间中存储一个程序,再由这个程序加载存储于其它位置的操作系统。
&  这个小存储于446字节中的小程序就是:启动加载器(Boot Loader),在Red Hat 的各版本Linux中,早期的加载器多为LILO,现在多为GRUB。
三. 载入内核网站语言有几种
&  当BIOS顺利执行启动加载器后,启动加载器会寻存储于其它扇区中的操作系统,然后启动操作系统。当然,启动操作系统前肯定是要先启动内核的,不过,在启动内核前可以通过启动加载器(GRUB)传递一些参数(内核启动参数)给内核,以便让内核能够改变启动方式(如,Run level),或取得启动时一些重要的信息。
&  Linux 内核启动后,会执行以下几项工作:
1. 检测所有硬件设备
&  内核会首先向BIOS查询计算机硬件设备信息,然后接管设备,以提供给系统使用;
2. 驱动硬件设备
&  系统要想使用这些硬件设备必须加载硬件设备的驱动程序。驱动程序可分为编译在内核镜像文件中的静态驱动程序(Static Driver)和存储于文件系统上的内核模块中的动态驱动程序(Dynamic Driver),由于此时文件系统尚未挂载,所以内核此时只会用静态驱动程序来驱动一些必要的硬件设备;
3. 以只读方式挂载根文件系统
&  接着Linux内核会试着以只读的方式挂载根文件系统,根文件系统至少包含以下目录:
/etc/    :存储重要的配置文件;
/bin/    :存储常用且开机时必须用到的执行文件;
/sbin/  :存储开机过程中所需要的系统执行文件;
/lib/    :存储/bin/ 与 /sbin/ 的执行文件所需的链接库,以及Linux内核模块;
/dev/    :存储设备文件;
&  挂载根文件系统的目的有两个:
其一,安装适当的内核模块,以便驱动某些硬件设备或启用某些功能;
js 表格其二,启动存储于根文件系统中的init服务,以便让init服务接手后续的启动工作;
$  内核启动的最后一个动作就是从根文件系统上出并执行init服务
Linux内核会根据下列顺序寻init服务:
1) /sbin/下是否有init服务
python命名规则2) /etc/init
3) /bin/init
4) 如果前面三个目录里都不到,最后就会执行/bin/sh
$  如果内核都不到init服务,则内核就会显示“Kernel panic not syncing : Attempted to kill init”的错误信息,系统启动终止;
$  如果内核在以上的目录中到init,则内核就会启动init服务,让init服务负责后续初始化系统使用环境的工作;
&  init启动后,就代表内核已顺利启动,系统启动进入 初始化系统环境 阶段。
四. 启动INIT服务
&  启动init服务时,init服务会读取/etc/inittab文件,根据/etc/inittab文件中的设置数据进行
初始化系统环境的工作。/etc/inittab文件定义init服务在RHEL启动过程中必须依序执行以下几个Script:
/etc/rc.d/rc.sysinit
/etc/rc.d/rc
/etc/rc.d/rc.local
1. /etc/rc.d/rc.sysinit
&  /etc/rc.d/rc.sysinit 主要的功能是设置系统的基本环境,当init服务执行rc.sysinit时,会执行以下几项工作:
1) 启动Udev 与 SELinux
2) 设置内核参数
3) 设置系统时间
4) 加载键盘对应表
5) 启用置换内存空间
6) 设置主机名
7) 检查并挂载所有文件系统
8) 初始化硬件设备
9) 启用软件磁盘阵列与LVM
10) 如有必要,卸载/initrd/
11) 初始化串行端口设备
三角形英语怎么说rectangle12) 清除过期的锁定文件与IPC文件
13) 重新设置磁盘参数
2. /etc/rc.d/rc
&  /etc/rc.d/rc 用来建立Runlevel的环境,在不同的运行级别中调用相应级别的环境参数。
3. /etc/rc.d/rc.local
&  整个系统启动过程中rc.local 是唯一一个可以修改的RC Script,如果你希望在RHEL启动过程中执行某些命令,或者执行某些工作的话,那么你可以将相关命令在这个文件中定义,当RHEL开机并执行到rc.local 时,就可以依照你所定义的内容,完成系统的初始化。
4. 建立用户接口
&  在执行完3个主要的RC Script 后,init服务的最后一个工作就是建立RHEL的用户界面。此时init会执行以下两项工作:
建立虚拟控制台
默认在系统中建立6个虚拟控制台,在TTY1-TTY6中执行/bin/login登录程序;
建立图形使用接口的登录程序
若默认进入级别5,则启动X Window System图形化使用接口的登录程序。
&  至此,RHEL结束整个系统启动过程,进入系统。
programme是什么意思中文翻译
五. 其它相关
1. Runlevel
&  通常Run level 由以下几种:
Runlevel 0          关机
Runlevel 1          单用户模式          仅root用户可登
Runlevel 2          多人模式            无网络
linux操作系统镜像
Runlevel 3          命令行模式   
Runlevel 4          保留
Runlevel 5          图形模式
Runlevel 6          重新启动
&  查看目前的Runlevel
【root@linux ~】# runlevel
N    5
-----前面的数字代表之前运行的级别,这里为N说明开机默认级别为5,后面的数字为当前系统的运行级别。
&  切换至不同的Runlevel,直接在init后空格输入要运行的启动级别数字即可,如:
    【root@linux ~】# init 3
    ----表示将系统切换至运行级别3,即命令行运行模式
2. 管理init服务
&  在RHEL系统启动过程中,init服务是系统第一个执行的程序,它主要负责以下几项任务:
建立系统使用环境;
确保系统正常运行;
监控串行端口的周边设备;
拦截并处理【Ctrl + Alt + Del】事件;
PID(进程标识符)永远为1;
所有程序都可视为其子进程,因此无法被系统管理者中止。
&  init的配置文件:/etc/inittab
----我们可以通过它来配置一些相关系统参数,在相关事件上定义系统如何处理。
----文件中系统用“ ”将文件内容分为四个字段:
ID RUNLEVELS ACTIONS PROCESS
--ID:init参数的识别名称,由1-4个字符组成;
-- RUNLEVELS:表示由哪些RUNLEVEL要调用这个参数;
-- ACTIONS:init执行程序的方法;
-- PROCESS:要执行的程序文件,其程序路径为绝对路径。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。