系统启动流程

  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第四课——运算符

    一.python中的运算符: 什么是运算符? 就是计算机语言中用来参与运算的符号!! 1.算数运算符: 符号:+ - * / %(取余,取模) //(取整) **(开方) 2.比较运算符: 特点:比较 ...

  2. virtualbox+vagrant学习-2(command cli)-25-Machine Readable Output

    Machine Readable Output机器可读的输出 每个vagrant命令都接受一个--machine-readable的标志,它支持机器可读的输出模式.在这种模式下,终端的输出被机器友好的 ...

  3. c++版 nms

    目前这个代码运行会报一些错误,还要再修改修改才行 #include<iostream> #include<vector> #include<algorithm> # ...

  4. 在不升级 mysql 的情况下直接使用 mysql utf8 存储 超过三个字节的 emoji 表情

    由于现在数据库的版本是5.5.2,但是看网上说要直接存储emoji表情,需要升级到5.5.3然后把字符集设置为utf8mb4,但是升级数据库感觉属于敏感操作. 考虑了多久之后直接考虑使用正则来替换,但 ...

  5. springboot项目打war包pom设置

    <build> <finalName>PayManager</finalName><!--打包后的名字PayManager.war--> <plu ...

  6. ajax和原生ajax、文件的上传

    ajax理解: ajax发送的请求是异步处理的.也就是说如下形式: function f1(){ $.ajax( { ....... success:function(){ a= return a } ...

  7. Python的 GUI 框架

    Python的 GUI 框架 Tkinter Python内嵌的gui环境,使用TCL实现,python IDLE由Tkinter实现 历史悠久,perl中有对应的perlTk.Python标准安装包 ...

  8. laravel5.5源码笔记(七、数据库初始化)

    laravel中的数据库也是以服务提供者进行初始化的名为DatabaseServiceProvider,在config文件的providers数组中有写.路径为vendor\laravel\frame ...

  9. C语言学习记录_2019.02.03

    优先级:算术运算符 > 关系运算符 > 赋值 ==和!=的优先级低于其他关系运算符 连续的关系运算符从左到右进行 注释:“//”或“/**/” 判断语句:if else 写代码有时看重的是 ...

  10. [转]Docker 生产环境之配置容器 - 限制容器资源

    默认情况下,容器没有资源限制,可以使用主机内核调度程序允许的给定资源.Docker 提供了一些方法来控制容器可以使用多少内存.CPU 或块 IO,并设置 docker run 命令的运行时配置标志.本 ...