系统启动和内核管理
1、系统启动
1.1 centos7启动的过程
UEFI或BIOS初始化,运行post开机自检 选择启动的设备(USB、硬盘、本地光盘) 引导装载程序,centos7是给grub2 加载装载程序的配置文件: /etc/grub.d/ /etc/default/grub /boot/grub2/grub.cfg 加载内核选项 加载 initramfs 初始化伪文件系统 内核初始化,centos7使用systemd代替init 执行initrd.target所有单元,包括挂载/etc/fstab 从 initramfs 根文件系统切换到磁盘根目录 systemd 执行默认 target 配置,配置文件/etc/systemd/system/default.target systemd 执行 sysinit.target初始化系统及 basic.target准备操作系统 systemd 启动 multi-user.target下的本机与服务器服务 systemd 执行 multi-user.target 下的/etc/rc.d/rc.local Systemd 执行 multi-user.target 下的 getty.target及登录服务 systemd 执行 graphical 需要的服务
1.1.1 硬件启动POST
Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内
存、硬盘子系统、显示子系统、串并行接口、键盘等硬件情况的检测
1.1.2 启动加载器
grub是统一资源引导器,也就是引导加载器;它的工作是提供一个菜单,允许用户选择要启动的系统或不同的内核版本;把用户选定的内核装载到RAM中的特定空间中,然后解压、展开,而后把系统控制权移交给内核。
1.1.3 加载内核
1 . 探测可识别到的所有硬件设备
2 . 加载硬件驱动程序(借助于ramdisk加载驱动)
3 . 以只读方式挂载根文件系统
4 . 运行用户空间的第一个应用程序:/sbin/init
1 、支持模块化:.ko(内核对象),如:文件系统,硬件驱动,网络协议等
2 、支持内核模块的动态装载和卸载
1.1.4 系统初始化
POST --> BootSequence ( BIOS) --> Bootloader( MBR) --> kernel( ramdisk) --> rootfs( 只读) -->
init(systemd)
( 1 ) 设置主机名
( 2 ) 设置欢迎信息
( 3 ) 激活udev和selinux
( 4 ) 挂载/etc/fstab文件中定义的文件系统
( 5 ) 检测根文件系统,并以读写方式重新挂载根文件系统
( 6 ) 设置系统时钟
( 7 ) 激活swap设备
( 8 ) 根据/etc/sysctl.conf文件设置内核参数
( 9 ) 激活lvm及software raid设备
( 10 ) 加载额外设备的驱动程序
( 11 ) 清理操作
1.2 系统启动文件的说明
[ root@exercise1 ~]
[ Unit]
Description = nginx
After = network.target
[ Service]
Type = forking
ExecStart = /usr/local/nginx/sbin/nginx
ExecReload = /usr/local/nginx/sbin/nginx -s reload
ExecStop = /usr/local/nginx/sbin/nginx -s stop
PrivateTmp = true
[ Install]
WantedBy = multi-user.target
[ Unit] :服务的说明
Description:描述服务
After:描述服务类别
[ Service] 服务运行参数的设置
Type = forking是后台运行的形式
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp = True表示给服务分配独立的临时空间
注意:[ Service] 的启动、重启、停止命令全部要求使用绝对路径
[ Install] 运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3
这部分总结的不行,有几个案例还没研究好,等弄明白了,后面再补上。