有多少人工,就有多少智能

Franka Linux 设置实时内核 PREEMPT_RT

为了使用 控制您的机器人libfranka,工作站 PC 上的控制器程序必须在内核下以实时优先级PREEMPT_RT运行 。本节介绍了修补内核以支持 PREEMPT_RT并创建安装包的过程。

内核不支持 NVIDIA 二进制驱动程序PREEMPT_RT

 

sudo apt-get install build-essential bc curl ca-certificates gnupg2 libssl-dev lsb-release libelf-dev bison flex dwarves zstd libncurses-dev

然后,您必须决定使用哪个内核版本。要找到您当前正在使用的版本,请使用。实时补丁仅适用于部分内核版本,请参阅 https://www.kernel.org/pub/linux/kernel/projects/rt/。我们建议选择最接近您当前使用的版本。如果您选择其他版本,只需替换数字即可。决定版本后,使用下载源文件:uname -r curl

对于使用内核版本 4.14.12 测试的 Ubuntu 16.04:

curl -SLO https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.14.12.tar.xz
curl -SLO https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.14.12.tar.sign
curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patch-4.14.12-rt10.patch.xz
curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patch-4.14.12-rt10.patch.sign

对于使用内核版本 5.4.19 测试的 Ubuntu 18.04:

curl -SLO https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.4.19.tar.xz
curl -SLO https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.4.19.tar.sign
curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/5.4/older/patch-5.4.19-rt10.patch.xz
curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/5.4/older/patch-5.4.19-rt10.patch.sign

对于使用内核版本 5.9.1 测试的 Ubuntu 20.04:

curl -SLO https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.xz
curl -SLO https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.9.1.tar.sign
curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/5.9/patch-5.9.1-rt20.patch.xz
curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/5.9/patch-5.9.1-rt20.patch.sign

并使用以下命令解压缩:

xz -d *.xz

验证文件完整性

这些.sign文件可用于验证下载的文件是否被损坏或篡改。此处显示的步骤改编自 Linux 内核档案,有关该过程的更多详细信息,请参阅链接页面。

您可以使用以下方法gpg2来验证.tar档案:

gpg2 --verify linux-*.tar.sign
gpg2 --verify patch-*.patch.sign

如果你的输出类似以下内容:

$ gpg2 --verify linux-*.tar.sign
gpg: assuming signed data in 'linux-4.14.12.tar'
gpg: Signature made Fr 05 Jan 2018 06:49:11 PST using RSA key ID 6092693E
gpg: Can't check signature: No public key

您必须先下载签署上述文件的人的公钥。从上面的输出中可以看到,它的 ID 为6092693E。您可以从密钥服务器获取它:

gpg2  --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 6092693E

对于补丁来说也类似:

gpg2 --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 2872E4CC

请注意,其他内核版本的密钥可能具有不同的 ID,您必须进行相应的调整。

下载密钥后,您现在可以验证源。以下是正确输出的示例:

$ gpg2 --verify linux-*.tar.sign
gpg: assuming signed data in 'linux-4.14.12.tar'
gpg: Signature made Fr 05 Jan 2018 06:49:11 PST using RSA key ID 6092693E
gpg: Good signature from "Greg Kroah-Hartman <gregkh@linuxfoundation.org>" [unknown]
gpg:                 aka "Greg Kroah-Hartman <gregkh@kernel.org>" [unknown]
gpg:                 aka "Greg Kroah-Hartman (Linux kernel stable release signing key) <greg@kroah.com>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 647F 2865 4894 E3BD 4571  99BE 38DB BDC8 6092 693E

有关该警告的更多信息,请参阅Linux 内核档案。

编译内核

一旦确定文件已正确下载,您就可以提取源代码并应用补丁:

tar xf linux-*.tar
cd linux-*/
patch -p1 < ../patch-*.patch

接下来将当前启动的内核配置复制为新实时内核的默认配置:

cp -v /boot/config-$(uname -r) .config

现在您可以使用此配置作为默认配置来配置构建:

make olddefconfig
make menuconfig

第二条命令会打开一个终端界面,您可以在其中配置抢占模型。使用箭头键导航至General Setup > Preemption Model并选择Fully Preemptible Kernel (Real-Time)

之后导航至Cryptographic API >用于签名检查的证书 (位于列表最底部)>提供系统范围的可信密钥环默认系统密钥环的附加 X.509 密钥

从提示中删除“debian/canonical-certs.pem”并按 Ok。保存此配置并.config退出 TUI。

如果你更喜欢 GUI而不是TUI,请使用make xconfigmake menuconfig

之后,您就可以编译内核了。由于这是一个漫长的过程,请将多线程选项设置-j为 CPU 核心数:

make -j$(nproc) deb-pkg

 

最后,您可以安装新创建的包。确切的名称取决于您的环境,但您要寻找headers没有后缀images 的包dbg。要安装:

sudo dpkg -i ../linux-headers-*.deb ../linux-image-*.deb

验证新内核

重新启动系统。Grub 启动菜单现在应该允许您选择新安装的内核。要查看当前正在使用哪一个内核,请查看命令的输出。它应该包含您选择的字符串和版本号。此外,应该存在并包含数字

uname -a

PREEMPT RT/sys/kernel/realtime1

允许用户为其进程设置实时权限

PREEMPT_RT内核安装并运行 后,添加一个名为realtime 的组,并将控制机器人的用户添加到该组:

sudo addgroup realtime
sudo usermod -a -G realtime $(whoami)

随后,向/etc/security/limits.conf中的 实时组添加以下限制

@realtime soft rtprio 99
@realtime soft priority 99
@realtime soft memlock 102400
@realtime hard rtprio 99
@realtime hard priority 99
@realtime hard memlock 102400

您退出并再次登录后将应用这些限制。

 

 


posted @ 2024-07-08 17:57  lvdongjie-avatarx  阅读(20)  评论(0编辑  收藏  举报