关于systemd:Systemd详解与使用
背景不太适宜进入docker,须要间接部署在宿主机下面,领有root权限,操作批改零碎,读取零碎的一些信息等保障开机启动以及异样重启有一套欠缺的日志零碎反对Before/After的启动机制反对基于cgroup的限度以最低的零碎开销实现该目标不便打包为deb包进行装置,参考各种服务的装置,比方apt install nginx docker postgresql等deb包背地的逻辑与实现兼容根本全副的linux发行版本尽管之前应用过的supervisor也能够满足上述大部分需要,然而打工人的世界总是须要去谋求一下极致的,于是决定好好学习一下systemd Systemd根本介绍内核加载到内存之后启动的第一个用户空间程序,pid是1,是所有过程的父过程,会托管所有僵尸过程,如果这个程序挂了,零碎也就间接关机了systemd不是内核的一部分,然而却成为了Debian/Ubuntu系和Fedora/Centos/Redhat/RockyLinux系的零碎初始化过程Linux启动流程systemd是系统启动流程中初始化阶段的次要角色,有必要介绍一下linux系统启动流程 硬件疏导启动阶段(第一阶段)机器电源接通时,存储在主板芯片下面的固件初始化,POST(Power On Self Test)上电自检BIOS阶段 初始化硬件,内存,磁盘,显卡等查找启动介质(个别是硬盘),查找MBR或者EFI分区的第一阶段疏导程序,并且移交控制权MBR或者EFI程序阶段,查找第二阶段的GRUB(GRand Unified Boot)疏导程序并装置到BootLoderBootLoader 启动疏导阶段(第二阶段)stage1: 执行BootLoader的主程序(GRUB程序),开始启动stage1.5stage1.5: 疏导文件系统中的stage2stage2: 加载GRUB外围映像grub.conf/grub.cfg阶段 解析grub.conf/grub.cfg配置文件,加载默认内核镜像和 initrd (初始磁盘镜像,对应于/boot/initrd.img文件)镜像到内存中,当所有镜像筹备好后,即跳转到内核镜像,移交零碎控制权给内核,接下去进入到内核阶段文件后缀名称在Ubuntu22下面看到的是.cfg,可能其余零碎是.conf结尾该配置文件门路是/grub/grub.cfg或者/boot/grub/grub.cfg,门路具体位置取决于零碎装置时候是否宰割了一个/boot分区,之前装零碎的时候/boot分区都是必须调配的内核疏导阶段(第三阶段)/boot/kernel and Kernel parameter 内核读取/boot上面的文件,执行加载查看/boot分区的内容如下,能够看到内核保留了两个版本的镜像(img-5.15.0-53-generic和img-5.15.0-56-generic),其中新镜像是目前零碎失常运行时候加载的镜像,每次apt更新零碎的时候如果有新版本内核开释,更新时候会保留一份老版本镜像,等下一次新镜像更新到时候才会删除,一份冗余 $ ll /boot 总用量 165M-rw-r--r-- 1 root root 256K 十月 18 02:36 config-5.15.0-53-generic-rw-r--r-- 1 root root 256K 十一月 22 23:08 config-5.15.0-56-genericdrwx------ 3 root root 4.0K 一月 1 1970 efidrwxr-xr-x 5 root root 4.0K 十二月 3 09:44 grublrwxrwxrwx 1 root root 28 十二月 2 09:45 initrd.img -> initrd.img-5.15.0-56-generic-rw-r--r-- 1 root root 65M 十二月 1 09:01 initrd.img-5.15.0-53-generic-rw-r--r-- 1 root root 65M 十二月 4 09:04 initrd.img-5.15.0-56-genericlrwxrwxrwx 1 root root 28 十二月 2 09:45 initrd.img.old -> initrd.img-5.15.0-53-genericdrwx------ 2 root root 16K 五月 26 2021 lost+found-rw-r--r-- 1 root root 179K 二月 7 2022 memtest86+.bin-rw-r--r-- 1 root root 181K 二月 7 2022 memtest86+.elf-rw-r--r-- 1 root root 181K 二月 7 2022 memtest86+_multiboot.bin-rw------- 1 root root 6.0M 十月 18 02:36 System.map-5.15.0-53-generic-rw------- 1 root root 6.0M 十一月 22 23:08 System.map-5.15.0-56-genericlrwxrwxrwx 1 root root 25 十二月 2 09:45 vmlinuz -> vmlinuz-5.15.0-56-generic-rw------- 1 root root 12M 十月 18 02:41 vmlinuz-5.15.0-53-generic-rw------- 1 root root 12M 十一月 23 01:07 vmlinuz-5.15.0-56-genericlrwxrwxrwx 1 root root 25 十二月 2 09:45 vmlinuz.old -> vmlinuz-5.15.0-53-generic/boot/initrd ...