Linux 开机启动流程

  • BIOS(Basic Input Output System)是 PC 机启动时加载的第一个软件。其实,它是一组固化到计算机主板上一个芯片上的程序,它保存着计算机最重要的输入输出程序、开机后自检程序和系统自启动程序,它可以从 CMOS 中读写系统设置的具体信息

硬件启动

  • 1)Power On --》BIOS 进行硬件检查(CPU、内存、主板、硬盘等)
  • 2)BIOS 根据计算机设置的启动顺序(是从光驱还是从硬盘启动等),查找启动介质
  • 3)如果是从硬盘启动,BIOS 读取硬盘的 MBR(硬盘的0柱面、0磁头、1扇区称为主引导扇区)
MBR 大小512字节,分为三个部分
主引导程序:446字节 这个主引导程序可能是 grub,也可能是 lilo(过老,基本不使用)
硬盘分区表 DPT:64字节,每个分区要占用16个字节
分区结束标记也叫硬盘有效标志:2字节,固定为 55AA

GRUB 引导

  • 4)读取 stage1,然后读取 stage1_5 加载 /boot对应的文件驱动,就可以读取 /boot/grub/stage2
  • GRUB 引导程序由三块组成
stage1:MBR 区前 446 字节
stage1_5:加载驱动 /boot 分区所对应的系统驱动被写到 2~63 扇区,MBR 当中会有地址指向这些扇区
stage2:在文件系统里面 /boot/grub/stage2

内核引导

  • 5)stage2 通过 /boot/grub/grub.conf配置文件来加载 Linux 内核和 Linux 映像
  • 内核和映像在 /boot
[root@tina grub]# cat grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda3
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0 // 使用第一个 title
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu // 隐藏菜单,按任意键显示菜单
title Red Hat Enterprise Linux (2.6.32-431.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=UUID=e35bcb79-1fce-49cf-913f-b902006ae751 rd_NO_LUKS rd_NO_LVM LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-431.el6.x86_64.img

init 引导

  • 6)系统初始化阶段

  • 系统的第一个进程:init 进程,该进程是系统所有进程的父进程

  • init 进程读取配置文件 /etc/inittab,该文件最主要的作用就是设定 Linux 的运行级别

  • init 进程执行 /etc/rc.d/rc.sysinit脚本对系统进行初始化

  • /etc/rc.d/rcX.d:X 表示运行级别,根据不同的启动级别执行不同目录内的以 S 开头的脚本

  • /etc/rc.d/rc.local 是在一切初始化工作完成后,Linux 留给用户自定义的地方

  • /etc/rc.d/rc3.d目录为例,该目录下存放一系列的链接文件,链接到/etc/rc.d/init.d/目录下的脚本文件,开机时执行以 S 开头的脚本,关机时执行以 K 开头的脚本

  • 在字母S或K 后面会跟着两位数字,数值小的在数值大的前面执行

[root@localhost rc3.d]# ll
total 0
lrwxrwxrwx. 1 root root 16 Jul 4 2016 K01smartd -> ../init.d/smartd
lrwxrwxrwx. 1 root root 17 Jul 4 2016 K02oddjobd -> ../init.d/oddjobd
lrwxrwxrwx. 1 root root 17 Jul 4 2016 K05wdaemon -> ../init.d/wdaemon
......
lrwxrwxrwx. 1 root root 17 Jul 4 2016 S01sysstat -> ../init.d/sysstat
lrwxrwxrwx. 1 root root 22 Jul 4 2016 S02lvm2-monitor -> ../init.d/lvm2-monitor
lrwxrwxrwx. 1 root root 19 Jul 4 2016 S08ip6tables -> ../init.d/ip6tables
  • 7)执行 /sbin/mingetty脚本开启 TTY
  • 8)字符界面登录:
  • 用户登录时需要用户名和密码,需要访问/etc/passwd/etc/shadow文件
  • 如果用户名和密码错误,则拒绝登录
  • 如果用户名和密码正确可以登录成功,会执行 4 个脚本
/etc/profile
~/.bash_profile
~/.bashrc
/etc/bashrc
  • 9)图形界面登录:执行 /etc/X11/prefdm脚本启动图形界面,其他的和字符界面登录一样
gdm:进入 Gnome 桌面
kdm:进入 KDE 桌面
xdm:启动 X Window

Linux 开机引导流程的更多相关文章

  1. 9.Linux系统引导流程

    一.Linux系统引导流程 当我们按下主机电源键的那时候开始,主板上的CMOS/BIOS模块将进行固件自检,以此检查各个硬件是否正确连接. 在Linux引导流程中,一般可以分为以下几个主要过程: 1. ...

  2. (转)Linux 开机引导和启动过程详解

    Linux 开机引导和启动过程详解 编译自:https://opensource.com/article/17/2/linux-boot-and-startup作者: David Both 原创:LC ...

  3. Linux 开机启动流程

    Linux的开机启动流程 1.开机BIOS自检                                             --> 检查CPU,硬盘等硬件信息 2.MBR[Major ...

  4. Linux 开机引导和启动过程详解

    你是否曾经对操作系统为何能够执行应用程序而感到疑惑?那么本文将为你揭开操作系统引导与启动的面纱. 理解操作系统开机引导和启动过程对于配置操作系统和解决相关启动问题是至关重要的.该文章陈述了 GRUB2 ...

  5. linux 启动引导流程

    课程大纲: Linux引导流程 Linux运行级别 Linux启动服务管理 GRUB配置与应用 启动故障分析与解决 系统引导流程 1.固件firmware(CMOS(固化在硬件上的程序与硬件统称)/B ...

  6. 第14章 Linux开机详细流程

    本文目录: 14.1 按下电源和bios阶段 14.2 MBR和各种bootloader阶段 14.2.1 boot loader 14.2.2 分区表 14.2.3 采用VBR/EBR方式引导操作系 ...

  7. linux开机启动流程及需要开机启动服务讲解和修改及防火墙

    linux系统从开机到登陆的启动流程. 1.开机BIOS自检 2.MBR引导 3.grub引导菜单 4.加载内核kernel 5.启动init进程 6.读取inittab文件,执行rc.sysinit ...

  8. Linux开机启动流程

    开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程:       1)加载BIOS       2)读取MBR       3)Boot Loader       4)加载内核    ...

  9. 简述Linux开机启动流程

    计算机开机是一个神秘的过程.我们只是按了开机键,就看到屏幕上的进度条或者一行行的输出,直到我们到达登录界面.然而,计算机开机又是个异常脆弱的过程,我们满心期望的登录界面可能并不会出现,而是一个命令行或 ...

随机推荐

  1. Linux实战教学笔记11:linux定时任务

    第十一节 linux定时任务 标签(空格分隔): Linux实战教学笔记 ---更多资料点我查看 1.1 定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种 ...

  2. Dockerfile 构建镜像 - 每天5分钟玩转容器技术(13)

    Dockerfile 是一个文本文件,记录了镜像构建的所有步骤. 第一个 Dockerfile 用 Dockerfile 创建上节的 ubuntu-with-vi,其内容则为: 下面我们运行 dock ...

  3. 深入理解IOC

    1. IoC理论的背景 我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果我们打开机 ...

  4. 每天一道Java题[5]

    题目 String.StringBuilder.StringBuffer有什么异同? 解答 相同点:String.StringBuilder.StringBuffer都可以用来存储字符串. 不同点: ...

  5. 使用javascript生成当前博文地址的二维码图片

    前面的话 在电脑端发现一篇好的博文,想在手机上访问.这时,就必须打开手机浏览器输入长长的URL地址才行,非常不方便.如果在博客标题的后面跟一张小的图片,点击该图片后,出现一张二维码的大图,然后再通过手 ...

  6. JVM类加载续

    上一篇理解了JVM类加载过程的第一个阶段,这篇来说说剩下的阶段:验证.准备.解析.初始化.需要注意的是,这些阶段(解析除外)只是按照这个顺序开始,但是执行的过程中可能存在交叉. 验证:就是要对加载的二 ...

  7. 如何选择版本控制系统之二---Git的研发应用场

    之前写了一篇<如何选择版本控制系统 ---为什么选择Git版本控制系统>,地址是:http://www.cnblogs.com/goldenfish/p/6876864.html,有兴趣的 ...

  8. 求一个二维整数数组最大子数组之和,时间复杂度为N^2

    本随笔只由于时间原因,我就只写写思想了 二维数组最大子数组之和,可以  引用  一维最大子数组之和 的思想一维最大子数组之和 的思想,在本博客上有,这里就不做多的介绍了 我们有一个最初的二维数组a[n ...

  9. 开涛spring3(6.9) - AOP 之 6.9 代理机制

    Spring AOP通过代理模式实现,目前支持两种代理:JDK动态代理.CGLIB代理来创建AOP代理,Spring建议优先使用JDK动态代理. JDK动态代理:使用java.lang.reflect ...

  10. 开涛spring3(4.2) - 资源 之 4.2 内置Resource实现

    4.2  内置Resource实现 4.2.1  ByteArrayResource ByteArrayResource代表byte[]数组资源,对于“getInputStream”操作将返回一个By ...