百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

systemd详解2-源码第1部分 systemd-udevd

suiw9 2024-10-31 16:03 61 浏览 0 评论

2024年注定是不平凡的一年!面对环境中各种不稳定因素,更应该沉下心来,谦虚做人,低调做事!

systemd详解1介绍了systemd启动过程,从这篇开始介绍下sytemd的代码流程,先对代码中的关键结构和主线进行梳理。

整体流程

对systemd主线的代码进行拆分几部分,第一部分主要是环境初始化相关,如配置文件解析、kmod加载、mount 分区等,不涉及unit流程。

环境

对主线流程梳理前,代码中的部分条件进行说明下:

源码

1. skip_setup = early_skip_setup_check(argc, argv);

当argv中包含--switched-root,在系统启动时,使用initramfs临时系统,当真实根目录挂载后,会发生switch root,即从initramfs切换到真实的根文件系统,需要重新初始化系统。当argv包含--deserialize时说明需要进行反序列化,即从之前保存的文件中加载数据,这时需要跳过初始化。

2. log_set_upgrade_syslog_to_journal(true);

当用户设置log输出到syslog时,实际就是输出到journal。这里只是设置了log_target输出的位置,还不能输出,需要通过log_open后才会真正输出。

3. getpid_cached()

获取systemd的pid,该方法同getpid,只是可以从本地缓存中获取,省去了系统调用的时间。当返回值为1时,说明scope为system,即管理员模式。

4. detect_container()

判断systemd是否运行在容器中,检测的容器类型有openVZ、WSL、docker等。返回值大于0说明在容器中。

 5.  log_set_target_and_open(LOG_TARGET_KMSG);

开启log并且输出到kmsg中。

6. mount_setup_early();

目录挂载分2次进行,前期会挂载N_EARLY_MOUNT(默认4个):/proc、/sys、/dev/、/sys/kernel/security,最小化挂载后启用最基本的功能。

7. log_parse_environment();

上一步挂载/proc目录后解析/proc/cmdline,并解析log相关变量,如SYSTEM_LOG_COLOR、SYSTEMD_LOG_LEVEL等。

8. initialize_security(&loaded_policy,&security_start_timestamp, &security_finish_timestamp,&error_message);

安全相关策略初始化,包括selinux、smack、apparmor、ima等。

9. initialize_coredump(skip_setup);

通过skip_setup决定是否关闭coredump,一般情况会disable coredumps,确保启动期间不生成。如果kernel cmdline中有启用相关参数,那么启动期间还是可以生成core dump。

10. (void) kmod_setup();

systemd中加载kernel mod有2个地方:systemd-modules-load.service和kmod_setup,为了满足前期的需求,kmod_setup在systemd启动前期就进行了部分modules加载。借助libkmod库通过遍历kmod_table进行安装。

这里可以做开机优化项:把部分systemd-modules-load.service的module可以放到kmod_setup进行加载以解决依赖ready慢的问题,注意这里module只能放一些非耗时的模块。

11. mount_setup(loaded_policy, skip_setup);

同步骤6,挂载剩余目录,如果已经是挂载点就跳过。

12. (void) parse_configuration(saved_rlimit_nofile, saved_rlimit_memlock);

解析配置文件,并回滚之前保存的rlimit_*,配置文件路径为/etc/systemd/*.conf和/etc/systemd/*.conf.d/*。后者称为drop-ins(附加配置文件),优先级要高于前者,如果一个变量在2个文件中同时定义,后者会覆盖掉前者。如果需要修改变量,建议新增附加配置文件,而不是直接修改主配置。解析后的变量存储到各个arg_defaults.*。

13.  pager_open(arg_pager_flags);

分页的功能,如systemctl status信息量过大,全屏显示不全的情况下进行分页。

14. initialize_core_pattern(skip_setup);

设置coredump生成的格式,即往/proc/sys/kernel/core_pattern文件中写入conf解析后的结果。

15. collect_fds(&fds, &error_message);

收集已经打开的fd,并保存到fds中,用于反序列化用。过程是遍历/proc/self/fd目录下文件,反序列化含义是通过保存的fd获取到path路径,如fd=1,反序列化后为/xxx/xxx.x。

相关推荐

俄罗斯的 HTTPS 也要被废了?(俄罗斯网站关闭)

发布该推文的ScottHelme是一名黑客,SecurityHeaders和ReportUri的创始人、Pluralsight作者、BBC常驻黑客。他表示,CAs现在似乎正在停止为俄罗斯域名颁发...

如何强制所有流量使用 HTTPS一网上用户

如何强制所有流量使用HTTPS一网上用户使用.htaccess强制流量到https的最常见方法可能是使用.htaccess重定向请求。.htaccess是一个简单的文本文件,简称为“.h...

https和http的区别(https和http有何区别)

“HTTPS和HTTP都是数据传输的应用层协议,区别在于HTTPS比HTTP安全”。区别在哪里,我们接着往下看:...

快码住!带你十分钟搞懂HTTP与HTTPS协议及请求的区别

什么是协议?网络协议是计算机之间为了实现网络通信从而达成的一种“约定”或“规则”,正是因为这个“规则”的存在,不同厂商的生产设备、及不同操作系统组成的计算机之间,才可以实现通信。简单来说,计算机与网络...

简述HTTPS工作原理(简述https原理,以及与http的区别)

https是在http协议的基础上加了一层SSL(由网景公司开发),加密由ssl实现,它的目的是为用户提供对网站服务器的身份认证(需要CA),以至于保护交换数据的隐私和完整性,原理如图示。1、客户端发...

21、HTTPS 有几次握手和挥手?HTTPS 的原理什么是(高薪 常问)

HTTPS是3次握手和4次挥手,和HTTP是一样的。HTTPS的原理...

一次安全可靠的通信——HTTPS原理

为什么HTTPS协议就比HTTP安全呢?一次安全可靠的通信应该包含什么东西呢,这篇文章我会尝试讲清楚这些细节。Alice与Bob的通信...

为什么有的网站没有使用https(为什么有的网站点不开)

有的网站没有使用HTTPS的原因可能涉及多个方面,以下是.com、.top域名的一些见解:服务器性能限制:HTTPS使用公钥加密和私钥解密技术,这要求服务器具备足够的计算能力来处理加解密操作。如果服务...

HTTPS是什么?加密原理和证书。SSL/TLS握手过程

秘钥的产生过程非对称加密...

图解HTTPS「转」(图解http 完整版 彩色版 pdf)

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。...

HTTP 和 HTTPS 有何不同?一文带你全面了解

随着互联网时代的高速发展,Web服务器和客户端之间的安全通信需求也越来越高。HTTP和HTTPS是两种广泛使用的Web通信协议。本文将介绍HTTP和HTTPS的区别,并探讨为什么HTTPS已成为We...

HTTP与HTTPS的区别,详细介绍(http与https有什么区别)

HTTP与HTTPS介绍超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的...

一文让你轻松掌握 HTTPS(https详解)

一文让你轻松掌握HTTPS原文作者:UC国际研发泽原写在最前:欢迎你来到“UC国际技术”公众号,我们将为大家提供与客户端、服务端、算法、测试、数据、前端等相关的高质量技术文章,不限于原创与翻译。...

如何在Spring Boot应用程序上启用HTTPS?

HTTPS是HTTP的安全版本,旨在提供传输层安全性(TLS)[安全套接字层(SSL)的后继产品],这是地址栏中的挂锁图标,用于在Web服务器和浏览器之间建立加密连接。HTTPS加密每个数据包以安全方...

一文彻底搞明白Http以及Https(http0)

早期以信息发布为主的Web1.0时代,HTTP已可以满足绝大部分需要。证书费用、服务器的计算资源都比较昂贵,作为HTTP安全扩展的HTTPS,通常只应用在登录、交易等少数环境中。但随着越来越多的重要...

取消回复欢迎 发表评论: