多数操作系统的启动流程:

BIOS启动自检 ->MBR引导->执行引导程序GRUB->加载内核->执行init->runlevel

 

  1. BIOS(Basic Input Output System)

    负责检查硬件并且查找可启动设备,如USB、CDROM、HD。

     

  2. MBR

    BIOS找到可启动设备后执行其引导代码,引导代码为MBR(共512字节)的前446字节。

    引导代码为操作系统的引导程序。

     

  3. GRUB

    Grub是现在Linux使用的引导程序。(诸如window下的ntldr)

    可以引导大多数的操作系统。

    grub相关文件保存在/boot/grub。

    grub配置文件为/boot/grub/grub.conf。

     

    目录内含文件:

    /boot/grub/stage1 #MBR引导代码的镜像文件,如果MBR损坏,可拷贝过去。

    诸如/boot/grub/e2fs_stage1_5等以stage1_5后缀的文件是支持文件系统的加载文件。

    /boot/grub/stage2 #stage1引导完后的第二个引导文件

     

  4. Kernel

    MBR的引导代码将负责找到并加载Linux内核。

    内核保存在:/boot/vmlinuz-2.6.32-279.el6.i686

    一般还会加载内核模块打包文件:/boot/initramfs-2.6.32-279.el6.i686

    为保持Kernel的精简,一些不常用的驱动、功能编译成为模块,在需要的时候动态加载,这些模块被打包保存为一个initramfs文件。

    在需要的时候动态加载,而这些模块被打包保存为一个initramfs文件。

    initramfs是initrd的替代优化版本(早期Linux使用initrd文件)。

     

    通过dmesg命令或查看/var/log/dmesg文件,可查询此次启动的内核输出信息。(查询内核的某些故障有用)

 

  1. INIT

    init是LINIX系统运行的第一个进程,也是所有进程的父进程。

    init会一直存在,直到关机。

    作用:调用 /etc/rc.d/rc.sysinit负责对系统初始化,挂载文件系统,并且根据运行级别启动相应服务。

     

    Linux运行级别:

    1. 关机,
    2. 单用户模式,
    3. 不带网络的多用户模式,
    4. 多用户模式,
    5. 未使用
    6. XII图形化模式
    7. 重启

     

    可通过/etc/inittab配置文件修改默认的运行级别;

    每个级别对应的启动服务保存在/etc/rc.d/rc[0123456].d各目录中。

    命令:

    runlevel:显示上一个和当前运行的级别。

    init:可改变当前的运行级别。

     

     

    单用户修改密码:

    为内核传递参数"1"或"single"可系统进入单用户模式;

    单用户模式下不启动任何服务,并直接以root用户登陆,不需要密码。

    此时可以使用passwd修改root密码。

     

    GRUB加密:

    通过在grub.conf中的grub.conf的启动配置的首行中加入如下参数即可对grub进行加密:

    password –md5 …………………………………………… #点为密码

     

    加密后的密码可以通过grub-md5-crypt生成。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

Linux学习笔记17--Linux系统启动详解的更多相关文章

  1. Linux学习之文件特殊权限详解(SetUID、SetGID、Sticky BIT)(十一)

    Linux学习之文件特殊权限详解(SetUID.SetGID.Sticky BIT) 目录 SetUID SetGID Sticky BIT SetUID SetUID简介 只有可以执行的二进制程序和 ...

  2. IP2——IP地址和子网划分学习笔记之《子网掩码详解》

    2018-05-04 16:21:21   在学习掌握了前面的<进制计数><IP地址详解>这两部分知识后,要学习子网划分,首先就要必须知道子网掩码,只有掌握了子网掩码这部分内容 ...

  3. linux学习笔记2 - linux常用命令

    转载请标注原链接:http://www.cnblogs.com/xczyd/p/5543731.html 第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装lin ...

  4. Linux学习笔记之Linux启动级别

    对于绝大多数Linux程序员来说,进入Linux系统后一般看到的是黑乎乎的界面(开发模式),因为系统如果启动选择开发模式,会减少启动时间,优化内存等.但是通常我们刚安装完Linux系统,然后进去以后是 ...

  5. Linux学习笔记之Linux启动引导过程

    早期时,启动一台计算机意味着要给计算机喂一条包含引导程序的纸带,或者手工使用前端面板地址/数据/控制开关来加载引导程序.尽管目前的计算机已经装备了很多工具来简化引导过程,但是这一切并没有对整个过程进行 ...

  6. ubuntu学习笔记-tar 解压缩命令详解(转)

    tar 解压缩命令详解 -c: 建立压缩档案 -x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能 ...

  7. 【Java学习笔记之三十三】详解Java中try,catch,finally的用法及分析

    这一篇我们将会介绍java中try,catch,finally的用法 以下先给出try,catch用法: try { //需要被检测的异常代码 } catch(Exception e) { //异常处 ...

  8. jQuery学习笔记之Ajax用法详解

    这篇文章主要介绍了jQuery学习笔记之Ajax用法,结合实例形式较为详细的分析总结了jQuery中ajax的相关使用技巧,包括ajax请求.载入.处理.传递等,需要的朋友可以参考下 本文实例讲述了j ...

  9. Linux学习笔记之Linux相关知识

    [想成为某一方面的大神,没有捷径可走,只能不断的记录.练习.总结.coding……] notes:主要从网上摘录了一些关于Linux的历史以及一些相关内容,以便对Linux系统有一定的了解.这不但可以 ...

  10. [读书笔记]C#学习笔记三: C#类型详解..

    前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...

随机推荐

  1. QTP11的下载地址和破解教程

    qtp11 下载地址 http://pan.baidu.com/s/1rE3l6 qtp10的破解 下载注册机http://ishare.iask.sina.com.cn/f/20991520.htm ...

  2. 二分查找java代码

    public int find(long searchKey){ int i; int begin = 0; int end = nElems - 1; while(true){ i = (begin ...

  3. Android线程之AsyncTask

    在之前的博客中为大家分享过关于Android多线程处理,想必大家对于Android为什么要使用多线程已经有了清晰的认识,我就在简单唠两句,Android规定UI界面的更新必须在在主线程进行,对于访问网 ...

  4. 如何利用Direct NFS克隆数据库

    CloneDB是Oracle 11.2.0.3推出的一项新特性,它利用的了11g新引入的Direct NFS.它直接利用目标数据库的备份,无需将备份COPY到克隆环境下,使得一个备份可以克隆多个不同用 ...

  5. Java多线程系列--“JUC集合”04之 ConcurrentHashMap

    概要 本章是JUC系列的ConcurrentHashMap篇.内容包括:ConcurrentHashMap介绍ConcurrentHashMap原理和数据结构ConcurrentHashMap函数列表 ...

  6. Node.js的学习--使用cheerio抓取网页数据

    打算要写一个公开课网站,缺少数据,就决定去网易公开课去抓取一些数据. 前一阵子看过一段时间的Node.js,而且Node.js也比较适合做这个事情,就打算用Node.js去抓取数据. 关键是抓取到网页 ...

  7. Mybatis之Oracle增删查改示例--转

    http://blog.csdn.net/bingjie1217/article/details/21088431?utm_source=tuicool&utm_medium=referral ...

  8. mysql 命令重命名表RENAME TABLE 句法

    mysql 命令重命名表RENAME TABLE 句法 RENAME TABLE tbl_name TO new_tbl_name[, tbl_name2 TO new_tbl_name2,...]更 ...

  9. web接口测试之GET与POST请求

    关于HTTP协议,我考虑了一下觉得没必要再花一节内容来介绍,因为网上关于HTTP协议的介绍非常详细.本着以尽量避免介绍一空洞了概念与理论来介绍接口测试,我这里仍然会给出具体实例. 在此之前先简单的介绍 ...

  10. javascript学习5

    JavaScript Array(数组)对象 数组对象的作用是:使用单独的变量名来存储一系列的值. 实例 创建数组 创建数组,为其赋值,然后输出这些值. For...In 声明 使用 for...in ...