#23 centos5(RHEL)系列操作系统的启动流程、与命令mkinitrd、dracut的使用

简介:

centos(RHEL)系列操作系统的启动流程:Intel x86兼容架构;


  Linux的系统组成:内核 + 应用程序  GUN/Linux:单纯的指Linux内核;


  从硬盘存储和启动操作系统的角度:


    Linux的系统组成:内核 + 根文件系统(rootfs)


    内核功能:进程管理,文件系统管理,内存管理,网络协议,驱动程序,安全功能,...


    Linux系统的系统运行环境可以分为两部分;

      内和空间:内核代码(系统调用)

        就是内核进程占用的CPU和内存资源的总和;

      用户空间:应用程序(进程或线程)

        就是各种存储于文件系统中的应用程序,在发起为进程或线程之后,占据的CPU和内存资源的总和;


  操作系统内核的设计流派:

    单内核设计:

      所有的功能全部集中于同一个程序;运行时表现为一个进程;

      Linux就是单内核设计


      Linux,我们不需要他成为最先进的,我们只是要使用它;


    微内核设计: 

      每种功能使用一个单独的子系统来实现;

      Windows,Solaris都是微内核审计


  Linux内核的特点:

    单内核 + 模块化:内核之中的功能更 + 各种模块提供的功能之和;

    为了能够提高工作效率,会为速度比较慢的iO设备提供缓冲和缓存;


  Linux内核的组成部分:

    内核核心文件:

      /boot/vmlinuz-VERSION-release

    centos5:

      /boot/vmlinuz-2.6.18-398.el5

    centos6:

      /boot/vmlinuz-2.6.32-573.el6.x86_64

    centos7:

      /boot/vmlinuz-3.10.0-327.el7.x86_64

 

    最新的内核版本:4.13-rc1


    内核模块文件:

      /lib/modules/KERNEL_VERSION/kernerl/


    ramdisk:

      centos 5:

        /boot/initrd-2.6.18-398.el5.img

      centos 6/7:

        /boot/initramfs-2.6.32-573.el6.x86_64

        /boot/initramfs-3.10.0-327.el7.x86_64.img     


    centos 5/6:

      生成ramdisk的工具:mkinitrd

    centos 7:

      生成ramdisk的工具:dracut mkinitrd


      rd和ramfs:

        ramdisk:双缓冲和双缓存;

        ramfs:提高效率,避免双缓冲和双缓存;



centos系列操作系统的启动流程(2)

  基于x86架构兼容平台研究系统启动流程;


  1.post:power-on self test,加电自检;

    ROM:read-only memory,只读存储器;

      CMOS:BIOS,basic input and output system,基本输出输出系统;


    X76架构的CPU可以线性寻址的物理孔村空间:ROM + RAM


  2.bootsequence:启动顺序;

    作用:决定到何种硬件设备上加载操作系统;

    方式;按照指定的次序查找各个引导设备,第一个被找出有引导程序的设备即为本次启动要用到的设备;


      BootLoader:引导加载器,程序;


        MBT:

          master(main)boot recorn:

            0磁道0扇区:

              446byte:BootLoader

              64byte:fat,file allocation table;

              2byte:magic-number,55AA,表示MBR有效;

        GPT:


      Windows:NTLDR

      Linux:

        Lilo:Linux loader,有缺陷,不能支持大硬盘;不超过1024柱面;

        grub:grand uniform BootLoader,全球统一引导加载器;

          centos 6-:

            grub 0.x:grub legacy


          centos 7:

            grub 1.x:grub2


        grub提供的功能:

          1.为用户提供一个菜单,菜单中列举的是各个可以启动的操作系统内核;

          2.可以将用户选定的内核核心文件装载到RAM中,解压缩并展开,将系统控制权移交给内核;

          3.交互式的命令行接口;

          4.菜单及内核启动的安全保障;


  3.内核的启动:

    自身初始化:

      1.探测能够识别到的所有的硬件设备;

      2.加载硬件的驱动程序,有可能会借助于ramdisk加载驱动;

      3.以只读的方式挂载根文件系统;

      4.运行用户空间的第一个应用程序:/sbin/init


  4.init:

    init程序的类型:

      centos 5:sysV init

        配置文件:

          /etc/inittab


      centos 6:upstart init

        配置文件:

          /etc/inittab(几乎被废弃);

          /etc/init/*.conf


      centos 7:systemd

        配置文件:

          /usr/lib/systemd/system/*

          /etc/systemd/system/*0


小结:

  系统初始化流程(内核级别)

    post --> bootsequence(BIOS)--> BootLoader(MBR)--> kernel(内核核心文件,只能放置在基本分区上)--> 

    [ramdisk] --> rootfs(read-only)--> /sbin/init


centos 5的sysV init的工作过程;

  centos 5 sysV init:

    运行级别(run level):为了系统的运行或维护等目的而设置的管理机制;

      0-6:七个运行级别;

        # 0 - 关机,halt,shutdown;

        # 1 - 单用户模式(single user mode),root,无需验证;维护模式;

        # 2 - 多用户模式(multiuser),会启动网络功能;但是不会启动NFS,维护模式;

        # 3 - 多用户模式(full multiuser mode),完全的功能模式,仅使用CLI,不激活GUI;

        # 4 - 预留级别,目前无特别使用的目录;但是习惯上认为与3运行级别相同;

        # 5 - 多用户模式(full multiuser mode),完全的功能模式,默认激活GUI和CLI,默认使用的是GUI;

        # 6 - 重启,reboot


      通常会使用3,5运行级别作为此次系统启动的默认运行级别;

    查看当前系统的运行级别;

      who -r

      runlevel


    切换运行级别:

      init [0-6]


    init的配置文件:/etc/inittab,此配置文件有如下功能:

      1.在整个系统初始化的过程中要做那些任务;

        启动或关闭哪些后台服务;

        如何进行系统初始化;

        在验证用户的身份无误之后,如何为用户提供登录提示符,还要区分是图形界面还是文件界面;

        当备用电源失效或重新生效时,如何指挥系统操作;

        定义了按下“Ctrl + Alt + delete”组合键时,系统将采取什么行为;


      2.所有规定的任务如何执行;

        每一行定义一种操作,格式如下:

          id:runlevels:action:process


          id:一种操作的唯一标识符;

            l#,id,pf,pr,#,x,


          runlevel:指定任务执行所依赖的运行级别;

            ####,#,留空,


          action:在何种条件下启动此任务;

            wait:等待切换至此任务所在的运行级别时,运行一次;

            respawn:一旦此任务结束,就自动重新启动此任务;

            initdefault:用于设定默认的运行级别,通常后面的process省略

            sysinit:设置系统初始化的方式,一般情况下此处运行/etc/rc.d/rc.sysinit脚本;

            powerfail:

            powerokwait:

            ctrlaltdel:


          /etc/rc.d/rc.sysinit:

            1.设置主机名称;

            2.设置启动的欢迎信息;

            3.激活udev和selinux;

            4.挂载/etc/fstab文件中定义的所有有效文件系统;

            5.激活各个swap设备;

            6.检测rootfs,并且以读写的方式重新挂载rootfs;

            7.设置系统时间;

            8.根据/etc/sysctl.conf文件设置内核参数;

            9.激活lvm和软raid等高级逻辑设备;

            10.加载额外的设备的驱动程序;

            11.完成清理工作;


          /etc/rc.d/rc:

            根据特定的运行级别,启动或关闭/etc/rc.d/rc$runlevel.d/*

              K*:要停止的服务;K后面的两位数字表示优先级;数字越小优先级越高;依赖其他服务的服务应该优先关闭,被其他服务依赖的服务应该稍后关闭;


              S*:要启动的服务;S后面的两位数字表示优先级;数字越小优先级越高;被其他服务依赖的服务应该优先开启,依赖其他服务的服务应该稍后开启;


            rc脚本实际上可以接收一个运行级别作为其参数运行内容的;


            脚本框架:

              for i in /etc/rc.d/rc#.d/K* ; do

                $i stop

              done


              for i in /etc/rc.d/rc#.d/S* ; do

                $i start

              done             


  mkinitrd:建立要载入ramdisk的映像文件,以供Linux开机时载入ramdisk。

    选项:

      -f:若指定的映像问家名称与现有文件重复,则覆盖现有的文件; 

      -v:执行时显示详细的信息; 

      --omit-scsi-modules:不要载入SCSI模块; 

      --preload=<模块名称>:指定要载入的模块; 

      --with=<模块名称>:指定要载入的模块; 

      --version:显示版本信息。

    例子:

      mkinitrd -v -f myinitrd.img $(uname -r)


  dracut:建立要载入ramdisk的映像文件,以供Linux开机时载入ramdisk。

    例子:

      dracut /boot/initramfs-$(uname -r).img $(uname -r)


本文转自谁等了谁 51CTO博客,原文链接:http://blog.51cto.com/12486569/1952145

相关文章
|
1月前
|
Linux 网络安全
Centos 防火墙端口控制命令
Centos 防火墙端口控制命令
38 3
|
15天前
|
存储 Ubuntu 应用服务中间件
【Nginx】centos和Ubuntu操作系统下载Nginx配置文件并启动Nginx服务详解
【Nginx】centos和Ubuntu操作系统下载Nginx配置文件并启动Nginx服务详解
22 1
|
1天前
|
Web App开发 缓存 运维
CentOS命令大全:从入门到精通
CentOS命令大全:从入门到精通
|
2天前
|
存储 安全 Linux
Centos停止更新?这篇博客教会你安装平替Centos的操作系统安装Anolis
Centos停止更新?这篇博客教会你安装平替Centos的操作系统安装Anolis
|
2天前
|
监控 网络协议 Linux
centos常见的命令
【5月更文挑战第8天】了解和掌握基本的CentOS命令对于服务器管理至关重要。本文介绍了19个常用命令,包括`ls`、`cd`、`mkdir`、`rm`、`grep`、`find`、`sudo`、`vi/vim`、`cp/mv`、`du/df`、`history`、`top/htop`、`ps`、`netstat/ss`、`yum/dnf`、`ssh`、`iptables`、`journalctl`、`crontab`和`systemctl`。每个命令都提到了常见问题、使用技巧和避免错误的方法,帮助用户更好地管理和维护CentOS系统。
14 0
|
10天前
|
Linux Shell 数据安全/隐私保护
centos常见的命令
CentOS 是一个基于 Red Hat Enterprise Linux (RHEL) 的免费企业级操作系统。以下是一些基本的 CentOS 命令,用于日常管理和操作:
|
12天前
|
NoSQL Linux 网络安全
【专栏】在 RHEL 8 或者 CentOS 8 上顺利安装并运行MongoDB,以处理非结构化数据和扩展技术栈
【4月更文挑战第28天】本文档介绍了如何在RHEL或CentOS 8上安装MongoDB,包括环境准备(系统更新、依赖安装、硬件需求和sudo用户)、导入MongoDB GPG公钥、创建Yum仓库、安装MongoDB社区版,以及后续的基本配置和验证(启动服务、防火墙设置和连接验证)。通过这些步骤,用户可以顺利安装并运行MongoDB,以处理非结构化数据和扩展技术栈。
|
13天前
|
XML 安全 Linux
【Linux】深入探究CentOS防火墙(Firewalld):基础概念、常用命令及实例操作
【Linux】深入探究CentOS防火墙(Firewalld):基础概念、常用命令及实例操作
|
16天前
|
Linux
CentOS 系统常用命令详解
本文介绍了CentOS中11个常用的命令,包括`ls`(列出文件和目录)、`cd`(切换目录)、`pwd`(显示当前目录)、`mkdir`(创建目录)、`rm`(删除文件/目录)、`cp`(复制文件/目录)、`mv`(移动/重命名文件)、`cat`(查看文件内容)、`grep`(搜索文件内容)和`top`(显示系统进程信息)以及`yum`(包管理器)。学习这些命令能提升系统管理和操作效率。
21 0
|
17天前
|
网络协议 Linux
Centos7 nfs常用命令详解
`/etc/exports`是NFS服务的配置文件,定义了共享给客户端的文件系统和访问规则。共享目录、客户端IP或域名、以及访问权限和用户映射选项是其主要内容。客户端指定方式包括IP地址、子网、域名或通配符。选项包括读写权限(ro/rw)、用户映射(如root_squash/no_root_squash/all_squash)和其他设置(sync/async/secure/insecure等)。`exportfs -r`用于重新应用配置。配置示例:`/opt/test`共享给192.168.1.0/24,权限为rw,同步写入(sync)。注意,不建议开启no_root_squash以确保安全。
20 0

热门文章

最新文章