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
相关推荐
java_logo3 小时前
Docker 部署 dockurr/windows:轻松搭建浏览器可控 Windows 虚拟机
运维·windows·docker·容器·虚拟机·kvm·轩辕镜像
醇氧3 小时前
CentOS7.9 Yum 安装 Redis6.x(RPM 包,无需编译,推荐 remi 源)
linux·python
怪奇云呼军3 小时前
从 ElevenLabs 看工具调用:闪电智能 Voice Agent 的企业集成验收设计
android·大数据·运维·服务器·网络·人工智能·kotlin
傲世仙尊4 小时前
重写的顿悟-lambda类型擦除条件变量的真相与sendto里的bind
linux·网络
zhangrelay4 小时前
ROS2 Lyrical实验5导航Nav2
linux·笔记·学习·ubuntu·机器人
一条破秋裤4 小时前
Linux 线程分离与主动取消:pthread_detach、pthread_cancel
java·linux·jvm
j7~4 小时前
【Linux网络】四十六.《高级 IO (上篇)》-- 详解
linux·运维·网络
IT大白鼠4 小时前
彭大帅的AI运维助手——自然语言管理 Linux 集群与网络设备——第 0 篇 · 导读:把 Linux 运维交给 AI,到底靠谱吗
linux·运维·人工智能
分布式存储与RustFS5 小时前
自托管对象存储的三种 TLS 签发:自签、Let‘s Encrypt、内网 CA 的选择与轮换
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
AI智讯中枢5 小时前
高性能 C++ 实战 (五):perf+FlameGraph 火焰图生产实战,精准定位 CPU / 缓存 / 锁瓶颈,避坑 + 完整实操案例
linux·c++·性能调优·性能分析·perf·flamegraph·火焰图