4.内核及启动流程和systemd及awk

发布时间 2023-05-21 18:34:39作者: 碧雪殇情

总结内核设计流派及特点

宏内核(monolithic kernel):又称单内核和强内核,unix,Linux吧所有系统服务都放在内核里,所有功能集成于同一个程序,分层实现不同功能。其实Linux在单内核实现了模块化,也就相当于吸收了微内核的优点

微内核(micro kernel):windows,Solaris,HarmonyOS。简化内核功能,在内核之外的用户态尽可能多地实现系统服务,同时加入相互之间的安全保护,每种功能使用一个单独子系统实现,将内核功能移到用户空间,性能差。

总结centos 6 启动流程,grub工作流程

1.加载BIOS的硬件信息,获取第一个启动设备

2.读取第一个启动设备的MBR引导加载程序(grub)的启动信息

3.加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备

4.核心执行init程序,并获取默认的运行信息

5.init程序执行/etc/rc.d/rc.sysinit文件,重新挂载根系统文件

6.启动核心的外挂模块

7.init执行运行的各个批处理文件(scripts)

8.init执行/etc/rc.d/rc.local

9.执行/bin/login程序,等待用户登录

10.登录后开始以shell控制主机

GRUB启动阶段

primary boot loader

1st stage:加载MBR的前446字节

1.5 stage:MBR之后的扇区,让stage 1中的bootloader能识别stage 2所在的分区(/boot)上的文件系统(xfs)

secondary boot loader

2nd stage,分区文件/boot/grub

GRUB的作用是为了引导并加载kernel,要加载kernel首先得找到kernel所在的路径,因此首先就得有文件系统,要有文件系统首先要加载文件系统驱动,而文件系统驱动文件的大小远大于446字节(大约400+KB),而MBR之后的扇区可以存放一部分文件系统驱动,此时加载的文件系统驱动是grub2阶段所需文件(/boot下文件)需要的文件系统驱动,此时就可以使用/boot/grub/grub.conf,此配置文件中定义了kernel文件的位置,然后就可以加载kernel。

手写chkconfig服务脚本,可以实现服务的开始,停止,重启

总结systemd服务配置文件

/usr/lib/systemd/system #每个服务最主要的启动脚本,类似之前的/etc/init.d

/lib/systemd/system #ubuntu的对应目录,兼容centos7,8和Ubuntu

/run/systemd/system #系统执行过程中产生的服务脚本,比上面目录优先运行
/etc/systemd/system #管理员建立的执行脚本,类似/etc/rc.d/

总结system启动流程

1.UEFI或BIOS初始化,运行POST开机自检

2.选择启动设备

3.引导装载程序,centos7是grub2,加载装载程序的配置文件

a. /etc/grub.d/

b. /etc/default/grub

c. /boot/grub2/grub.cfg

4.加载initramfs驱动模块,即通过/boot下的简化版linux加载操作系统根所需文件系统的驱动

5.加载内核选项

6.内核初始化,centos7使用systemd代替init

7.执行initrd.target所有单元,包括挂载/etc/fstab

8.从initramfs根文件系统切换至磁盘根目录

9.systemd指定默认target配置,配置文件/etc/systemd/system/default.target

10.systemd执行sysinit.target初始化系统及basic.target准备操作系统

11.systemd启动muti-user.target下的本机与服务器服务

12.systemd执行muti-user.target下的/etc/rc.d/rc.local

13.systemd执行muti-user.target下的getty.target及登录服务

14.systemd执行graphical需要的服务

总结awk工作原理,awk命令,选项,示例

1,主要的作用:

用来处理文本,将文本按照指定的格式输出。其中包含了变量,循环以及数组

2,格式:

    1. awk [选项] '匹配规则和处理规则 ' [处理文本路径]

主要匹配的是正则表达式

2.标准输出 awk [选项] “匹配规则和处理规则”

  1. 字符串
  2. 正则表达式

3. 处理规则

BEGIN{} : BEGIN是在awk处理文本之前运行

// : 使用的匹配规则

{} :循环(每次只处理一行数据)

END{} :当所有的处理全部执行完毕之后,执行END中的相关操作

把/etc/password/中包含root的列打印出来