zoukankan      html  css  js  c++  java
  • linux 启动过程

    不多说,先看图:

    BIOS(Basic Input/Output System),基本输入输出系统:该系统存储于主板的ROM芯片上,计算机在开机时,会最先读取该系统,然后会有一个加电自检过程,这个过程其实就是检查CPU和内存,计算机最基本的组成单元(控制器、运算器和存储器),还会检查其他硬件,若没有异常就开始加载BIOS程序到内存当中。

    只读存储器(Read Only Memory,ROM)。ROM所存数据,一般是装入整机前事先写好的,整机工作过程中只能读出,而不像随机存储器那样能快速地、方便地加以改写。ROM所存数据稳定,断电后所存数据也不会改变;随机存取存储器(Random Access Memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)

    MBR(Master Boot Record),主引导记录:MBR存储于磁盘的头部,大小为512bytes,其中,446bytes用于存储BootLoader程序,64bytes用于存储分区表信息,最后2bytes用于MBR的有效性检查。

    GRUB(Grand Unified Bootloader),多系统启动程序,其执行过程可分为三个步骤:

        Stage1:这个其实就是MBR,它的主要工作就是查找并加载第二段Bootloader程序(stage2),但系统在没启动时,MBR根本找不到文件系统,也就找不到stage2所存放的位置,因此,就有了stage1_5

        Stage1_5:该步骤就是为了识别文件系统

        Stage2:GRUB程序会根据/boot/grub/grub.conf文件查找Kernel的信息,然后开始加载Kernel程序,当Kernel程序被检测并在加载到内存中,GRUB就将控制权交接给了Kernel程序。

    Kernel,内核:Kernel是Linux系统最主要的程序,实际上,Kernel的文件很小,只保留了最基本的模块,并以压缩的文件形式存储在硬盘中,当GRUB将Kernel读进内存,内存开始解压缩内核文件。Kernel会以只读方式挂载根文件系统,当根文件系统被挂载后,开始装载第一个进程(用户空间的进程),执行/sbin/init,之后就将控制权交接给了init程序。

    init,初始化:顾名思义,该程序就是进行OS初始化操作,

      1、激活udev和selinux;2、根据/etc/sysctl.conf文件,来设定内核参数;3、设定系统时钟;4、装载硬盘映射;5、启用交换分区;6、设置主机名;7、根文件系统检测,并以读写方式重新挂载根文件系统;8、激活RAID和LVM设备;9、启用磁盘配额;10、根据/etc/fstab,检查并挂载其他文件系统;11、清理过期的锁和PID文件

      执行完后,根据配置的启动级别,执行对应目录底下的脚本,最后执行/etc/rc.d/rc.local这个脚本,至此,系统启动完成。

    runlevel,运行级别:不同的级别会启动的服务不一样,init会根据定义的级别去执行相应目录下的脚本,Linux的启动级别分为以下几种:

      0:关机模式

      1:单一用户模式(直接以管理员身份进入)

      2:多用户模式(无网络)

      3:多用户模式(命令行)

      4:保留

      5:多用户模式(图形界面)

      6:重启

  • 相关阅读:
    表单参数使用场景
    [自己项目中的]表单定制的限制
    堂妹发给我的
    处理针式打印的宽度超界的一些办法(一)
    delegate或event序列化的一个问题
    让图片出现幻影效果的CSS代码
    鼠标悬停出现图片提示的代码
    用CSS实现的图片透明度链接效果代码
    让图片水平循环飞舞的JavaScript代码
    Javascript+CSS实现漂亮带缓冲效果的图片展示代码
  • 原文地址:https://www.cnblogs.com/liuxgcn/p/11172261.html
Copyright © 2011-2022 走看看