initrd 命令和 systemd 服务的交互做同样的事情

initrd 命令和 systemd 服务的交互做同样的事情

我对引导过程如何工作有一个大致的了解,但现在我正在自定义 initrd 过程,我无法全神贯注于此。

如果有一个 systemd 服务可以连接到远程文件系统或磁盘(例如 NFS 或 iSCSI),但在某些情况下,systemd 服务完成的操作必须在 initrd 进程中处理,那么如何处理?

您是否构建了一个在 initrd 中执行相同操作的非 systemd 版本?那么,systemd 服务是否需要检测它要做的事情是否已经在它之外完成了?像 initrd 中加载的内核模块这样的事情是否会在枢纽根进程之后留下,以便由 systemd 服务再次完成?

基本上,我的问题是,如果您正在运行本地硬盘驱动器安装,该安装使用 systemd 服务将 NFS 或 iSCSI 卷安装为额外的文件夹或设备,并且您正在将设置更改为无盘启动,那么这些事情systemd 服务(至少对于启动所需的任何事情)都必须在 initrd 中完成。但是,如果您还想安装其他卷并且仍要运行 systemd 服务,那么如何处理 initrd 已安装的卷的配置?

我在本地磁盘安装上使用 systemd-networkd,但 initrd 必须启动网络设备并静态配置它或使用 DHCP,那么使用 systemd-networkd 会发生什么情况呢?它是否不再有由 initrd 启动的网络配置文件,或者仍然需要它? (initrd 配置是否会在枢轴根或类似的情况下被丢弃?)

(作为我进行定制的背景,它详细记录了如何使用 iSCSI 进行无盘启动,但我想使用远程 DMA 协议 SRP 进行无盘启动,因此 initrd 必须加载 SRP 内核模块 (ib_srp等等)并连接到远程卷。)

相关内容