linux基础之CentOS启动流程
一、基本概念
- 内核设计流派:
- 单内核设计:Linux //所有功能集成于同一个程序
- 微内核设计:Windows,Solaris //每种功能使用一个单独子系统实现
- Linux内核特点:
- 支持模块化:.ko文件
- 支持模块的动态装载和卸载
- Linux内核组成部分:
- 核心文件:/boot/vmlinuz-VERSION-release
- ramdisk: //基于内存的磁盘,用来辅助内核加载根文件驱动程序
- CentOS5: /boot/initrd-VERSION-release.img
- CentOS6: /boot/initramfs-VERSION-release.img
- 模块文件: /lib/modules/VERSION-release
二、CentOS系统启动流程
- .POST(加电自检): CMOS除了加电自检还可以进行一些设置,也就是BIOS(Basic Input and Output System)
- .BOOT Sequence: 按次序查找各引导设备,第一个有引导程序的设备即为本次启动用到的设备
- .bootloader: 引导程序,引导加载器
- windows:ntloader
- linux:
- LILO: LInux LOader //不支持将系统安装在1024个柱面之后的分区上,虽然古老,但现在手机上应用较多
- GRUB:GRand Uniform Bootloader,统一加载器
- GRUB .x: GRUB Legancy
- GRUB .x: GRUB2
- 功能:提供一个菜单,运行用户选择要启动系统或不同的内核版本,把用户选定的内核装载到内存特定空间中,解压展开后,将系统控制权移交给内核
- 4.kernel:
- 自身初始化:
- 探测可识别到的所有硬件设备
- 加载硬件驱动程序:(有可能会借助于ramdisk加载驱动)
- 以只读方式挂载根文件系统
- 运行用户空间中的第一个应用程序:/sbin/init
- init程序的类型:
- SysV: init, CentOS5, 配置文件:/etc/inittab
- Upstart:重命名为 init, CentOS6, 配置文件:/etc/inittab, /etc/init/*.conf
- Systemd: systemd,CentOS7, 配置文件:/user/lib/systemd/system, /etc/systemd/system
- ramdisk:
- 内核中的特性之一:使用缓冲和缓存来加速对磁盘上的文件访问
- 所以ramdisk有可能被缓冲两次,所以CentOS6上改进为位于内存的文件系统ramfs
- CentOS : initrd, 工具程序: mkinitrd
- CentOS : initramfs, 工具程序:mkinitrd, dracut
- 系统初始化:
- POST(加电自检) --> BOOT Sequence(BIOS) -->bootloader(MBR)-->kernel(ramdisk)--> rootfs(只读)--> init
/sbin/init
- CentOS :
- 运行级别:为了系统的运行或维护等应用目的而设定
- -:7个级别
- :关机
- :单用户模式(root,无须登录,single,维护模式)
- :多用户模式,会启动网络功能,但不会启动网络文件系统NFS,维护模式
- :多用户模式,正常模式:文本界面
- :预留级别,可同3级别
- :多用户模式,正常模式,图形界面
- :重启
- 模式级别:、
- 切换级别:init #
- 查看级别: runlevel、who -r
- 配置文件:/etc/inittab
- 每一行定义一种action以及与之对应的process
- 例如: id:runlevel:action:process
- action:
- wait: 切换至此级别运行一次
- respawn: 此process终止,就重新启动
- initdefault: 设定默认运行级别,process省略
- sysinit: 设定系统初始化方式,此处一般为指定/etc/rc.d/sysinit
- ...
- id::initdefault:
- si::sysinit:/etc/rc.d/rc.sysinit
- l0::wait:/etc/rc.d/rc
- ...
- l6::wait:/etc/rc.d/rd
- 注释:rc -->意味着读取/etc/rc.d/rc0.d/{K*S*}:
K*:K##*,##为运行次序,数字越小,越先运行,数字越小通常依赖到别的服务
S*:S##*,##为运行次序,数字越小,越先运行,数字越小通常为被依赖到服务
- 相当于执行:for src in /etc/rc.d/rc0.d/K*;do
- $src stop
- done
- for src in /etc/rc.d/rc0.d/S*;do
- $src start
- done
- 管理工具:chkconfig命令 //管理这些链接文件以及查看某些服务是否启动
例如:
查看服务:chkconfig --list srvName
chkconfig --list //查看所有服务在各级别下是否开启或停止
chconfig --list network //查看指定服务是否开启或停止
添加服务:chkconfig --add srvName
SysV的服务脚本放置于/etc/rc.d/init.d(/etc/init.d)
chkconfig --add name
#!/bin/bash
#
# chkconfig: LLLL nn nn- 删除服务:chkconfig --del srvName
修改服务:chkconfig [--level levels] name <on|off|reset>
--level LLLL: 指定要设置的级别:省略时表示2345
- 例如:chkconfig --level 3 NetworkManager off //修改级别3下NetworkManager服务为停止
- 实例:添加服务及删除服务
- [root@alen init.d]# vim test.sh //在/etc/rc.d/init.d下面创建一个服务脚本test.sh
#!bin/bash
#
# chkconfig:345 23 84 //定义在345级别下S为23,K为84
# description:test srv
echo "hello srv test.sh"- [root@alen init.d]# chmod +x test.sh
- [root@alen init.d]# chkconfig --add test.sh
- [root@alen init.d]# chkconfig --list test.sh
- test.sh :关 :关 :关 :开 :开 :开 :关
- [root@alen init.d]# ls -l /etc/rc.d/rc0.d/K84test.sh //级别0下test.sh服务是关闭的为84
- lrwxrwxrwx. root root 9月 : /etc/rc.d/rc0.d/K84test.sh -> ../init.d/test.sh
- [root@alen init.d]# ls -l /etc/rc.d/rc3.d/S23test.sh //级别3下test.sh服务是开启的为23
- lrwxrwxrwx. root root 9月 : /etc/rc.d/rc3.d/S23test.sh -> ../init.d/test.sh
- [root@alen init.d]# chkconfig --del test.sh //删除服务test.sh
[root@alen init.d]# chkconfig --list test.sh //此时查看服务就没有了
- 注意: 正常级别下,最后启动一个服务S99local不是链接到/etc/rc.d/init.d目录的一个服务脚本,而是指向了/etc/rc.d/rc.local脚本,因此,如果不需要写成服务脚本放置于/etc/rc.d/init.d目录下,开机时又会自动运行的命令,可放置于/etc/rc.d/rc.local文件中
服务启动好后就会启动终端设备,在终端设备上关联登录程序,然后用户输入账号密码就可以登录系统了
- 例如://启动6个虚拟终端
- tty1::respawn:/usr/sbin/mingetty tty1
- tty2::respawn:/usr/sbin/mingetty tty2
- ...
- tty6::respawn:/usr/sbin/mingetty tty6
注释: mingetty会调用login程序
- /etc/rc.d/rc.sysinit:系统初始化脚本
- .设置主机名
- .设置欢迎信息
- .激活udev和selinux
- .挂载/etc/fstab文件中定义的文件系统
- .检查根文件系统,并以只读方式重新挂载根文件系统
- .设置系统时钟
- .激活swap设备
- .根据/etc/sysctl.conf文件设置内核参数
- .激活lvm及software raid设备
- .加载额外设备的驱动程序
- .清理操作
- 总结:
- /sbin/init-->读取/etc/inittab文件完成配置
- /etc/inittab中配置步骤有:
- .设置默认运行级别 //id:3:initdefault:
2.运行系统初始化脚本、完成系统初始化 //si::sysinit:/etc/rc.d/rc.sysinit
.关闭对应级别下需要关闭的服务,启动需要启动的服务
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
...
l6:6:wait:/etc/rc.d/rc 6
4.设置登录终端
CentOS 6:
init程序为:upstart,配置文件:/etc/inittab(兼容CentOS5,但CentOS6不会用到,而是用后面的配置文件), /etc/init/*.conf
linux基础之CentOS启动流程的更多相关文章
- Linux系统入门---开机启动流程
目录 Linux系统入门---开机启动流程 一.centos6 二.systemd管理进程 1.查看级别 三.centos7实践案例: 1.案例1:centos7系统,单用户修改root密码 案例2: ...
- 【Linux】【Basis】CentOS启动流程
1. 基础概念 1.1 Linux系统的组成部分:内核+根文件系统 内核:进程管理.内存管理.网络协议栈.文件系统.驱动程序.安全功能 IPC:In ...
- centos启动流程[转]
启动流程概览 在硬件驱动成功后,Kernel 会主动呼叫 init 程序,而 init 会取得 run-level 资讯: init 运行 /etc/rc.d/rc.sysinit 文件来准备软件运行 ...
- Centos启动流程及grub legacy
Linux系统的组成部分:内核+根文件系统 内核的功能:进程管理.内存管理.网络管理.文件系统.驱动程序.安全功能 系统在运行时要么就是在运行内核代码,要么就是在运行应用程序代码.如果一个程序大多数时 ...
- Linux基础知识之 系统启动流程
[1]Linux启动的几个主要阶段 启动流程示意图
- Spring基础系列-容器启动流程(1)
原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9870339.html 概述 我说的容器启动流程涉及两种情况,SSM开发模式和Spri ...
- linux系统下开机启动流程
在了解开机启动流程之前,还是得先了解一些磁盘的基本知识.磁盘主要由盘片,机械手臂,磁头,主轴马达构成.盘片就是存储数据的物理单位了.然后盘片上我们可以分成扇区(sector)和柱面(cylinder) ...
- Linux基础:操作系统的启动
Centos6: # 1.加电自检(BIOS)# 2.MBR引导(512k)dd </dev/zero >/dev/sda bs=1k count=400 # 3.GRUB菜单(选择系统) ...
- CentOS启动流程及Shell脚本编程练习
转至:http://www.178linux.com/88910 一.请详细描述CentOS系统的启动流程(详细到每个过程系统做了哪些事情) 第一步:POST加电自检 主要实现的功能是检测各个外围硬件 ...
随机推荐
- 404 not found Webshell
404 not found Webshell 克隆或下载项目: git clone https://github.com/CosasDePuma/SecurityNotFound.git Securi ...
- 基于 HTML5 和 Canvas 实现的 3D 垃圾分类系统
前言 垃圾分类,一般是指按一定规定或标准将垃圾分类储存.分类投放和分类搬运,从而转变成公共资源的一系列活动的总称.分类的目的是提高垃圾的资源价值和经济价值,力争物尽其用.垃圾在分类储存阶段属于公众的私 ...
- nginx启动报错nginx: [error] open() "/usr/local/etc/nginx/logs/nginx.pid" failed
问题:nginx启动的时候会报丢失pid的错误 nginx: [error] open() “/usr/local/var/run/nginx.pid” failed 解决方案: sudo nginx ...
- 将jsp页面转化为图片或pdf升级版(一)(qq:1324981084)
java高级架构师全套vip教学视频,需要的加我qq1324981084 前面我利用httputil将jsp转化为html,之后转化为pdf,但我发现这样错误率比较高,且成功后有得图片没有完全形成.所 ...
- Spark存储介绍
目录 整体架构 存储相关类 应用启动时 增删改后更新元数据 获取数据存放位置 数据块的删除 RDD存储调用 数据读取 数据写入 cache & checkpoint Reference 记录一 ...
- 全文搜索引擎 Elasticsearch 入门:集群搭建
本文主要介绍什么是 ElasticSearch 以及为什么需要它,如何在本机安装部署 ElasticSearch 实例,同时会演示安装 ElasticSearch 插件,以及如何在本地部署多实例集群, ...
- System.Text.Json 自定义Converter实现时间转换
Newtonsoft.Json与System.Text.Json区别 在 Newtonsoft.Json中可以使用例如 .AddJsonOptions(options => { options. ...
- MySql学习-4.查询1
1.基本查询语法: select * from 表名: **注意** 1.select 后写列名,*代表是所有列: 2.列名可以用as起别名,其出现在结果集中: 3.查询多个列,之间用逗 ...
- 一、threejs————灯光阴影
threejs设置阴影有三个注意点 1.只有支持阴影的灯光才可以 pointLight,spotlight,directionallight 2.添加摄像机辅助器 THREE.CameraHelper ...
- Q&A in 2018 - Q2
How to zip a file for Windows? 压缩一个文件: makecab c:/file_name.txt c:/file_name.zip 解压一个文件: expand c:/f ...