警告

您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.

为 ROS 2 构建实时 Linux [社区贡献]

本教程从在 Intel x86_64 上安装 Ubuntu 20.04.1 开始。实际内核为 5.4.0-54-generic,但我们将安装最新的稳定 RT_PREEMPT 版本。构建内核需要至少 30GB 可用磁盘空间。

检查 https://wiki.linuxfoundation.org/realtime/start 为最新稳定版本,在撰写本报告时为 "最新稳定版本 5.4-rt"。如果我们点击 链接,我们就能得到确切的版本。目前是 patch-5.4.78-rt44.patch.gz。

日蚀-1

我们在主目录下创建一个目录,其中包含

mkdir ~/kernel

并用

CD ~/kernel

我们可以通过浏览器 https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/ 看看版本是否在那里。您可以从网站下载,然后手动从 /Downloads 文件夹移动到 /kernel 文件夹,或者使用 wget 右键单击链接,使用 "复制链接位置 "进行下载。例如

wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.4.78.tar.gz

拆开它

卷烟 -xzf linux-5.4.78.tar.gz

下载与我们刚才下载的内核版本相匹配的 rt_preempt 补丁,网址是 http://cdn.kernel.org/pub/linux/kernel/projects/rt/5.4/

wget http://cdn.kernel.org/pub/linux/kernel/projects/rt/5.4/patch-5.4.78-rt44.patch.gz

拆开它

枪链 patch-5.4.78-rt44.patch.gz

然后切换到 linux 目录,使用

CD linux-5.4.78/

并用实时补丁为内核打上补丁

补丁 -p1 <; ../patch-5.4.78-rt44.patch

我们只想使用 Ubuntu 安装的配置,因此我们使用以下命令获取 Ubuntu 配置

cp /boot/config-5.4.0-54-generic .配置

在 Ubuntu 软件菜单中勾选 "源代码 "框

我们需要一些工具来构建内核,用

苏都 apt-get build-dep linux sudo apt-get 安装 libncurses-dev 软线 野牛 opensl libssl-dev dkms libelf-dev libudev-dev libpci-dev libiberty-dev autoconf fakeroot

要启用所有 Ubuntu 配置,我们只需使用

 '' | 生产 oldconfig

然后,我们需要在内核中启用 rt_preempt。我们调用

生产 菜单

并设置如下

# 启用 CONFIG_PREEMPT_RT
 ->; 一般情况 设置
  ->; 优先权 模型 (完全 优先权 内核 (实时))
   (X) 完全 优先权 内核 (实时)

# 启用 CONFIG_HIGH_RES_TIMERS
 ->; 一般情况 设置
  ->; 计时器 支系统
   [*]  决议 计时器 支持

# 启用 CONFIG_NO_HZ_FULL
 ->; 一般情况 设置
  ->; 计时器 支系统
   ->; 计时器 打钩 处理 (全部 dynticks 系统 (无痒))
    (X) 全部 dynticks 系统 (无痒)

# 设置 CONFIG_HZ_1000(注意:这已不在常规设置菜单中,请返回两次)
 ->; 处理器 类型  特征
  ->; 计时器 频率 (1000 HZ)
   (X) 1000 HZ

# 设置 CPU_FREQ_DEFAULT_GOV_PERFORMANCE [=y]
 ->;  电源 管理  ACPI 选项
  ->; 中央处理器 频率 缩放
   ->; 中央处理器 频率 缩放 (CPU_FREQ [=y])
    ->; 默认值 CPUFreq 省长 (选择>; [=y])
     (X) 性能

保存并退出 menuconfig。现在我们要构建内核,这需要花费一些时间。(在现代 CPU 上需要 10-30 分钟)

生产 -j `nproc` deb-pkg

构建完成后,检查 debian 软件包

ls ../*deb ../linux-headers-5.4.78-rt41_5.4.78-rt44-1_amd64.deb  ../linux-image-5.4.78-rt44-dbg_5.4.78-rt44-1_amd64.deb ../linux-image-5.4.78-rt41_5.4.78-rt44-1_amd64.deb    ../linux-libc-dev_5.4.78-rt44-1_amd64.deb

然后安装所有 debian 内核软件包

苏都 dpkg -i ../*.deb

现在实时内核应该已经安装好了。重启系统并检查新内核版本

苏都 重新启动 uname -a Linux ros2host 5.4.78-rt44 #1 SMP PREEMPT_RT Fri Nov 6 10:37:59 CET 2020 x86_64 xx