yocto 下基于SDK的 tcpdump 移植

时间:2024-11-05 07:14:34

系列文章目录

【1】yocto系统构建
【2】yocto下mosquitto用户名和密码配置
【3】yocto 下基于SDK的 tcpdump 移植


文章目录

  • 系列文章目录
  • 前言
  • 一、移植tcpdump的意义
  • 二、移植步骤
    • 1. 准备Yocto环境
    • 2.获取源码,配置和编译
    • 3.移植到目标设备
    • 4.测试tcpdump
  • 总结


前言

tcpdump 是一个强大的网络数据包分析工具,可以捕获并显示通过网络接口传输的TCP/IP和其他协议数据包。它通常用于网络故障排查、性能监测以及安全分析等场合。在Yocto项目中,移植tcpdump到目标设备可以大大增强其网络分析能力,帮助开发者和运维人员更好地理解网络通信。

前段时间,拿到一块板子上并没有tcpdump 工具,对于一个涉及网络开发人员来说,没有这个工具开发定位问题很不方便,简直不可忍受,这边90%的网络问题定位诊断都依靠它了,不知道大家有没有和我一样的感受,这边记录下总结下yocto上基于SDK环境移植tcpdump 的过程,这个工具经常会用到的,方便其他平台上也有类似需求,供后面回顾,减少重复性工作。


一、移植tcpdump的意义

1.网络排错:在嵌入式设备中,网络问题往往难以下判断。tcpdump 提供实时网络流量监控,帮助开发者快速定位问题。

2.数据包分析:抓取并分析网络数据包,可以帮助开发者优化应用性能,减少不必要的网络开销。

3.安全监测:通过抓包分析,能够识别潜在的网络攻击或异常流量,增强设备的安全性。

开发调试:在网络应用开发过程中,tcpdump可以作为重要的调试工具,帮助开发者理解网络协议的工作原理和数据交互方式。

二、移植步骤

1. 准备Yocto环境

确保你的工作环境中已正确设置Yocto,并且安装了所有必要的工具。你需要有一个有效的Yocto构建环境和相应的目标设备支持。
我这边编译主机及SDK工具链环境如下:

iot@iot:~/som361/IOT/open_src$ cat /etc/os-release 
NAME="Ubuntu"
VERSION="18.04.6 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.6 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
iot@iot:~/som361/IOT/open_src$ echo $CC
arm-poky-linux-gnueabi-gcc -march=armv7ve -marm -mfpu=neon -mfloat-abi=hard -mcpu=cortex-a7 --sysroot=/home/iot/som361/toolchain/sysroots/cortexa7hf-neon-poky-linux-gnueabi

目标机器环境如下:

root@imx6ull14x14evk:~# cat /etc/os-release 
ID="fsl-imx-xwayland"
NAME="NXP i.MX Release Distro"
VERSION="4.14-sumo (sumo)"
VERSION_ID="4.14-sumo"
PRETTY_NAME="NXP i.MX Release Distro 4.14-sumo (sumo)"

2.获取源码,配置和编译

编写脚本 vi build_tcpdump.sh:

#!/bin/bash 

# 交叉编译工具链的路径 
export SYSROOT=/home/iot/som361/toolchain/sysroots/cortexa7hf-neon-poky-linux-gnueabi

#下载源码
wget https://www.tcpdump.org/release/tcpdump-4.9.3.tar.gz

#解压源码
tar -xvf tcpdump-4.9.3.tar.gz

cd tcpdump-4.9.3

# 配置
./configure --host=arm-poky-linux-gnueabi --prefix=/home/iot/som361/IOT/open_src/install_tcpdump_dir CFLAGS="--sysroot=$SYSROOT" CXXFLAGS="--sysroot=$SYSROOT"

# 编译安装
make
make install

给脚本执行权限并执行

chmod 777 build_tcpdump.sh
./build_tcpdump.sh

执行成功后结果如下
在这里插入图片描述
可以看到install_tcpdump_dir/sbin/目录下成功生成 tcpdump, tcpdump.4.9.3

3.移植到目标设备

可用scp 命令或可视化工具,拷贝tcpdump到目标板子 /usr/bin下,
并给可执行权限 chmod 777 tcpdump

root@imx6ull14x14evk:~# ls -l /usr/bin/tcpdump
-rwxr-xr-x 1 root root 2061836 Oct 30 14:28 /usr/bin/tcpdump

4.测试tcpdump

在设备上运行以下命令,我这边用web端UI操作了下,可以看到抓到数据:

在这里插入图片描述

总结

在Yocto下移植tcpdump可以极大增强嵌入式设备的网络分析能力,帮助开发者解决各种网络相关问题。通过上述步骤,您将能够在自己的Yocto项目中成功集成和使用tcpdump。希望这篇博文能够为您的工作提供帮助!

***你好,我是阿灿,慢慢理解世界,慢慢更新自己。