在装有 Arch Linux 的 Raspberry Pi 上,有一个名为
serial-getty@AMA0
的服务处于活动状态。
单元文件为:/usr/lib/systemd/system/[电子邮件受保护]
作为root我可以调用
systemctl stop serial-getty@ttyAMA0
systemctl disable serial-getty@ttyAMA0
但是重新启动后,服务将启用并再次运行。
为什么服务关闭后又开启了?如何永久禁用它?
更新
systemd 使用 /usr/lib/systemd/system-generators/ 中的 generators 是一个名为 systemd-getty-generator 的二进制文件。该二进制文件在系统启动时运行,并将符号链接 [email protected] 添加到
/run/systemd/generator/getty.target.wants
。
我最终找到了一个肮脏的解决方案。我注释掉了 /usr/lib/systemd/system/[email protected] 中的所有操作。该服务似乎确实启动了,但没有阻止 ttyAMA0。
我找到了一种方法来阻止内核运行生成器,从而根本不启动服务。必须添加以下内核参数:
systemd.getty_auto=no
在这里找到了这个答案。
由于我使用的是 Raspberry Pi 4,因此我将此参数添加到 /boot/cmdline.txt 文件中。
system("systemctl stop [email protected]");
system("systemctl disable [email protected]");
我用过,效果很好。