系统启动流程

  1. BIOS
  2. MBR : Boot Code
  3. 执行引导程序-GRUB
  4. 加载内核
  5. 执行init
  6. runlevel

BIOS

  • BIOS(basic input output system),我们称之为基本输入输出系统,一般保存在主板的BIOS芯片中
  • 计算机启动第一个运行的就是BIOS,BIOS负责检查硬件并查找可启动设备
  • 可启动设备在BIOS设置中进行定义,如USB/CDROM/HD等

MBR

  • 扇区的前512字节储存MBR信息
  • BIOS通过MBR的最后两个字节是否是55aa来识别该设备是否是可启动设备
  • BIOS找到可启动设备后执行其引导代码
  • 引导代码为MBR的前446字节

GRUB

  • GRUB是现在Linux使用的主流引导程序
  • 可以用来引导现在几乎所有的操作系统
  • GRUB的相关文件保存在/boot/grub目录中
  • GRUB配置文件尾/boot/grub/grub.conf

GRUB加载顺序 :

  1. stage1(MBR的镜像,大小512字节)
  2. 文件系统名_stage1_5(增加对各个文件系统的支持,比如e2fs_stage1_5,xfs_stage1_5等)
  3. stage2
  4. 内核

内核

  • 引导代码将负责找到并加载Linux内核
  • Linux为保持内核的精简,将一些不常用的驱动,功能编译成模块,在需要的时候动态加载.而这些模块被打包保存为以个initramfs文件
  • 早期版本Linux使用initrd文件,initramfs是initrd的替代优化版,更加节省空间和灵活
  • 命令dmesg可以查看本次启动时内核的输出信息

INIT

  • init是Linux系统中运行的第一个进程
  • top 命令可以查看PID,其中1为init,init是所有进程的父进程,并且一直存在
  • init负责使用/etc/rc.d/rc.sysinit负责对系统进行初始化,挂载文件系统,并且根据运行级别启动相应服务

运行级别

  • Linux运行级别

    • 0 关机
    • 1 单用户模式
    • 2 不带网络的多用户模式
    • 3 多用户模式(常用的命令行模式)
    • 4 未使用
    • 5 xll 图形化多用户(常用的图形界面模式)
    • 6 重新启动
  • 默认的运行级别可以通过文件/etc/inittab 下配置修改
  • 命令runlevel 显示上个和当前运行级别
  • 命令init 数字 可以改变当前运行级别

单用户修改root密码

  • 为内核传递参数‘1’(运行级别1)或者“single”系统进入单用户
  • 单用户模式下不启动任何服务
  • 单用户模式直接以root用户登录,并且不需要密码
  • 可以使用passwd修改root密码

Linux入门基础(六):Linux系统启动的更多相关文章

  1. Linux入门基础(一):Linux基本操作

    命令行BASH基本操作 Shell 用户不能直接操作内核,所以用户操作通过shell传递给内核 shell分为两种 : GUI 图形界面 (linux一般是GNOME) CLI 命令行界面 (linu ...

  2. Linux入门基础(三):Linux用户及权限基础

    用户基础 用户和组 每个用户都拥有一个userid 每个用户都属于一个主组,属于一个或多个附属组 每个组拥有一个groupid 每个进程以一个用户身份运行,受该用户可访问资源限制 每个可登陆用户拥有一 ...

  3. Linux入门基础(七):Linux软件管理基础

    源代码形式 绝大多数开源软件都是直接以源代码形式发布 源代码一般会被打包成tar.gz的归档压缩文件 程序源代码需要编译成为二进制形式之后才能够运行 源代码基本编译流程 : ./configure 检 ...

  4. Linux入门基础(四):Linux网络基本配置

    网络基础 ip编址 ip编址是一个双层编址方案(网络部分和主机部分),一个ip地址标识一个主机(或一个网卡接口) 现在应用最广泛的是IPv4编址,已经开始逐渐向IPv6编址切换 IPv4地址32位长, ...

  5. linux入门教程(六) Linux文件与目录管理

    在linux中什么是一个文件的路径呢,说白了就是这个文件存在的地方,例如在上一章提到的/root/.ssh/authorized_keys 这就是一个文件的路径.如果你告诉系统这个文件的路径,那么系统 ...

  6. Linux入门基础(五):Linux管道,重定向,文本处理

    多命令协作:管道及重定向 在Linux中,大多数命令都很简单,每个命令往往只实现一个或几个很简单功能. 我们可以通过将不同功能的命令组合起来一起使用,达到完成某个复杂功能的目的 CLI下几乎所有的命令 ...

  7. Linux入门基础(二):Linux磁盘及文件管理系统

    磁盘管理 fdisk分区工具 只支持MBR分区 fdisk命令只有root用户能用 fdisk -l 列出所有安装磁盘及分区信息 fdisk /dev/sda (操作磁盘,按m可列出帮助界面,常用的操 ...

  8. Linux入门基础篇

    Linux入门基础篇 Linux诞生 Linux发行版本说明 Linux官方网站 Linux内核官方网站 比较有名的Linux发行版 虚拟机(Virtual Machine),一个虚拟的系统,安装在系 ...

  9. Linux入门基础之一

    Linux 入门基础 一.Linux 系统安装 安装方法网上很多,请自行百度 二.Linux 基本操作 2.1.GNOME图形界面基本操作 操作类似于Windows系统操作 打开每一个文件夹都会打开一 ...

随机推荐

  1. 通过 python-xmp-toolkit 读取图片xmlp信息

    这个模块使用很简单,下面是示例: file_name = '/path/to/xxx.JPG' from libxmp import XMPFiles, constsxmpfile = XMPFile ...

  2. Git学习文档——文件状态git status

    1.已经跟踪的文件有三种状态 已跟踪的文件,即被纳入版本控制的文件,又分为未修改(unmodified).已修改(modified).已暂存(staged)三种状态. 如图: 当在工作目录中新加入一个 ...

  3. 转 oracle的热备份和冷备份

    一.冷备份介绍:    冷备份数据库是将数据库关闭之后备份所有的关键性文件包括数据文件.控制文件.联机REDO LOG文件,将其拷贝到另外的位置.此外冷备份也可以包含对参数文件和口令文件的备份,但是这 ...

  4. 判断浏览器是否为ie的最快方法

    var ie = !-[1,]; alert(ie); 只要6 bytes!它利用了IE与标准浏览器在处理数组的toString方法的差异做成的.对于标准游览器,如果数组里面最后一个字符为逗号,JS引 ...

  5. jdk8环境下,添加重复注解的美好体验

    为了实现业务层缓存,定义了几个注解:@Cache.able.@Cache.put.@Cache.del 分别实现对业务方法的 缓存检测.缓存插入 和 缓存清除. public @interface C ...

  6. Java并发编程--5.信号量和障碍器

    Semaphore信号量 简介 它本质上是一个共享锁,限制访问公共资源的线程数目,它也被称为计数信号量acquire()许可一个线程, Semaphore – 1; 没有可用的许可时,Semaphor ...

  7. iptables基础配置

    启动指令:service iptables start   重启指令:service iptables restart   关闭指令:service iptables stop   规则相关配置:/e ...

  8. HDU 1715 (大数相加,斐波拉契数列)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1715 大菲波数 Time Limit: 1000/1000 MS (Java/Others)     ...

  9. 【VSC】.txt文件打开乱码

    我在拉取项目之后打开其备注文件查看,发现里面的中文乱码,在网上寻找解决方案自定义设置并没有什么作用. 回到文件目录用记事本打开,在里面随意输入中文,保存. 之后———— 恩,vscode中的该文本同步 ...

  10. js随笔记录

     1.当我们尝试优化一段程序的时候,必须要同时了解语言本身和运行环境就比如说,可能教科书上写移位操作比乘法运算要快,但是这是因为CPU指令的问题,所以对于C语言成立,对于跑在VM上的语言来说则不一定了 ...