#24 centos6(RHEL)系列操作系统的启动流程、与命令chkconfig、grub的使用

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

            所有由rc脚本关闭或启动的链接文件的原文件都存在于/etc/rc.d/init.d,系统为了方便使用,为此目录创建了链接/etc/init.d


            所有/etc/inid.d(/etc/rc.d/init.d)目录中的脚本执行方式:

              # /etc/init.d/srv_script {start|stop|restart|status}

              # service srv_script {start|stop|restart|status}


            chkconfig命令:

              chkconfig - updates and queries runlevel information for system services

              查看系统服务相关运行级别下的运行状态;

                chkconfig [--list] [name]


              管理系统服务在/etc/rc.d/rc#.d/目录下的服务脚本的链接:

                chkconfig --add name

                chkconfig --del name

                为了能够让chkconfig命令管理系统服务的脚本的链接,每个脚本中都必须有这样的格式;

                  # chkconfig:2345 90 60

                    2345:在哪个运行级别下,此服务是自动启动状态;也就是说,在对应的运行级别的rc#.d目录中,是以S开头的文件;如果该位置为“-”,则表示所有运行级别都是为K开头的;

                    90:如果在某个运行级别下为开启状态,该数字为S后面的优先级数字

                    60:如果在某个运行级别下为停止状态,该数字为K后面的优先级数字

                  # description:对于此系统服务的摘要性描述信息;

              

              单独设置指定运行级别下系统服务的摘要性描述信息:

                chkconfig [--level levels]  name <on|off|reset>


              /etc/rc.d/rc.local脚本:

                是init程序在引导用户空间进程启动的过程中,所执行的最后一个脚本;因为,不便于或不需要写在系统服务相关的脚本中的内容但又期望可以开机即运行的功能,可以直接写在此脚本中;           

     

              rc.local脚本:

                是init程序在引导用户空间进程启动的过程中,所执行的最后一个脚本;因为,不便于或不需要写在系统服务相关的脚本中的内容但又期望可以开机即运行的功能,可以直接写在脚本中;


                # Run gettys in standard runlevels

                1:2345:respawn:/sbin/mingetty tty1

                2:2345:respawn:/sbin/mingetty tty2

                3:2345:respawn:/sbin/mingetty tty3

                4:2345:respawn:/sbin/mingetty tty4

                5:2345:respawn:/sbin/mingetty tty5

                6:2345:respawn:/sbin/mingetty tty6

                           

              6


              mingetty会调用login程序,打开虚拟终点;除了mingetty之外,诸如getty之类的程序也可以生成虚拟终端控制台;


              如果默认的运行级别时5,则我们需要/etc/x11/prefdm脚本打开图形界面终点:

                X6R11 - X Version 6 Release 11


  小结:(用户空间的启动流程),/sbin/init

    /sbin/init --> /etc/inittab -->设置默认运行级别 --> /etc/rc.d/rc.sysinit脚本,完成系统初始化 --> 关闭那些对应运行级别下需要停止的服务,启动那些对应运行级别下需要开启的服务 --> Ctrl+Alt+del热键功能 --> UPS电源的失效与恢复之后的操作 --> 生成终端[启动图形界面]


centos 6:

  init程序:upstart,其应用程序依然是/sbin/init,其配置文件;

    /etc/inittab:仅仅只是用于定义默认运行级别;

    /etc/init/*.conf:

      rcS.conf:执行系统初始化脚本的任务;

      rc.conf:执行根据运行级别关闭或开启系统服务的任务;

      start-ttys.conf:执行打开终端相关的任务;

      prefdm.conf:执行大小图清洁棉的任务;


    upstart机制:基于事件驱动的程序管理模型;driven-envet


centos 6 系统启动流程:

  post --> bootsequence(BIOS)--> BootLoader --> kernel [-->ramfs] -->rootfs(ro)--> /sbin/init -->设置默认级别 --> 系统初始化 --> 可以并行执行Ctrl+Alt+del热键功能定义,系统服务器的开启和关闭,电源管理,dubs管理等 --> 登录提示符


centos 7:

  inIT程序:systemd,与经典的init程序完全不同;其配置文件;

    /etc/systemd/system/*

    /usr/lib/systemd/system/*:systemdd 的unit文件;


    /etc/inittab:彻底被废弃;


    systemd完全兼容sysV风格的inIT程序及其脚本;因为service类的命令在centos7中依然可用;但是,建议使用centos7标配的systemctl命令来控制和管理系统服务;


    systemctl命令:

      systemctl - Control the systemd system and service manager

      systemctl [OPTIONS...] COMMAND [NAME...]


    使用systemctl管理服务的一般方式:

      systemctl {start|stop|restart|status} name[.service]


    设置centos 7的默认运行级别:

      ~]# systemctl get-default {multi-user.target | graphical.targer}


     查看centos 7的默认运行级别:

      ~]# systemctl get-default 


总结:

  post --> bootsequence --> BootLoader --> kernel --> rootfs --> init


  grub:legacy:

    1st stage:stage1,MBR的前446bytes;

    1.5 stage:MBR之后的若干个扇区中;让stage1中的BootLoader程序能够识别stage所在的分区的文件系统;

    2nd stage:stage2,磁盘的启动分区,

      注意:stage2及内核核心文件必须放置在同一个基本磁盘分区上;


      stage2提供的功能:

        1.加载操作系统内核核心文件;

        2.提供一个菜单和交互式接口;

        3.允许用户编辑菜单内容;

        4.命令行接口操作模式;

        5.身份认证机制,以保证菜单编辑和内核启动的安全;


      grub的命令行界面:

        grub>


        grub的命令行界面中的常用命令:

          help:获取所有的grub命令的名称列表和简要使用方法;

          help grub_cmd: 显示特定命令的详细帮助信息;

          root (hd#,#):将指定磁盘的制定分区作为grub程序的根设备;

            hd#:磁盘编号,#一般是从0开始的数字;如hd0表示第一块磁盘;

            #:分区编号,#一般是从0开始的数字,如0表示第一个分区;


            (hd0,0):当前计算机上的第一块磁盘的第一个分区;

          find (hd#,#):从指定的分区中搜索文件,并显示出文件所在位置;

          kernel /path/to/kernel_core_file:设定本次启动时用到的内核文件的绝对路径;额外还可以在kernel命令中,为内核启动添加更多的内核参数;

            ro root=/dev/sda3 selinux=0 init=/sbin/init quiet rhgb {1|s|S|single}

          initrd /path/to/initramfs-version-release.img


    grub的配置文件:

      /boot/grub/grub.conf  <--  /etc/grub.conf          

default=0

  设定默认启动菜单项;整个菜单中的所有的title是从0开始编号的;

timeout=5

  用户未做出选择时,grub会自动引导默认菜单对应的内核的超时时间;

splashimage=(hd0,0)/grub/splash.xpm.gz

  grub的北京图片对应的路径;

hiddenmenu

  隐藏菜单

password --md5 CRYPTED_PASSWORD

  为了保护菜单设置的密码,通常用于防止随意进入单用户模式;

title CentOS 6 (2.6.32-573.el6.x86_64)

  定义菜单项中的各个“标题”,可以定义多个title项;至少有一项;

        root (hd0,0)

          指定grub的根设备,通常是用来安装grub的那个分区;

        kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root=UUID=4e82764c-11aa-4e68-9f3a-1a821f5db868 nomodeset rd_NO_LUKS  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_MD crashkernel=auto LANG=zh_CN.UTF-8 rd_NO_LVM rd_NO_DM rhgb quiet

          该菜单对应的要启动的内核及传递给内核的各个参数;

        initrd /initramfs-2.6.32-573.el6.x86_64.img

          内核所对应的ramdisk(ramfs)文件

        password --md5 CRYPTED_PASSWORD

          保护操作系统内核的启动;


  自制小Linux:

    1.在某个正常运行的centos里添加一块硬盘;

    2.对硬盘分区,创建相应的文件系统,并挂载(/mnt/root,/mnt/sysroot);

    3.安装grub程序,

      # grub-install --root-directory=/mnt(boot的父目录)/dev/sdb

    4.为小Linux的根分区创建目录层级结构;mkdir -pv /mnt/sysroot/{bin,boot,dev,etc,lib,lib64,proc,sys,mnt,media,tmp,var,usr,sbin}

    5.复制内核文件及ramdisk文件到目标系统的启动分区;

      # cp /boot/vmlinuz-version-release /mnt/boot

      # cp /boot/initramfs-version-release.img /mnt/boot

    6.给grub提供配置文件:

      default=0

      timeout=10

      title mylinux (1.0.0)

        root (hd0,0)

        kernel /vmlinuz-version-release ro root=/dev/sda3 selinux=0 init=/bin/bash

        initrd /initramfs-version-release.img

    7.将/bin/bash及其共享库文件,复制到/mnt/sysroot下对应的目录中;除此之外,还可以复制其他的各应用程序及相应的共享库文件;

    8.多执行几次sync命令,使得内存中缓存或缓冲的数据被保存到磁盘上;

    9.新建虚拟机,将小硬盘作为新虚拟机的硬盘使用;将宿主系统挂机之后,再启动小Linux即可;    

  

    小实验:

      破坏grub,在重启之前可以使用下列方法恢复;

        1.# grub-install --root-directory=/ /dev/sda

        2.# grub

          grub> root (hd0,0)

          grub> setup (hd0)

          grub> quit

          #


      破坏grub或者grub。conf配置文件,重启之后无法正确引导内核;可以使用光盘或U盘等其他的引导设备将系统引导起来,并进入rescue模式,其他操作方法如上。


post --> bootsequence(BIOS) --> BootLoader(grub,mbr-stage1) --> stage1.5 --> stage2 --> kernel --> init


  chkconfig:检查、设置系统的各种服务。这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。

    选项:

      --add:增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据; 

      --del:删除所指定的系统服务,不再由chkconfig指令管理,并同时在系统启动的叙述文件内删除相关数据; 

      --level<等级代号>:指定读系统服务要在哪一个执行等级中开启或关毕。

    等级代号列表: 

      等级0表示:表示关机 

      等级1表示:单用户模式 

      等级2表示:无网络连接的多用户命令行模式 

      等级3表示:有网络连接的多用户命令行模式 

      等级4表示:不可用 

      等级5表示:带图形界面的多用户模式 

      等级6表示:重新启动

    例子:

      chkconfig --list(列出所有的系统服务。)

      chkconfig --add httpd(增加httpd服务。)

      chkconfig --del httpd(删除httpd服务。)

      chkconfig --level httpd 2345 on(设置httpd在运行级别为2、3、4、5的情况下都是on(开启)的状态。) 

      chkconfig --list(列出系统所有的服务启动情况。)

      chkconfig --list mysqld(列出mysqld服务设置情况。)

      chkconfig --level 35 mysqld on(设定mysqld在等级3和5为开机运行服务,--level 35表示操作只在等级3和5执行,on表示启动,off表示关闭。)

      chkconfig mysqld on(设定mysqld在各等级为on,“各等级”包括2、3、4、5等级。)


  grub:多重引导程序grub的命令行shell工具。

    选项:

      --batch:打开批处理模式; 

      --boot-drive=<驱动器>:指定stage2的引导驱动器; 

      --config-file<配置文件>:指定stage2的配置文件; 

      --device-map=<文件>:指定设备的映射文件; 

      --help:显示帮助信息; 

      --install-partition=<分区>:指定stage2安装分区; 

      --no-config-file:不使用配置文件; 

      --no-pager:不使用内部分页器; 

      --preset-menu:使用预设菜单; 

      --probe-second-floppy:检测第二个软盘驱动器; 

      --read-only:只读模式。

    例子:

      root (hd0,1)(假设 /dev/hda2 是你的 /boot 所在的分区 */)

      kernel /boot/vmlinuz-2.6.15-26-386 ro dev=/dev/hda3(假设 /dev/hda3 是你的 / 所在的分区 */) 

      initrd /boot/initrd.img-2.6.15-26-386 

      boot


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

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4天前
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
|
4天前
|
弹性计算 运维 安全
阿里云操作系统迁移最佳实践|飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是阿里云操作系统迁移最佳实践,Alibaba Cloud Linux /Anolis OS 兼容 CentOS 生态,因此能够很丝滑的进行迁移替换。无论是对企业的运维人员,还是对企业操作系统的使用者来说,相对简化了它的维护成本。通过 SMC 操作系统迁移实践带用户深入了解,不仅阐述了原地迁移方案的独特优势,还针对不同的迁移场景,逐步剖析了整个迁移流程,力求使复杂的操作变得直观易懂,实现了真正的“白屏化”体验。 1. CentOS 迁移背景 2. 操作系统迁移实践 3. 迁移故障处理
|
27天前
|
Unix Linux Docker
CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局
操作系统是计算机系统的核心软件,管理和控制硬件与软件资源,为用户和应用程序提供高效、安全的运行环境。Linux作为开源、跨平台的操作系统,具有高度可定制性、稳定性和安全性,广泛应用于服务器、云计算、物联网等领域。其发展得益于庞大的社区支持,多种发行版如Ubuntu、Debian、Fedora等满足不同需求。
55 4
|
4月前
|
Oracle Java 关系型数据库
CentOS 7.6操作系统部署JDK实战案例
这篇文章介绍了在CentOS 7.6操作系统上通过多种方式部署JDK的详细步骤,包括使用yum安装openjdk、基于rpm包和二进制包安装Oracle JDK,并提供了配置环境变量的方法。
319 80
|
4月前
|
运维 Linux
CentOS操作系统常见的故障处理
本文分享了CentOS操作系统网卡启动失败的故障处理方法,包括使用命令查看日志和禁用NetworkManager服务。
257 4
CentOS操作系统常见的故障处理
|
3月前
|
弹性计算 关系型数据库 MySQL
CentOS 7.x操作系统的ECS云服务器上搭建WordPress网站
CentOS 7.x操作系统的ECS云服务器上搭建WordPress网站
|
3月前
|
Linux 编译器 C语言
./build.sh:行1: g++: 未找到命令的错误问题在centos操作系统下面如何解决
通过上述步骤,您应该能够有效地解决CentOS系统中 `g++: 未找到命令`的错误。确保软件开发环境配置得当,对于顺利执行编译脚本和日常开发工作至关重要。如果问题依然存在,考虑检查脚本内的命令路径引用是否正确,或进一步排查系统配置问题。
188 0
|
3月前
|
存储 Java iOS开发
MacOS环境-手写操作系统-43-dir命令的实现 和 文件写入
MacOS环境-手写操作系统-43-dir命令的实现 和 文件写入
52 0
|
2月前
|
安全 Linux 数据安全/隐私保护
Vanilla OS:下一代安全 Linux 发行版
【10月更文挑战第30天】
82 0
Vanilla OS:下一代安全 Linux 发行版
|
10天前
|
弹性计算 自然语言处理 Ubuntu
OS Copilot-操作系统智能助手-Linux新手小白的福音
OS Copilot是由阿里云推出的操作系统智能助手,专为Linux新手设计,支持自然语言问答、辅助命令执行等功能,极大提升了Linux系统的使用效率。用户只需通过简单的命令或自然语言描述问题,OS Copilot即可快速提供解决方案并执行相应操作。例如,查询磁盘使用量等常见任务变得轻松快捷。此外,它还支持从文件读取复杂任务定义,进一步简化了操作流程。虽然在某些模式下可能存在小问题,但总体上大大节省了学习和操作时间,提高了工作效率。
75 2
OS Copilot-操作系统智能助手-Linux新手小白的福音