如何拯救被 systemd 脚本关闭的 Ubuntu Server 16.04?

如何拯救被 systemd 脚本关闭的 Ubuntu Server 16.04?

我编写了一个程序,只要按下按钮,它就会自动关闭 Raspberry Pi 3b (Ubuntu Server 16.04)。它只不过是一个小型 bash 脚本,每秒读取 Pi 的 GPIO 引脚,并在按下按钮时关闭设备。

然而,我犯了一个错误,条件始终为真,这意味着程序一启动就关闭 Pi。由于令人难以置信的愚蠢,我已经将该程序链接到 systemd ('After=multi-user.target')。意思是:一旦 Pi 完成启动,它就会再次自行关闭。我看不到有任何机会打断这个过程。有没有办法以抑制某些“systemd”进程的方式编辑“/boot/config.txt”?还有其他想法如何修复这个系统吗?在我的 Mac 上,我只看到启动分区,而我的 Linux 计算机没有 SD 卡插槽。

PS:我一开始就将这些图像之一闪存到SD卡上https://ubuntu-pi-flavour-maker.org/download/使用“dd”。 PS2:关机由“poweroff”初始化

答案1

使用 systemd 进行 init,可以通过附加 systemd.unit=rescue.target(或者emergency.target如果失败)到/boot/cmdline.txt.

如果由于某种原因这不起作用,或者在非 systemd 系统上,请添加init=/bin/sh到行尾,这将导致系统完全绕过与 init 有关的任何内容。

您可能需要以读写方式挂载文件系统才能进行任何修改。您可以通过附加rw到引导命令行或mount -o remount,rw /在引导时发出命令来执行此操作。

答案2

systemd 扫描内核参数。例如禁用 cron.service添加到您的引导加载程序:

systemd.mask=cron.service 

如果您有权访问 config.txt ,则必须修改为 cmdline.txt 。

来源 :

https://www.raspberrypi.org/documentation/configuration/config-txt/boot.md

来源 : https://www.freedesktop.org/software/systemd/man/kernel-command-line.html

相关内容