1. LinuxCNC环境搭建与实时内核配置
任务目标
在Ubuntu 20.04/22.04系统上完成LinuxCNC的安装,并配置RTAI实时内核,最终通过启动模拟器验证环境可用。本案例覆盖从内核安装到模拟器启动的完整闭环。
环境与依赖
- Ubuntu 20.04 LTS(64位)或Ubuntu 22.04 LTS
- 至少4GB内存、20GB可用磁盘空间
- BIOS中关闭Secure Boot(RTAI内核需要加载未签名模块)
- 网络连接(用于下载内核与软件包)
实现步骤
1. 安装RTAI实时内核
LinuxCNC的实时控制依赖RTAI或PREEMPT_RT内核。本案例使用RTAI内核,因其与LinuxCNC的集成最成熟。Ubuntu 20.04使用linux-image-4.19.0-rt-amd64,Ubuntu 22.04使用linux-image-5.15.0-rt-amd64。
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装RTAI内核(Ubuntu 20.04)
sudo apt install linux-image-4.19.0-rt-amd64 linux-headers-4.19.0-rt-amd64
# 若为Ubuntu 22.04,改用:
# sudo apt install linux-image-5.15.0-rt-amd64 linux-headers-5.15.0-rt-amd64
# 重启并选择RTAI内核启动
sudo reboot
重启后在GRUB菜单中选择“Advanced options for Ubuntu”,进入带-rt后缀的内核。登录后验证内核版本:
uname -r
# 预期输出包含 -rt- 字样,例如 4.19.0-rt-amd64
2. 安装LinuxCNC
LinuxCNC官方提供预编译软件源,安装后可直接使用模拟器功能,无需额外编译。
# 添加LinuxCNC软件源(Ubuntu 20.04)
sudo add-apt-repository ppa:linuxcnc/ppa
sudo apt update
sudo apt install linuxcnc-uspace
# Ubuntu 22.04用户请使用:
# sudo add-apt-repository ppa:linuxcnc/ppa-daily
# sudo apt update
# sudo apt install linuxcnc-uspace
安装完成后,LinuxCNC的可执行文件位于/usr/bin/linuxcnc,配置文件示例位于/usr/share/doc/linuxcnc/examples/。
3. 验证实时性配置
确认RTAI内核的实时模块已正确加载,这是模拟器能否以实时模式运行的前提。
# 检查RTAI模块是否加载
lsmod | grep rtai
# 预期输出包含 rtai_hal、rtai_sched 等模块
# 若模块未加载,手动加载:
sudo modprobe rtai_hal
sudo modprobe rtai_sched
4. 启动模拟器验证
LinuxCNC自带模拟器配置(模拟步进电机驱动),无需连接真实硬件即可验证环境完整性。
# 复制示例配置到用户目录
cp -r /usr/share/doc/linuxcnc/examples/sim.axis ~/sim.axis
# 启动模拟器
cd ~/sim.axis
linuxcnc sim.axis.ini
启动后应出现LinuxCNC主界面,包含坐标显示、程序编辑区和手动控制按钮。在命令行输入MDI命令G0 X10 Y10并执行,观察坐标显示是否更新为X=10.000 Y=10.000。
验证方法与判定标准
- 内核验证:
uname -r输出包含-rt,且lsmod | grep rtai能看到rtai_hal模块。 - 模拟器启动:LinuxCNC界面正常显示,无报错弹窗。
- 运动指令执行:MDI输入
G0 X10 Y10后,坐标显示变为X=10.000 Y=10.000,且无跟随误差报警。 - 实时状态确认:在LinuxCNC界面点击“显示”→“状态”,确认“实时线程”状态为“运行中”,且CPU占用显示为“0”(表示未超时)。
常见问题
- 启动时提示“rtapi: no rtai”:说明RTAI模块未加载,执行
sudo modprobe rtai_hal后重试。 - 模拟器界面卡死:检查BIOS中Secure Boot是否关闭,未关闭会导致实时模块加载失败。
- 坐标不运动:确认在MDI模式下输入,且未按下紧急停止按钮(界面右上角红色按钮需弹出状态)。
完成以上步骤并观察到坐标更新,即证明LinuxCNC环境搭建成功,实时内核配置正确,模拟器可正常运行。