系统启动流程

  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. 【Alpha】Daily Scrum Meeting——blog1

    团队成员 吴吉键 201421122007(组长) 魏修祺 201421122008 孙劲林 201421122022 1. 会议当天照片 忘记拍了,能补上不? 2. 每个人的工作 3. 燃尽图

  2. SAP 前端技术的演化史简介

    Jerry之前曾经写过一篇微信公众号文章,题目叫<> 关注我的公号"汪子熙"后,在历史菜单"前端开发相关"里即可找到这篇文章: 该文章简单回顾了SA ...

  3. 什么是SEO服务,企业为什么要做SEO?

    SEO服务: 1. 网站提交服务 网站提交是非常重要的,尤其是英文网站(英文网站可以提交到世界各国比较出色的搜索引擎).网站的提交,增加了潜在客户找到网站的机会.网站的提交是一个不断更新的过程,因为搜 ...

  4. mysqldump.md

    mysqldump命令 选项 -A, --all-databases:导出全部数据库 -Y, --all-tablespaces:导出全部表空间. -y, --no-tablespaces:不导出任何 ...

  5. Kubernetes中的资源调度与资源管理

    一.scheduling:把pod放到node上 1.最小调度单元:pod 2.1.8的版本后,最大支持5000个node 3.scheduling由两个部分组成: 3.1 Predicates:过滤 ...

  6. Python - 格式化字符串的用法

    0. 摘要 Python支持多种格式化字符串的方法,包括%-fromatting.str.format().f-strings三种,f-strings是Python3.6以后出现的一种新方法,相比其他 ...

  7. pytest 框架自动化Selenium 之yield 使用

    环境 python 3.7 由于3.0-3.5以下部分pytest可能有部分兼容问题安装建议2.7-2.9,3.5-最新 pip install pytest专属 pytest框架包 pip inst ...

  8. Spring源码分析(三)容器核心类

    摘要:本文结合<Spring源码深度解析>来分析Spring 5.0.6版本的源代码.若有描述错误之处,欢迎指正. 在上一篇文章中,我们熟悉了容器的基本用法.在这一篇,我们开始分析Spri ...

  9. js判断设备信息,安卓、ios、还是pc端

    前端开发获取设备信息的代码if (/(iPhone|iPad|iPod|iOS)/i.test(navigator.userAgent)) { window.location.href =" ...

  10. sar命令使用详解

    一:命令介绍:参考资料:http://linux.die.net/man/1/sar sar(System ActivityReporter系统活动情况报告)是目前Linux上最为全面的系统性能分析工 ...