如何在使用 systemd 要求 tty 登录之前解析 /proc/cmdline

如何在使用 systemd 要求 tty 登录之前解析 /proc/cmdline

首先,我尝试/proc/cmdline用这个脚本进行解析:

#!/bin/bash
for i in $(cat /proc/cmdline)
do
    export $i
done

我尝试做一个systemd服务

[Unit]
Description=Parse cmdline

[Service]
Type=simple
ExecStart=/bin/bash -c "source /opt/cmdline_parser.sh"

[Install]
WantedBy=default.target

手动启动服务可以工作,但变量不会导出到我的 shell 中。我需要尽早完成此操作,以便能够选择开始登录或启动脚本。因此,放入第一个脚本/etc/profile.d是不可能的。

我想测试的内核参数是:“deploy package=testxz_9e full bittorrent”

我在 nfsroot 上 PXE 启动客户端,并且如果设置了 $deploy,我想启动部署脚本。该脚本需要 $package 来知道要部署哪个存档,$full 意味着我将恢复并 mkfs 所有分区,$bittorrent 告诉使用 bittorent 进行部署。

我希望将这些 var 导出到 systemd 使用的 shell 中。对于没有“var=value”语法的var,我只想用bash“if [[ -v $var ]]”测试它们,所以我认为如果它没有值并不重要。

部署

这里是 PXE 启动文件:

DEFAULT tool
label tool
KERNEL tool_nfs/vmlinuz
APPEND ro initrd=tool_nfs/initrd.img root=/dev/nfs ip=dhcp nfsroot=xxx.xxx.xxx.xxx:/srv/nfsroot web_srv=xxx.xxx.xxx.xxx deploy package=testxz_9e full=y bittorrent

相关内容