먼저 /proc/cmdline
다음 스크립트로 구문 분석을 시도했습니다.
#!/bin/bash
for i in $(cat /proc/cmdline)
do
export $i
done
체계적인 서비스를 만들려고 노력합니다
[Unit]
Description=Parse cmdline
[Service]
Type=simple
ExecStart=/bin/bash -c "source /opt/cmdline_parser.sh"
[Install]
WantedBy=default.target
서비스 시작은 수동으로 작동하지만 변수는 내 셸로 내보내지지 않습니다. 로그인을 시작하거나 스크립트를 시작할 수 있는 옵션을 가지려면 이 작업을 일찍 수행해야 합니다. 따라서 첫 번째 스크립트를 넣는 것은 /etc/profile.d
불가능합니다.
테스트하려는 커널 매개변수는 "deploy package=testxz_9e full bittorrent"입니다.
nfsroot에서 클라이언트를 PXE 부팅하고 있으며 $deploy가 설정된 경우 배포 스크립트를 시작하려고 합니다. 스크립트는 배포할 아카이브를 알기 위해 $package가 필요하고, $full은 모든 파티션을 복원하고 mkfs한다는 것을 의미하며, $bittorrent는 bittorent를 사용하여 배포하도록 지시합니다.
이 변수를 systemd에서 사용하는 쉘로 내보내고 싶습니다. "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