Linux系统初始化流程:系统初始化相关基础知识

Linux系统初始化流程:系统初始化相关基础知识

内核简介

  • 内核的功能

    1. 进程管理:通过task_struct, scheduler 实现
    2. 内存管理
    3. I/O管理:中断以及中断处理
    4. 文件系统管理:ext3,ext4,xfs 等
    5. 驱动程序
    6. 安全相关:SELinux,各种加密库
    7. 通用软件,平台相关软件
  • 内核设计流派

    1. 单内核:单一体系结构

      • linux 为单一内核
      • 模块化设计:核心+外围功能性模块
      • 外围模块:,ko结尾的 kernel object。通常在/lib/modules 下面的各目录中
      • 内核支持动态装在模块
    2. 微内核:多内核子系统 (windows, solaris)
    3. fork() 用户空间内核的管理:

      • init :负责用户空间进程的管理
      • init :PID 为1,第一个用户空间的任务
      • 所在目录: /sbin/init:

系统初始化流程

Linux系统初始化流程:系统初始化相关基础知识

  • POST:硬件开机自检,探测硬件设备,初始化内存,CPU等。
  • BIOS:按照bios中的分区启动顺序启动
  • MBR (Master Boot Record):读取主引导记录

    • Boot loader ( 446 bytes ):用于加载内核并读取分区信息的程序
    • Partition Table ( 64 bytes ):分区记录
    • SA:MBR有效标志位
  • kernel 装载:

    • bootloader 装载boot所在分区的内核到内存中,bootloader只有基本磁盘分区文件系统驱动,只能识别基本分区
    • initrd (centos5) /initramfs (centos6 ):内存模拟根文件系统,读取并装载真正根文件系统所需要的驱动
    • 真正根文件系统成功识别后,替换掉临时根文件系统
  • init :真正根文件系统挂载成功后,init将开始运行初始化用户空间的程序与服务

    • SysV 风格:Centos5 的init脚本

      1. 串行话:需按照依赖关系顺序初始化进程,A–B–C
      2. 前一个进程初始化完成后,才能初始化后一个
    • Upstart :由ubuntu 研发

      1. dbus:可以在前一个进程启动一部分时就开始下一个进程启动
      2. 速度比SysV快
    • SystemD :参考so x的初始化过程,速度更快

系统运行级别

  • linux系统包含 0-6 共7个运行级别

    1. 0:关机
    2. 1:单用户模式,直接以root用户登陆,用户破译密码
    3. 2:多用户模式,不支持NFS文件系统
    4. 3:完全多用户模式,文本shell
    5. 4:预留级别
    6. 5:完全多用户模式,图形shell
    7. 6:重启
  • SysV 风格的/sbin/init的配置文件, /etc/inittab, 每一行指定一种操作

Linux系统初始化流程:系统初始化相关基础知识

  1. id : 操作的ID
  2. runlevels:设置在哪些运行级别下执行此操作,不写为所有级别
  3. action:[ACTION_CMD] 动作,指定如何进行操作的操作

    • initdefault:设置默认运行级别,无需定义操作
    • sysinit:指定系统初始化脚本例如:si::sysinit:/etc/rc.d/rc.sysinit
    • wait:等到系统切换到次级别时运行一次
    • ctrlaltdel:指定组合件所执行的命令
    • respawn:当制定操作进程被关闭后立即再从启一次
  4. process :操作,具体运行的程序

init 命令的主要任务

  • init 的主要任务:

    1. 设置默认运行级
    2. 指定系统运行的初始化脚本
    3. 启动指定级别下要启动的服务,开关闭需要停止的服务

      • /etc/init.d/:服务脚本所在位置
        Linux系统初始化流程:系统初始化相关基础知识
      • /etc/rc.d/rcN.d (0-6)/ :不同级别下要操作的服务文件夹

        • S## 需要在##开启
        • K## 需要在##关闭
          Linux系统初始化流程:系统初始化相关基础知识
    4. 定义组合键CtrlAltDel的动作
    5. 初始化字符终端,对应设备为:

      • /dev/tty#, /dev/ttyS#, /dev/console, /dev/pts/#
      • 调用:login–>/etc/issue
    6. 启动图形中断:x-windows
  • 系统初始化脚本的 /etc/rc.d/rc.sysinit

    1. 设置主机名
    2. 打印欢迎信息
    3. 激活SELinux和udev
    4. 激活swap
    5. 挂载/etc/fstab定义的本地文件系统
    6. 检测根文件系统并对其以读写方式重新挂载
    7. 设置系统时钟
    8. 装载键盘映射
    9. 根据/etc/sysctl.conf设置内核参数
    10. 激活RAID和LVM设备
    11. 清理操作

MBR ( Master Boot Record)中bootloader介绍

  • MBR 中的 bootloader 程序

    • LILO:LInux LOder 早起的bootloader :不能引导位于1024 Cylinder 以后分区中的os逐渐过时
    • GRUP:GRand Unified Bootloader ,启动时候有两个阶段

      1. 1st stage:位于MBR中, 为了引导2nd stage
      2. 1.5st stage :位于boot基本磁盘分区中国,为识别内核文件所在的文件系统识别和拓展
      3. 2nd stage :位于boot基本磁盘分区GRUB的引导程序

        • boot分区大小:CentOS5 100M, Centos6 200M
        • 所在目录: /boot/grub/ stage2的配置文件,grub.conf
  • Grub的功能:

    1. 选择启动的内核或系统, 可以隐藏选择界面
      Linux系统初始化流程:系统初始化相关基础知识
    2. 提供交互式接口,e 进入编辑模式
      Linux系统初始化流程:系统初始化相关基础知识
    3. 基于密码保护

      • 启动内核映像时:定义在配置文件中相应的title下
      • 传递参数(进入编辑模式时):定义在全局字段中
  • grub接口:
    • title:操作系统或者内核的标题
    • root:设置内核文件所在的分区作为grub的跟,无论硬盘是什么,都以hd#.#表示
    • kernel :定义要使用的内核文件,后面可以附加传递
    • initrd:指定为内核提供额外驱动等功能的ram disk或ram fs
  • init 运行级别参数传递,级别为1时为单用户模式,用户密码修改

    • 表示方法: 1,s,single,S

                    Linux系统初始化流程:系统初始化相关基础知识

    • 单用户模式几乎不会启动任何服务,且不需要用户登录,但是会执行/etc/rc.d/rc.sysinit脚本;
    • 如是连/etc/rc.d/rc.sysinit文件也不加载,则传递 emergency
      单用户启动后,无需身份认证,直接root,此时可以进行设置密码的操作
      Linux系统初始化流程:系统初始化相关基础知识
  • grub的配置文件,grub.conf 语法格式
    Linux系统初始化流程:系统初始化相关基础知识

title  
 root (hd0,0) 
     (Device,Part) :  
     Device 在grub中,统统以hd开头,并紧跟一个数字做各磁盘设备的标记,从0开始编号 
     Part 代表分区,从0开始编号 
 kernel :指定内核文件以及传递给内核的参数 
     内核文件位置:/vmlinux (这里的根是boot目录) 
     参数:ro root=/path/to/DEVICE quiet 
 initrd : 文件:通常为cpio归档,并使用gzip压缩;通常以.img作为文件名后缀; 
     /initrafs (这里的根是boot目录) 

  • grub 的安装,如果MBR中签446bytes 损坏,则需要修复bootloader,通常需要系统启动盘,在紧急救援模式下进行,需要版本对应。以下以手工破坏MBR为例 演示,重启后,系统已经无法挂载
    Linux系统初始化流程:系统初始化相关基础知识

         Linux系统初始化流程:系统初始化相关基础知识

第一种方式:插入系统光盘后以紧急救援模式启动,如果分区信息没有损坏原系统根目录会自动挂在到/mnt/sysimage

        Linux系统初始化流程:系统初始化相关基础知识Linux系统初始化流程:系统初始化相关基础知识

        chroot /mnt/sysimage
        grub-install --root-directory=/ /dev/sda

        这里的–root-directory 变量应该指向boot目录的上一层目录, 后面接需要安装bootloader的硬盘设备

第二种方式: 直接进入grub命令行接口进行安装

        Linux系统初始化流程:系统初始化相关基础知识

    chroot /mnt/sysimage
    grub ## 进入grub 命令行接口
    grub> root (hd#,#)
    grub> setup (hd#)
    grub> quit

原创文章,作者:以马内利,如若转载,请注明出处:http://www.178linux.com/432

(0)
以马内利以马内利
上一篇 2015-02-28 16:52
下一篇 2015-03-02 09:23

相关推荐

  • shell三剑客之grep

    正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。 给定一个正则表达式和另一个字符串,我们可以达到如下的目的: 1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”); 2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。 正…

    Linux干货 2016-08-08
  • M22 使用光盘修复Centos实验初探

    实验目的: 服务器由于文件丢失等原因造成无法启动,可以使用光盘引导启动服务器,然后对服务器进行修复。 实验环境: VMware12安装Centos6.8虚拟机 Centos6.8的光盘镜像 实验原理: 手动删除虚拟机上的rpm程序文件,使用光盘镜像恢复安装rpm程序。 实验过程: 1、     执行命令删除rpm程序,…

    2017-03-06
  • 进程管理

    一、进程概述 1、进程的概念        用户通过执行命令,将程序提起到内存中运行,运行中的程序即称为进程。内核为了方便管理,根据内核发起者的权限、属性等参数,为每个进程设置一个独立的PID号,通过PID号来判断进程的权限。 2、进程的分类:    &nbs…

    Linux干货 2016-09-07
  • 命令(2017.5.16-2017.519-部分)

    命令(1) bc  计算器 dd if=/dev/zero 查看逻辑设备(非硬件) dd if=/dev/sd 查看硬件设备 dd if=/dev/zeroof=file bs=1M count=24  写入磁盘速度 dd if=/dev/zeroof=/dev/null bs=1M count=24  测试…

    Linux干货 2017-05-22
  • 程序包管理

    什么是程序包管理器?     顾名思义,就是将编译好的应用程序的各组成文件打包成一个或多个程序包文件,从而更方便地实现程序包的安装、升级、卸载还有查询等管理操作。 那么一个程序包又由哪些部分组成呢? 程序包的组成清单:   文件清单(每个程序包都单独实现):       安装或卸载时运行的脚本,有如下四类:     preinstall : 安装过程开始之前…

    Linux干货 2016-12-16
  • N25期—第一周作业

    计算机的组成及其功能 计算机主要由硬件和软件两部分组成, 硬件目前由5大部件组成 控制器:类似人类的大脑!控制整个计算机的运作 运算器:对数据进行逻辑运算处理 存储器:存放数据部件 输出设备:比如显示器,打印机 输入设备:比如键盘,鼠标 Linux发行版本 主要三大分之:Debian系,Reb Hat系,Slackware系。 1.Debian GNU / …

    Linux干货 2016-12-01

评论列表(2条)

  • 追马
    追马 2015-02-28 17:51

    总结的很详细,赞一个

  • stanley
    stanley 2015-02-28 18:03

    文档功底及认真的态度可见一斑,只是本地迁移到在线格式上稍乱了些,赞 加油 :mrgreen: