Ubuntu 22.04 下 IGH EtherCAT 主站永久性开机自启

一、前置准备:清理旧配置(避免冲突)

先移除之前通过update-rc.d/systemd 设置的无效自启配置,确保仅保留rc.local的自启逻辑:

1. 移除 SysVinit 风格的自启软链接

复制代码
sudo gedit /etc/rc.local
  1. 写入完整自启脚本(复刻手动启动逻辑)

    #!/bin/bash

    延迟20秒:确保开机后内核、网卡、网络全就绪(可根据机器调整)

    sleep 20

    核心操作:启动EtherCAT主站(与手动执行的命令一致)

    /etc/init.d/ethercat start

    兜底:验证/dev/EtherCAT0是否创建,未创建则手动补(极端情况防护)

    if [ ! -c /dev/EtherCAT0 ]; then
    # IGH EtherCAT主站设备号固定:主240,次0
    sudo mknod /dev/EtherCAT0 c 240 0
    sudo chmod 666 /dev/EtherCAT0
    fi

    记录开机日志(方便排查问题)

    echo "EtherCAT boot success - $(date)" >> /var/log/ethercat_boot.log
    lsmod | grep ec_ >> /var/log/ethercat_boot.log
    ls /dev/EtherCAT0 >> /var/log/ethercat_boot.log 2>&1

    exit 0

  2. 添加执行权限(必须)

    sudo chmod +x /etc/rc.local

    验证权限(输出含x=成功)

    ls -l /etc/rc.local

三、核心步骤 2:修复 rc-local.service(实现永久启用)

补充[Install]段,解决 Ubuntu 22.04 默认rc-local.service"临时启用(enabled-runtime)" 的问题:

1. 备份并编辑rc-local.service配置

复制代码
# 备份原配置(防止出错)
sudo cp /lib/systemd/system/rc-local.service /lib/systemd/system/rc-local.service.bak

# 编辑配置文件
sudo nano /lib/systemd/system/rc-local.service
  1. 写入完整生效配置

    SPDX-License-Identifier: LGPL-2.1-or-later

    This file is part of systemd.

    systemd is free software; you can redistribute it and/or modify it

    under the terms of the GNU Lesser General Public License as published by

    the Free Software Foundation; either version 2.1 of the License, or

    (at your option) any later version.

    This unit gets pulled automatically into multi-user.target by

    systemd-rc-local-generator if /etc/rc.local is executable.

    [Unit]
    Description=/etc/rc.local Compatibility
    Documentation=man:systemd-rc-local-generator(8)
    ConditionFileIsExecutable=/etc/rc.local
    After=network.target

    [Service]
    Type=forking
    ExecStart=/etc/rc.local start
    TimeoutSec=0
    RemainAfterExit=yes
    GuessMainPID=no

    [Install]
    WantedBy=multi-user.target

  2. 重新加载配置并永久启用

    重新加载systemd配置

    sudo systemctl daemon-reload

    先取消临时启用,再永久启用

    sudo systemctl disable rc-local
    sudo systemctl enable rc-local

    验证启用状态(输出enabled=永久生效)

    sudo systemctl is-enabled rc-local

  3. 重启 rc-local 服务(使配置生效)

    sudo systemctl restart rc-local

    验证服务状态(输出active=成功)

    sudo systemctl status rc-local

验证永久性启用

复制代码
# 1. 检查rc-local启用状态(永久enabled)
sudo systemctl is-enabled rc-local

# 2. 检查开机日志(确认自启执行)
cat /var/log/ethercat_boot.log
相关推荐
数智工坊5 小时前
Zotero自建Ubuntu WebDAV附件同步方案(完美解决存储空间不足)
linux·运维·ubuntu
江畔柳前堤6 小时前
HBM:大语言模型时代的「算力血液」——从内存墙到带宽革命的深度拆解
服务器·人工智能·windows·目标检测·语言模型·自然语言处理·软件工程
ltl7 小时前
HTTP/3 实战:从 QUIC 到 H3 的完整请求链路
linux
独隅7 小时前
GitHub Actions 自动化运维实战:CI/CD 流水线一体化效果展示
运维·自动化·github
ltl7 小时前
POSIX 文件锁:flock、fcntl 与 NFS 上的工程陷阱
linux
ltl7 小时前
CUDA 生态:cuBLAS、cuDNN、NCCL、Triton、CUTLASS
linux
饺子大魔王的男人7 小时前
CentOS部署Cockpit:图形化查看系统、日志与服务状态
linux·运维·centos
不会就选b7 小时前
Linux之信号(二)
linux·运维·服务器
我是小灰灰吖8 小时前
QT在线安装器使用指南:从下载到配置完整教程
linux·qt·ubuntu
GlueNa2SiO38 小时前
第十八章 Linux故障排查与恢复
linux·服务器·笔记·学习