系列文章目录
【1】yocto系统构建
【2】yocto下mosquitto用户名和密码配置
【3】yocto 下基于SDK的 tcpdump 移植
文章目录
- 系列文章目录
- 前言
- 一、移植tcpdump的意义
- 二、移植步骤
-
- [1. 准备Yocto环境](#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工具链环境如下:
c
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
目标机器环境如下:
c
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:
c
#!/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
给脚本执行权限并执行
c
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
c
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。希望这篇博文能够为您的工作提供帮助!
***你好,我是阿灿,慢慢理解世界,慢慢更新自己。