我正在尝试env
从 systemd 服务单元转储,systemctl show-environment
但没有做我想要的。有什么方法可以systemctl
向我展示我的服务内部的环境是什么样的?
我正在尝试将 Qemu 添加到我的持续集成管道中以测试各种initrd
工件。我已经发现我可以像这样运行 Qemu:
qemu-system-x86_64 \
-machine q35 \
-drive if=pflash,format=raw,file=OVMF_CODE.fd,readonly \
-drive if=pflash,format=raw,file=OVMF_VARS.fd \
-kernel vmlinuz-4.4.0-121-generic \
-initrd my-initramfs.cpio.xz \
-nographic
Run Code Online (Sandbox Code Playgroud)
...如果我在脚本中执行此操作,则会导致qemu-system-x86_64
退出状态:0
init
# poweroff -f
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为 init 脚本不会退出——它会poweroff -f
“永远”调用和休眠,或者直到 Qemu 执行“断电”:
ACPI: Preparing to enter system sleep state S5
reboot: Power down
Run Code Online (Sandbox Code Playgroud)
我希望能够init
通过强制执行exit
错误来检测脚本中的问题set -eu
。退出init
脚本(正确)会导致内核崩溃,但qemu-system-x86_64
进程永远挂起。
我怎样才能让它永远挂起来?如何让 Qemu 主机检测 Qemu 来宾中的内核崩溃?
进一步澄清:
我的应用程序的性质是安全敏感的;即,“允许”配置/编译 linux 内核,但不允许传递内核参数。把它放在一个很好的点上,CMDLINE_OVERRIDE
启用。
可以patch
幂等地调用;即,是否存在某些选项组合会导致重复调用patch
与单次调用patch
(对于非空差异)具有相同的效果?
我知道可以从 linux 内核中提取嵌入式 initramfs cpio。我想知道是否可以进行反向操作;即,给定已编译的内核和 initramfs 存档,如何将它们组合起来?
我正在尝试实现与此内核配置相同的效果...
CONFIG_EFI=y
CONFIG_EFI_STUB=y
...
CONFIG_FB_EFI=y
...
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE="root=..."
...
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE="my_initrd.cpio"
Run Code Online (Sandbox Code Playgroud)
...没有实际配置和/或编译内核。
参考:
我有一个用于 sshd 的 systemd 服务单元:
$ systemctl status sshd
* ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-09-30 18:54:10 UTC; 6s ago
Process: 13923 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
Process: 13918 ExecReload=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Process: 6287 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 6296 (sshd)
Tasks: 1 (limit: 4915)
CGroup: /system.slice/ssh.service
`-6296 /usr/sbin/sshd -D
Sep 30 18:54:10 machine systemd[1]: Starting OpenBSD Secure Shell server...
Sep 30 18:54:10 machine sshd[6296]: …
Run Code Online (Sandbox Code Playgroud) linux ×3
linux-kernel ×2
systemd ×2
diff ×1
init-script ×1
initramfs ×1
initrd ×1
kernel ×1
kernel-panic ×1
patch ×1
qemu ×1