initramfs systemd 服务的内省 - 如何?

Ben*_*min 6 linux boot arch-linux initramfs systemd

背景

  • 我正在运行 ArchLinux,使用 systemd 二进制文件启动必要的服务作为 initramfs 的一部分(root fs 解密、挂载等)。
  • 我想检查一下作为这个阶段的一部分启动了哪些 systemd 单元,以及何时启动。
  • systemd-analyze plot 只显示切换根发生后所有单元的时间图。
  • 交换机根单元(定义为 initrd 引导序列中的最后一个单元)状态:

    [Service]
    # ...
    ExecStart=/usr/bin/systemctl --no-block --force switch-root /sysroot
    # ...
    
    Run Code Online (Sandbox Code Playgroud)
  • switch-root 系统命令上的 systemctl 手册页有这样的说法:

    switch-root ROOT [初始化]

    切换到不同的根目录并在其下执行一个新的系统管理器进程。这旨在用于初始 RAM 磁盘(“initrd”),并将从 initrd 的系统管理器进程(又名“init”进程)过渡到从实际主机卷加载的主系统管理器进程。此调用需要两个参数:将成为新根目录的目录,以及在其下作为 PID 1 执行的新系统管理器二进制文件的路径。如果省略后者或空字符串,将自动搜索 systemd 二进制文件用于并用作初始化。如果省略系统管理器路径,等于空字符串或与 systemd 二进制文件的路径相同,则 initrd 的系统管理器进程的状态将传递给主系统管理器,这允许稍后对所涉及服务的状态进行自省在 initrd 启动阶段。

    然后在 initrds 问题上保持沉默......

启动后,我如何内省 initrd 启动阶段所涉及的服务状态,如上面推断的那样,或者发现什至运行了哪些单元(因为有些是动态生成的)?

ptm*_*man 4

https://freedesktop.org/wiki/Software/systemd/Debugging/建议使用journalctl -b来查看启动时的日志消息。