系统启动流程

  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. Call to undefined function mysqli_connect() in xx.连接数据库出现mysqli_connect()未定义的问题。

    这个是我在执行php代码的时候出现的一个错误,我在网上查了好久,也按照网上常用的方法去修改,都没有效果. 例如:1.新建一个php文件: <?php print phpinfo(); ?> ...

  2. wk_06.md

    IO与文件操作 文件内建函数open 内建函数open提供了初始化输入/输出(I/O)操作的通用接口.open()内建函数成功打开文件后会返回一个文件对象.open函数的语法如下: open(file ...

  3. python第二十一课——str中的常用函数(重要)

    演示str中常用的一些函数: 1.join():将容器对象以某种特定的格式(字符串)进行拼接组合,最后以字符串的形式返回 lt=['i','love','you','very','much'] str ...

  4. 20165318 2017-2018-2 《Java程序设计》第七周学习总结

    20165318 2017-2018-2 <Java程序设计>第七周学习总结 目录 学习过程遇到的问题及总结 教材学习内容总结 第11章 JDBC与MySQL数据库 错题总结 第五周错题总 ...

  5. Codeforces 1106 E. Lunar New Year and Red Envelopes 优先队列+dp

    题意大致是Bob新年拿红包,每个红包可以在s-t时间内取,但是取了之后得在d+1时间开始才能继续取红包. 同时他女儿能在m个时间点阻止他取红包,求女儿阻止后Bob取得的w总和最小值. Bob取红包的策 ...

  6. PHP开发中遇到的问题

    1. 数据库连接 问题:在执行sql语句的函数中,因为strsql用单引号引住,所以里面的变量值无法获得, 方法一: 通过字符串连接的方式完成(.):‘字符串’+.变量来构成一条完整的sql语句.如下 ...

  7. new的三种形态

    C++语言一直被认为是复杂编程语言中的杰出代表之一,不仅仅是因为其繁缛的语法规则,还因为其晦涩的术语.下面要讲的就是你的老熟人—new: 它是一个内存管理的操作符,能够从堆中划分一块区域,自动调用构造 ...

  8. 代码中会话同步(同步redis)导致的异常问题

    背景: 第一天拷贝了一份tomcat(配置了redis会话同步),部署了erp-rocketmq应用(用作给顾客发送消息).            第二天早晨,整个erp系统出现异常情况: 1> ...

  9. JDK(九)JDK1.7源码分析【集合】HashMap的死循环

    前言 在JDK1.7&1.8源码对比分析[集合]HashMap中我们遗留了一个问题:为什么HashMap在调用resize() 方法时会出现死循环?这篇文章就通过JDK1.7的源码来分析并解释 ...

  10. 在Linux环境下设置ArcGIS Server 服务开机自启

    在 VMware 11.0 中安装了CentOS 6.5的Linux系统中部署ArcGIS Server,安装完后默认开机不自动启动此服务,每次开机都要手动启动(如下图所示),这样太麻烦.本文记录了设 ...