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

所有由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

时间: 2024-10-05 08:18:30

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

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

centos(RHEL)系列操作系统的启动流程:Intel x86兼容架构: Linux的系统组成:内核 + 应用程序  GUN/Linux:单纯的指Linux内核: 从硬盘存储和启动操作系统的角度: Linux的系统组成:内核 + 根文件系统(rootfs) 内核功能:进程管理,文件系统管理,内存管理,网络协议,驱动程序,安全功能,... Linux系统的系统运行环境可以分为两部分: 内和空间:内核代码(系统调用) 就是内核进程占用的CPU和内存资源的总和: 用户空间:应用程序(进程或线程)

#25 centos7(RHEL)系列操作系统的启动流程、systemd的特性、与命令systemctl的使用

systemd的新特性: 1.在系统引导的时候可以实现服务的并行启动: 2.能够实现按需激活进程: 在系统启动时,需要随系统启动服务,其服务进程并没有启动,但是systemd为每一个此类服务进程都注册了对应的套接字:我们称这种服务处理方式为"半激活状态": 3.能够对当前系统的用户空间的每个进程状态快照:以后如果进程出现问题或故障,可以迅速恢复进程状态至过去的某一时刻: 4.systemd内部有一种基于依赖关系来定义的服务控制逻辑: 核心管理概念:unit文件 由systemd相关的配

centos系列的启动流程及基础知识点

下面介绍的是基于Intel x86架构的CentOS系列操作系统的启动流程. 1.Linux系统基础简介 (1).Linux[系统组成]:内核+应用程序 或 内核+rootfs (2).Linux的[运行环境]:内核空间 --------内核进程占用CPU和内存资源总和 用户空间 --------应用程序占用CPU和内存资源总和 (3).[内核]主要具有6个[功能]:进程管理.文件系统管理.内存管理.网络协议管理.驱动管理.内存功能. 对于内核,有两种设计:单内核.微内核.单内核,是所有功能聚集

(转0CentOS下开机启动查看管理命令:chkconfig用法

CentOS下开机启动查看管理命令:chkconfig用法 CentOS下开机启动查看管理的命令是:chkconfig 1. 开机启动列表查看: chkconfig --list 说明:输出所有服务列表,如果列表中没有你要启动的服务 2. 添加服务: chkconfig --add servicename 3. 删除服务: chkconfig --del servicename 4. 查看具体启动服务信息: chkconfig --list  servicename 例如 chkconfig -

linux操作系统的启动流程--学生作业

首先,先不急着将启动流程,,先说下linux操作系统的相关知识 一:linux的组成部分: 内核+根(/)文件系统 1)内核: 存放位置 centos6的位置是 /boot 目录下的"vmlinuz-2.6.32-573.12.1.el6.x86_64" "2.6.32"是版本号:"573.12.1"是release号.内核的作用是负责核心的内存管理.进程管理.网络协议栈.文件系统.驱动程序.安全功能.linux内核是单内核设计,但是他支持多模块

centos6之前版本的启动流程

centos6 之前的系统启动: linux启动流程: 1)加电自检 2)读取MBR,引导加载程序grub,完成grub的三个阶段. 3)加载系统内核kernel,执行系统初始化信息. 4)启动用户空间第一个执行程序/sbin/init,并调用init的配置文件,完成初始化. 5)启动核心的外挂模块,来启动各种所需服务. 6)启动6个虚拟终端,执行/bin/login 程序,等待用户登录. 7)登录之后开始以Shell控制主机. CMOS通电-->BIOS启动-->读取MBR-->加载程

centos操作系统的启动流程

一般情况下X86架构平台的启动流程:1.POST:Power-on Self Testing,加电自检保证硬件的正常操作,从而能够正确的使用各种硬件2.BootSequence(程序的启动顺序)决定到底从何种设备加载操作系统内核:通常可选的设备包括:光驱,硬盘,U盘,网络接口: 按照给定的顺序,依次查找各个设备,第一个被找出有引导程序(BootLoader)即为本次启动要用到的设备: Bootloader:引导程序,引导加载器GRUB:GRand Uniform BootLoader 全球统一引

CentOS系列开机启动流程

在我们使用Linux操作系统的时候,只要按下电源键,就会出现一些乱七八糟的代码,过一会就会出现登陆界面,那么在这期间系统自己都做了什么?现在就说一下在这这段时间系统做了些什么. 系统初始化流程:                                        POST-->Bootsequence(BIOS)-->Bootloader(MBR)-->Kernel(ramdisk)-->rootfs(readonly)-->/sbin/init()/sbin/in

linux启动流程梳理【转】

接触linux系统运维已经好几年了,常常被问到linux系统启动流程问题,刚好今天有空来梳理下这个过程:一般来说,所有的操作系统的启动流程基本就是: 总的来说,linux系统启动流程可以简单总结为以下几步:1)开机BIOS自检,加载硬盘.2)读取MBR,进行MBR引导.3)grub引导菜单(Boot Loader).4)加载内核kernel.5)启动init进程,依据inittab文件设定运行级别6)init进程,执行rc.sysinit文件.7)启动内核模块,执行不同级别的脚本程序.8)执行/