如何在 Debian 中包含一个在启动时加载的特定模块?

如何在 Debian 中包含一个在启动时加载的特定模块?

我正在使用 Klipper 进行 3D 打印,我偶然发现了一个拉取请求,该请求允许在 Klipper 中支持 TTY,从而允许 Mosaic Palete 3 Pro 控制打印机的连接模式。我已合并需要更改的文件 (klippy.py) 以打开 TTY。但是,当我联系更改的作者时,他们说:“我只是确保小工具串行驱动程序 (g_serial) 已加载到我的 RPi 上,并且来自 P3P 的 M105 探测器出现在 /dev/ttyGS0 上。”

这就引出了我的问题。我需要在启动时、在 klipper 服务启动之前使用小工具串行驱动程序。

  1. 修改了 klipper.service 中的 ExecStart,以在启动 klippy 之前尝试在 g_serial 上进行 modprobe,并将其传递给 /dev/ttyGS0,我收到了有关 python 程序的语法错误。
[Unit]
Description=Klipper 3D Printer Firmware SV1
Documentation=https://www.klipper3d.org/
After=network-online.target
Wants=udev.target

[Install]
WantedBy=multi-user.target

[Service]
Type=simple
User=biqu
RemainAfterExit=yes
WorkingDirectory=/home/biqu/klipper
EnvironmentFile=/home/biqu/printer_data/systemd/klipper.env
ExecStart=modprobe g_serial && /home/biqu/klippy-env/bin/python $KLIPPER_ARGS
Restart=always
RestartSec=10
  1. 还尝试创建另一项服务,该服务Requires=modprobe.target是 klipper 服务所必需的,同样的问题。

  2. 到目前为止,我的第三次也是最后一次尝试是在 modprobe.d 中创建一个条目,但是我不确定 .conf 应该叫什么名字以及该文件的内容,以便 modprobe g_serial 打开 ttyGS0。

如果一切进展顺利,我原本希望在运行 klippy.py 之前自动执行 Klipper 的启动过程以检测并打开与 TTY 的连接

答案1

为了在启动时加载内核模块,您只需在文件中命名该模块/etc/modules

答案2

我的解决方案是编写 klipper.service 所需的另一个服务文件:

klippy_init.service

[Unit]
Description=Klipper 3D Printer Firmware SV1
Documentation=https://www.klipper3d.org/
Wants=modprobe

[Install]
WantedBy=multi-user.target

[Service]
Type=simple
User=root
RemainAfterExit=yes
ExecStart=modprobe g_serial
Restart=always
RestartSec=10
StartLimitIntervalSec=0

和 Klipper.service

[Unit]
Description=Klipper 3D Printer Firmware SV1
Documentation=https://www.klipper3d.org/
After=network-online.target
Wants=udev.target
Requires=klippy_init.service

[Install]
WantedBy=multi-user.target

[Service]
Type=simple
User=biqu
RemainAfterExit=yes
WorkingDirectory=/home/biqu/klipper
EnvironmentFile=/home/biqu/printer_data/systemd/klipper.env
ExecStart=/home/biqu/klippy-env/bin/python $KLIPPER_ARGS
Restart=always
RestartSec=10

相关内容