在 Ubuntu 20.04 中调出界面的具体过程是怎样的?
即哪个进程管理这个?(是 systemd-networkd 吗?)它基于什么配置数据?
注意:我不是问 netplan 配置,netplan 只是一个抽象层,它将 netplan 配置转换为适合特定后端使用的配置 - 我对该特定后端的底层功能以及它经历的过程更感兴趣。
(编辑后重新聚焦问题,以明确表明我对 netplan 配置抽象层下面发生的事情感兴趣)。
答案1
在启动过程的早期netplan-生成二进制文件作为systemd 生成器。二进制文件可以在 处查看(符号链接)/lib/systemd/system-generators/netplan
。
二进制文件使用 netplan 配置为或netplan-generate
创建配置。例如,在 处创建文件。systemd-networkd
NetworkManager
systemd-networkd
/run/systemd/network/10-netplan-SOMETHING.network
systemd-networkd.service
在引导过程的后期,systemd 会为或启动服务NetworkManager.service
。该服务根据其配置(刚刚由 netplan 创建)配置网络。
答案2
当系统启动并且内核/sbin/init
为 PID执行时,它实际上将通过符号链接1
执行 。详情请参阅。/lib/systemd/systemd
man 1 systemd
在 的早期启动过程中systemd
,所有生成器都将被执行,这可能会在所有配置文件加载之前自动生成新的配置文件。man 7 systemd.generator
有关此过程的详细信息,请参阅。
然后,( PID systemd
1) 将查找default.target
默认情况下从/lib/systemd/system/default.target
到 的符号链接graphical.target
。(您应该使用 进行查询,systemctl get-default
并使用 设置新目标systemctl set-default
。)
一旦知道默认目标,systemd
(PID 1)就会递归地寻找该目标的依赖项。
如果你想知道某个特定目标或服务是如何启动的,请尝试例如systemd-analyze critical-chain network.target
或systemd-analyze dump
。netplan
通过生成器初始化/lib/systemd/system-generators/netplan
,它还包含有关 NetworkManager 的硬编码信息。
我不太清楚如何在软件 RAID 设备上systemd
使用文件系统根目录的系统进行引导(例如从中的 RAID 5 设备引导)。我假设用于构建 RAID 阵列,但我找不到有关其实际工作原理的详细信息。显然,根文件系统的具体位置和安装方式是实现细节,将在尝试读取配置文件或启动网络之前发生,因此对于原始问题而言并不重要。/
md
/dev/md0
initrd