第四章:Linux TSN工具链安装

好,咱们进入正题。这一章要搞定TSN的工具链安装。说白了,就是让树莓派能听懂TSN的“语言”。

我刚开始接触TSN时,最头疼的就是工具链。各种依赖、版本冲突,折腾了好几天。后来摸清了门道,发现其实没那么复杂。今天我把这些经验整理出来,你照着做就行。

4.1 为什么需要这些工具?

TSN不是单一技术,是一整套协议簇。要玩转它,需要几个关键工具配合:

  • iproute2:网络配置的瑞士军刀。ip命令就来自它。
  • tsntool:专门操作TSN硬件的工具。比如配置802.1Qbv时间感知整形。
  • ptp4l:实现IEEE 802.1AS时间同步的核心。没它,TSN就是空谈。
  • tc:Linux流量控制。用来配置QoS、门控列表等。

你想想看,这四个工具就像TSN的四肢。缺一个,实验就做不完整。

4.2 安装iproute2

iproute2通常是系统自带的。但版本可能偏老。我建议你更新到最新版。

检查当前版本:

ip -V
# 输出示例:iproute2-5.15.0

如果版本低于5.10,建议升级。为什么?因为新版对TSN支持更好。我在项目中遇到过,老版本配置802.1Qbv时,有些参数不识别。

安装/升级方法:

sudo apt update
sudo apt install iproute2 -y

嗯,这里要注意。如果你用的是树莓派官方系统,直接apt安装就行。如果是自己编译的内核,可能需要从源码编译。我个人习惯用apt,省事。

4.3 安装tsntool

tsntool不是系统自带的。需要从源码编译。别怕,步骤不多。

重要提醒:tsntool依赖libnl-3和libnl-genl-3。必须先安装这两个库。

第一步:安装依赖

sudo apt install libnl-3-dev libnl-genl-3-dev cmake build-essential -y

第二步:下载源码

git clone https://github.com/Avnu/tsntool.git
cd tsntool

第三步:编译安装

mkdir build && cd build
cmake ..
make
sudo make install

我曾经在编译时卡住过。原因是cmake版本太低。如果你遇到类似问题,先升级cmake:

sudo apt install cmake -y
# 或者从源码安装最新版cmake

验证安装:

tsntool --help
# 如果显示帮助信息,说明安装成功

4.4 安装ptp4l

ptp4l来自linuxptp项目。这是实现gPTP(IEEE 802.1AS)的关键。

安装命令:

sudo apt install linuxptp -y

就这么简单?对,apt源里就有。但版本要注意。我建议用2.0以上版本。老版本对802.1AS支持不完整。

小技巧:安装后检查版本:

ptp4l --version
# 期望输出:ptp4l 3.1.1 或更高

如果版本太低,可以从源码编译:

git clone http://git.code.sf.net/p/linuxptp/code linuxptp
cd linuxptp
make
sudo make install

我记得有一次,客户现场时间同步总是不准。查了半天,发现是ptp4l版本太老,不支持两步时钟。升级后问题解决。所以版本这事,别马虎。

4.5 安装tc命令

tc是iproute2的一部分。如果你安装了iproute2,tc就有了。但有些功能需要内核支持。

检查tc是否可用:

tc -V
# 输出示例:tc utility, iproute2-5.15.0

检查内核是否支持TSN相关功能:

# 检查是否支持ETS(增强传输选择)
modprobe sch_ets
lsmod | grep sch_ets

# 检查是否支持TAPRIO(时间感知优先级)
modprobe sch_taprio
lsmod | grep sch_taprio

如果模块加载失败,说明内核没编译这些功能。你需要重新编译内核。这部分内容,我会在后续章节详细讲。

快速验证所有工具:

# 检查四个工具是否都可用
which ip tsntool ptp4l tc
# 应该输出四个路径,例如:
# /usr/sbin/ip
# /usr/local/bin/tsntool
# /usr/sbin/ptp4l
# /sbin/tc

4.6 常见问题与避坑指南

安装过程中,你可能会遇到一些问题。我把常见的列出来:

问题 原因 解决方法
tsntool编译失败 缺少libnl依赖 安装libnl-3-dev和libnl-genl-3-dev
ptp4l启动报错 内核不支持硬件时间戳 检查网卡驱动,或使用软件时间戳模式
tc配置qdisc失败 内核未编译相关模块 重新编译内核,或加载模块
ip命令找不到 iproute2未安装 apt install iproute2

避坑指南:

  • 我曾经在树莓派3B+上折腾了一整天,发现它不支持硬件时间戳。后来换了树莓派4B才搞定。所以,硬件选型很重要。
  • 如果你用虚拟机做实验,ptp4l的时间同步精度会很差。建议用物理机。
  • tsntool的某些功能需要root权限。记得加sudo。

4.7 验证工具链是否就绪

安装完成后,我习惯写一个简单的测试脚本。确保所有工具都能正常工作:

#!/bin/bash
# TSN工具链验证脚本

echo "=== 检查iproute2 ==="
ip -V || echo "iproute2 未安装"

echo "=== 检查tsntool ==="
tsntool --help &>/dev/null && echo "tsntool 就绪" || echo "tsntool 未安装"

echo "=== 检查ptp4l ==="
ptp4l --version || echo "ptp4l 未安装"

echo "=== 检查tc ==="
tc -V || echo "tc 未安装"

echo "=== 检查内核模块 ==="
for mod in sch_taprio sch_ets sch_mqprio; do
    modprobe $mod &>/dev/null && echo "$mod 可用" || echo "$mod 不可用"
done

把这个脚本保存为check_tsn_tools.sh,然后运行:

chmod +x check_tsn_tools.sh
sudo ./check_tsn_tools.sh

如果所有检查都通过,恭喜你,TSN工具链就绪了。

我的建议:把安装过程写成脚本。下次重装系统时,一键搞定。我就是这么干的。省时省力。

4.8 小结

这一章我们搞定了四个核心工具:iproute2、tsntool、ptp4l、tc。它们就像TSN实验的“四件套”。

安装只是第一步。接下来,我们要用这些工具做真正的TSN配置。比如时间同步、流量整形、门控调度。这些内容,我会在后续章节一一展开。

记住,工具链是基础。基础打牢了,后面的实验才能顺利进行。如果你在安装过程中遇到问题,别急。回头检查依赖、版本、内核支持。大部分问题都能解决。

下一章,我们开始配置时间同步。让树莓派上的时钟,精确到微秒级。