Linux系统启动基本流程

Linux开机流程

如下图

开机启动

  1. 00×01、BISO自检

    硬件检查,检查硬件完整性,之后从开机BIOS开机硬件列表选择BOOT设备

    2. 00×02、MBR引导

    从bootloader446字节(只会读取一个硬盘的MBR),读取引导程序,读取分区表4*16字节,从MBR后一部

分扇读取数据,进入GRUBstage1.5,在这部分扇区寻找 文件系统驱动识别/boot分区

   3. 00×03、GRUB

    进入GRUBstage2阶段,读取GRUB配置文件grub.conf,确定root文件系统对应的磁盘分区,读取/initrd

(ramfs).-version.img内核镜像文件位置,加载内核模块

    4. 00×4、加载kernal

    加载kernal,探测硬件设备,确定硬件设备类型,从initrd/ramfs中加载对应的驱动,以只读readonly的方式 

挂载rootfs,启动第一个用户空间进程/sbin/init(cet6为upstart名字依旧叫init)

    5. 00×5执行/sbin/init(用户空间第一个进程

    A、  读取/etc/inittab

    inittab中定义了系统启动级别:0关机1单用户2无NFS的多用户文本界面3多用户文本界面4未启用5图形界面

    6. 重启

 id:3:initdefault: 

  • 每一行定义一种action以及与之对应的process

id:runlevel:action:process
action:
wait: 切换至此级别运行一次
respawn:此process终止,就重新启动之
initdefault:设定默认运行级别; process省略
sysinit:设定系统初始化方式,此处一般为指定
/etc/rc.d/rc.sysinit
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1...
l6:6:wait:/etc/rc.d/rc 6 

    B、/etc/rc.d/sysinit 系统初始化脚本
    (1) 设置主机名
    (2) 设置欢迎信息
    (3) 激活udevselinux
    (4)
挂载/etc/fstab文件中定义的文件系统
    (5) 检测根文件系统,并以读写方式重新挂载根文件系统
    (6) 设置系统时钟
    (7) 激活swap设备
    (8) 根据/etc/sysctl.conf文件设置内核参数
    (9) 激活lvmsoftware raid设备
    (10) 加载额外设备的驱动程序

    (11) 清理操作

    C、根据启动级别启动/etc/rc.d/rc{0..6}.d/*服务脚本下指定的脚本

    rc N –> 意味着读取/etc/rc.d/rcN.d/
    K*: K##*
##运行次序;数字越小,越先运行;数字
    越小的服务,通常为依赖到别的服务
    S*: S##*##运行次序;数字越小,越先运行;数字
    越小的服务,通常为被依赖到的服务
   

 for srv in /etc/rc.d/rcN.d/K*; do
            $srv stop
    done
    for srv in /etc/rc.d/rcN.d/S*; do
        $srv start
    done 

    D、getty(mingetty) /bin/login shell

    当我们看到mingetty的登录界面时,我们就可以输入用户名和密码来登录系统了。

    Linux的账号验证程序是login,login会接收mingetty传来的用户名作为用户名参数。然后
login会对用户名进行分析:如果用户名不是root,且存在/etc/nologin文件,login将输出
nologin文件的内容,然后退出。这通常用来系统维护时防止非root用户登录。只有/etc/securetty中登记了的终端才允许root用户登录,如果不存在这个文件,则root可以
在任何终端上登录。

    /etc/usertty文件用于对用户作出附加访问限制,如果不存在这个文件,
则没有其他限制。
在分析完用户名后,login将搜索/etc/passwd以及/etc/shadow来验证密码以及设置账户
的其它信息,比如:主目录是什么、使用何种shell。如果没有指定主目录,将默认为根目
录;如果没有指定shell,将默认为/bin/bash。

     login程序成功后,会向对应的终端在输出最近一次登录的信息(在/var/log/lastlog中有
记录),并检查用户是否有新邮件(在/usr/spool/mail/的对应用户名目录下)。然后开始设置
各种环境变量:对于bash来说,系统首先寻找/etc/profile脚本文件,并执行它;然后如果用
户的主目录中存在.bash_profile文件,就执行它,在这些文件中又可能调用了其它配置文
件,所有的配置文件执行后后,各种环境变量也设好了,这时会出现大家熟悉的命令行提示
符,到此整个启动过程就结束了。


原创文章,作者:Az2h1丶,如若转载,请注明出处:http://www.178linux.com/79551

(0)
Az2h1丶Az2h1丶
上一篇 2017-07-09 16:34
下一篇 2017-07-09 17:15

相关推荐

  • LVM逻辑卷管理

    一、简述 什么是逻辑卷?LVM(Logical Volume Manager)利用Linux内核device-mapper实现存储系统的虚拟化。通过LVM,把底层存储硬件抽象化成存储逻辑块,再将这些逻辑块集合构成存储池,从存储池空间划分分区,可以简单地扩大或缩小分区,而不用担心硬盘没有足够的连续空间。 使用逻辑卷分区有什么用?使用逻辑卷分区重点在于可以弹性地…

    Linux干货 2016-09-06
  • 马哥教育网络班22期+第1周课程练习

    一、描述计算机的组成及其功能。 组成:CPU (运算器+控制器),存诸器(内存与硬盘),输入设备,输出设备。 运算器:对数据进行加工处理的部件(包括算述运算与逻辑运算)。 控制器:负责从存储器取出指令,按指令的要求发出控制信号,使各部件协调的,一步步的完成各种操作。 存储器:计算机记忆或暂存数据的部件 输入设备:人机接口,负责输入信息(数据与指令)转成计算机…

    Linux干货 2016-08-15
  • Linux第四周总结

    1、复制/etc/skel目录为/home/tuser1, 要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 2、编辑/etc/group文件,添加组hadoop。 3、手动编辑/etc/passwd文件新增一行,添加用户hadoop, 其基本组ID为hadoop组的id号;其家目录为/home/hadoop。 4、复制/etc/…

    2017-07-24
  • Linux网络简单设置

     修改IP地址:临时修改IP地址(centenos 7以前版本)ifconfig eth0 x.x.x.x netmask x.x.x.x                   修改…

    Linux干货 2017-08-19
  • 编译安装apache

    编译安装apache可简单分为3步: 第一步:下载apache软件包解决依赖关系并生成Makefile 1.首先准备开发环境,可以通过yum安装开发包组:yum groupinstall Development Tools 2.准备apache软件包,可以通过http://httpd.apache.org下载到本地。随后解包tar -xf httpd-2.4…

    Linux干货 2017-12-03
  • 第二十二周作业

    1、请描述本地文件系统和分布式文件系统的特点; 本地文件系统: 本地文件系统主要是指Ext2,Ext3,Btrfs,XFS这类(很难概括,只好举例子),它们通常提供以下功能: 1.扩展性:随着系统容量的增加保持性能,不随容量变化而导致性能震荡。比如一个目录下的海量文件,在EXT2/3中由于目录设计问题会导致较大的性能问题。再比如EXT2/3中的Metadat…

    2017-09-23