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
相关推荐
iYun在学C2 小时前
驱动程序(创建设备节点实验)
linux·c语言·嵌入式硬件
源远流长jerry2 小时前
DPDK 19.08(Ubuntu 16.04)环境搭建
linux·运维·网络·ubuntu
jiayong232 小时前
Word协作与审阅实用手册
服务器·数据库·word
Ha_To2 小时前
2026.1.14 Linux计划任务与进程
linux·运维·服务器
王闯写bug2 小时前
【openEuler】修改ssh端口号
服务器·网络·ssh·openeuler
oMcLin2 小时前
如何在CentOS 7.9上配置并优化高并发视频流平台,利用Nginx和RTMP模块确保低延迟流媒体传输?
linux·nginx·centos
之歆2 小时前
检索增强拦截器-查询转换器&翻译转化器&document后置处理器
运维·服务器
sxgzzn2 小时前
无人机热成像+数字孪生:光伏运维的智能革命
运维·无人机