赞
踩
第二章 安装LinuxCNC
目录
3.1、错误1:没有规则可制作目标“../../certs/debian-uefi-certs.pem
由于需求变更,转为使用Xenomai实时内核配合IgH EtherCAT Master进行工作。下面将记录自己的安装过程。
需要下载3个文件,分别是Linux内核源码、Xenomai 3.1源码和ipipe-core补丁。
笔者原安装系统LinuxCNC官网镜像,其内核如下,为配合Xenomai,笔者选择更换内核,更换为linux-4.19.196。小版本之间的差别对于Xenomai影响未知,欢迎各位讨论。
Linux debian 4.19.0-17-rt-amd64 #1 SMP PREEMPT RT Debian 4.19.194-2 (2021-06-21) x86_64 GNU/Linux
Linux内核下载地址:Index of /kernel/linux/kernel/v4.x/
Xenomai 3.1 源码下载地址:Index of /downloads/xenomai/stable
ipipe补丁下载地址:Index of /downloads/ipipe/v4.x/x86
笔者这里选择linux-4.19.196.tar.gz 、xenomai-3.1.tar.bz2、ipipe-core-4.19.196-cip53-x86-19.patch
sudo apt-get install gcc git libncurses5-dev make flex bison libssl-dev libelf-dev automake
如果是默认下载目录,进入/home/用户名/下载(或Downloads),解压前面下载的两个压缩包。
- tar -xvf linux-4.19.196.tar.gz
- tar -xvf xenomai-3.1.tar.bz2
解压后文件保存到指定文件夹
- sudo mkdir ~/xenomai
- sudo cp -r linux-4.19.196 ~/xenomai
- sudo cp -r xenomai-3.1 ~/xenomai
将xenomai导入待编译的内核中
- cd ~/xenomai/linux-4.19.196
- ../xenomai-3.1/scripts/prepare-kernel.sh --linux=~/xenomai/linux-4.19.196 --arch=x86_64 --ipipe=ipipe-core-4.9.196-cip53-x86-19.patch
sudo make menuconfig
内核配置参考如下
* General setup
--> Local version - append to kernel release: -xenomai-3.1(起个区分内核的名字)
--> Timers subsystem
---> High Resolution Timer Support [*](默认)
* Pocessor type and features
--> Processor family
---> Core 2/newer Xeon (if “cat /proc/cpuinfo | grep family”
returns 6, otherwise set as Generic otherwise)
--> Multi-core scheduler support [](关闭)
* Xenomai/cobalt
--> Sizes and static limits
---> Number of registry slots (512 --> 4096)
---> Size of system heap (Kb) (4096 --> 4096)
---> Size of private heap (Kb) (256 --> 256)
---> Size of shared heap (Kb) (256 --> 256)
---> Maximum number of POSIX timers per process (256 --> 512)
--> Drivers
---> RTnet
---> RTnet, TCP/IP socket interface (Enable)
----> Drivers
-----> New intel(R) PRO/1000 PCIe(Gigabit) [M](模块)
-----> Realtek 8169(Gigabit) [M](模块)
-----> Loopback [M](默认)
----> Add-Ons
-----> Real-Time Capturing Support [M](模块)
* Power management and ACPI options
--> CPU Frequency scaling
---> CPU Frequency scaling [](关闭)
--> ACPI (Advanced Configuration and Power Interface) Support
---> Processor [](关闭)
--> CPU Idle
---> CPU idle PM support [](关闭)
* Memory Management Options
---> Transparent Hugepage Support [](关闭)
---> Allow for memory compaction [](关闭)
---> Contiguous Memory Allocation [](关闭)
---> Page Migration [](关闭)
* Device Drivers
--> Unisys visorbus driver [](关闭)
- sudo make -j4 bzImage
- sudo make modules
- sudo make INSTALL_MOD_STRIP=1 modules_install
在编译过程中,我遇到的错误为:
“………没有规则可制作目标“../../certs/debian-uefi-certs.pem”,由“certs/x509_certificate_list” 需求……”
解决方法为:
sudo vim .config
输入
/CONFIG_SYSTEM_TRUSTED_KEYS
设置CONFIG_SYSTEM_TRUSTED_KEYS=""
三、安装内核
写到这里时,笔者已经有点弄混了安装内核和上面编译内核的一些步骤,如有遗漏错误,敬请谅解。其中有一段过程是需要进行2小时的。
将内核编译源码路径(~/xenomai/linux-4.19.196)下的.config文件拷贝到/boot路径下,并重命名,其尾缀为第5步中“Local version”设置的内核名字(xenomai-3.1):
- sudo cp ~/xenomai/linux-4.19.196/.config /boot
- sudo mv /boot/.config /boot/config-xenomai-3.1
将内核编译源码中的bzImage拷贝被到/boot下并重命名,尾缀同上:
- sudo cp ~/xenomai/linux-4.19.196/arch/x86_64/boot/bzImage /boot
- sudo mv /boot/bzImage /boot/vmlinux-4.19.196-xenomai
将内核编译源码中的System.map拷贝被到/boot下并重命名,尾缀同上:
- sudo cp ~/xenomai/linux-4.19.196/System.map /boot
- sudo mv /boot/System.map /boot/System.map-4.19.196-xenomai
生成/boot/initrd.img-5.10.76-xenomai文件:
- cd /lib/modules/4.19.196-xenomai-3.1
- sudo update-initramfs -c -k 4.19.196-xenomai-3.1
- sudo addgroup xenomai --gid 1234
- sudo addgroup root xenomai
- sudo usermod -a -G xenomai $USER
sudo gedit /etc/default/grub
具体配置如下
GRUB_DEFAULT="Advanced options for Debian>Debian, with Linux 4.19.196-xenomai"
GRUB_TIMEOUT=10
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash xenomai.allowed_group=1234"
更新grub
- sudo update-grub
- sudo update-grub2
重启电脑查看版本号
- uname -a
- dmesg | grep -i xenomai
前面下载的xenomai源码并没有configure脚本和makefile,需要手动生成,在~/xenomai/xenomai-3.1 目录中使用 ./scripts/bootstrap命令。然后使用下面命令进行配置
- cd ~/xenomai/xenomai-3.1
- sudo ./scripts/bootstrap
- sudo ./configure --with-pic --with-core=cobalt --enable-smp --disable-tls --enable-dlopen-libs --disable-clock-monotonic-raw
- sudo make -j4
- sudo make install
配置中的参数解释:位置无关代码、使用cobalt微内核、对称多处理、线程本地存储、动态加载基于Xenomai的库、使用单调递增时间来计时。
笔者用的是zsh,因此最后两句指令是zshrc
- echo '
- ### Xenomai
- export XENOMAI_ROOT_DIR=/usr/xenomai
- export XENOMAI_PATH=/usr/xenomai
- export PATH=$PATH:$XENOMAI_PATH/bin:$XENOMAI_PATH/sbin
- export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$XENOMAI_PATH/lib/pkgconfig
- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$XENOMAI_PATH/lib
- export OROCOS_TARGET=xenomai
- ' >> ~/.xenomai_rc
-
- echo 'source ~/.xenomai_rc' >> ~/.bashrc
- source ~/.bashrc
追加权限
- sudo chmod -R 777 /dev/rtdm/memdev-private
- sudo chmod -R 777 /dev/rtdm/memdev-shared
sudo /usr/xenomai/bin/latency
测试会出现last_best为负的情况,可以用以下办法修复
- sudo -s
- echo 0>/proc/xenomai/latency
- sudo /usr/xenomai/bin/latency
运行一段时间后,记录下“last_best”的值,令“修改值”=这个值*1000
echo 修改值>/proc/xenomai/latency
可以参考笔者的另一篇安装IgH的文章
1、下载Igh EtherCAT master
- git clone https://gitlab.com/etherlab.org/ethercat.git
- cd ~
- sudo cp -r ethercat ~/xenomai
- cd ~/xenomai/ethercat
2、编译
- sudo ./bootstrap
- sudo ./configure --with-module-dir=/lib/modules/4.19.196-xenomai-3.1 --enable-generic --enable-8139too=no --enable-cycles --enable-hrtimer --with-xenomai-dir=/usr/xenomai --prefix=/opt/etherlab
- sudo make #编译
- sudo make modules #编译模块
- sudo make install #安装
- sudo make modules_install #安装模块
3、配置
- sudo mkdir /etc/sysconfig #创建文件夹
- sudo cp /opt/etherlab/etc/sysconfig/ethercat /etc/sysconfig/ #复制配置文件
- sudo cp /opt/etherlab/etc/init.d/ethercat /etc/init.d/ #复制启动脚本
- sudo chmod a+x /etc/init.d/ethercat
- sudo update-rc.d ethercat defaults
使能ethercat工具
sudo ln -s /opt/etherlab/bin/ethercat /usr/local/bin/ethercat
配置用户权限
sudo gedit /etc/udev/rules.d/99-EtherCAT.rules
输入下列内容 KERNEL=="EtherCAT[0-9]*", MODE="0664", GROUP="users"
把相关模块放进系统目录,如果使用通用网卡是这样的
- sudo cp devices/ec_generic.ko /lib/modules/$(uname -r)
- sudo cp master/ec_master.ko /lib/modules/$(uname -r)
专用网卡参考该文Ubuntu18.04/20.04编译Linux5.10.76+Xenomai-3.2.1+IgH_看他个锤子的博客
执行命令
sudo depmod
查询网卡
- sudo apt-get install net-tools
- ifconfig
配置网卡,修改这两个文件
- sudo gedit /etc/sysconfig/ethercat
- sudo gedit /opt/etherlab/etc/sysconfig/ethercat
修改这两项
MASTER0_DEVICE=" ifconfig查询到的"
DEVICE_MODULES="generic "
4、启动主站
sudo /etc/init.d/ethercat start
如果主站启动则安装成功
5、目前遇到问题
每次重新启动电脑后,启动ethercat主站,都需要先用如下命令
sudo insmod /lib/modules/4.19.252-xenomai/ethercat/master/ec_master.ko
然后才能使用/etc/init.d/ethercat start命令启动主站。
而且/dev缺少了EtherCAT0的设备描述符,导致命令行工具指令失效。
安装过程中有许多问题,缺少记录,有遇到问题欢迎讨论。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。