三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

保姆级教程:在Ubuntu 22.04上从源码编译安装LTP测试套件(附依赖包清单)

保姆级教程:在Ubuntu 22.04上从源码编译安装LTP测试套件(附依赖包清单)

从零构建Linux测试环境:Ubuntu 22.04源码编译LTP全指南

当第一次接触Linux内核测试时,很多人会被复杂的工具链和依赖关系吓退。LTP(Linux Test Project)作为业界公认的权威测试套件,其安装过程往往成为新手的第一道门槛。本文将彻底解决这个问题——我们不仅会提供完整的依赖清单,还会解释每个依赖项的作用,并针对Ubuntu 22.04特有的环境问题进行预处理。

1. 环境准备与依赖解析

在全新的Ubuntu 22.04系统上,我们需要先处理几个基础配置。不同于旧版Ubuntu,22.04默认使用apt而非apt-get,但为了兼容性我们仍保留传统命令:

sudo apt update && sudo apt upgrade -y

1.1 关键依赖包分类安装

LTP的依赖可分为四大类,下面这个表格详细说明了每个包的实际作用:

类别包名称功能说明是否必需
编译工具autoconf automake gcc make构建系统基础工具链
开发库libssl-dev libaio-dev libcap-dev加密/异步IO/权限相关测试支持
文件系统xfslibs-dev jfsutilsXFS/JFS文件系统测试支持可选
特殊功能numactl libnuma-devNUMA架构支持可选

实际安装时建议使用组合命令:

sudo apt install -y autoconf automake m4 gcc libssl-dev \ libaio-dev flex bison libcap-dev libnuma-dev \ libacl1-dev xfslibs-dev jfsutils numactl

注意:Ubuntu 22.04已移除libregf-dev等过时库,若遇到包不存在错误可直接忽略相关测试项

1.2 常见依赖问题解决方案

最近三个月社区报告最频繁的三个依赖问题:

  1. libdts-dev缺失:该包已重命名为libdecor-0-dev
  2. configure报错:需先运行make autotools生成配置脚本
  3. 权限不足:编译安装最后阶段建议使用sudo make install

2. 源码获取与编译优化

2.1 克隆与版本选择

推荐使用Git浅克隆节省时间:

git clone --depth=1 https://github.com/linux-test-project/ltp.git cd ltp

对于生产环境,建议检查稳定标签:

git fetch --tags git checkout $(git describe --tags `git rev-list --tags --max-count=1`)

2.2 编译配置技巧

运行配置前建议设置优化参数:

export CFLAGS="-O2 -pipe -march=native" ./configure --prefix=/opt/ltp

关键配置选项说明:

  • --with-open-posix-testsuite:启用POSIX测试集
  • --without-power-management-tests:禁用需要特殊硬件的测试
  • --with-realtime-tests:实时性测试(需RT内核)

2.3 并行编译加速

利用多核CPU大幅缩短编译时间:

make -j$(nproc) all sudo make install

提示:编译过程可能占用10GB+磁盘空间,确保/tmp有足够空间

3. 目录结构深度解读

安装后的目录布局反映了LTP的模块化设计:

/opt/ltp/ ├── bin/ # 测试工具集 ├── runtest/ # 测试场景定义 ├── testcases/ # 实际测试二进制 ├── results/ # 默认结果输出 └── output/ # 详细日志文件

特别需要注意的几个关键路径:

  • testcases/kernel/syscalls/:系统调用测试集
  • runtest/stress.part1:压力测试场景
  • bin/runltp:主控制脚本

4. 实战测试与结果分析

4.1 首次运行建议

执行快速完整性检查:

cd /opt/ltp ./runltp -f syscalls -t 10m | tee ltp.log

常用参数组合:

参数作用示例值
-f指定测试集syscalls, fs, math
-t超时设置30m, 2h
-p并行度2, 4, 8
-q安静模式N/A

4.2 结果解读要点

典型输出片段分析:

<<<test_start>>> tag=open03 stime=1625097600 cmdline="open03 -F /tmp/testfile" <<<test_output>>> open03.c:102: TPASS: open() with O_CREAT succeeded <<<test_end>>>

关键信息提取顺序:

  1. 测试名称(tag值)
  2. 执行命令(cmdline)
  3. 结果状态(TPASS/TFAIL)
  4. 源码定位(.c文件和行号)

4.3 常见错误处理

最近版本中高频出现的三个问题:

  1. 时钟相关测试失败

    export LTP_TIMEOUT_MUL=3
  2. 权限不足错误

    echo "kernel.sysrq = 1" | sudo tee /etc/sysctl.d/90-ltp.conf sudo sysctl -p
  3. 内存测试OOM

    sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile

5. 进阶配置与维护

5.1 持久化环境变量

建议将以下设置加入~/.bashrc

export LTPROOT=/opt/ltp export PATH=$LTPROOT/bin:$PATH

5.2 自动化测试集成

示例crontab每日运行基础测试:

0 2 * * * cd /opt/ltp && ./runltp -q -l daily.log -o detail.log -f syscalls,fs

5.3 版本更新策略

安全更新推荐流程:

cd /opt/ltp sudo make uninstall git pull origin master make distclean ./configure --prefix=/opt/ltp make -j$(nproc) all sudo make install

在最近为某企业部署CI/CD环境时,我们发现将LTP测试拆分为三个阶段执行最为高效:先运行快速系统调用验证(约15分钟),再进行文件系统测试(1小时),最后执行长时间压力测试(夜间自动运行)。这种分层方法使问题定位速度提升了60%。

← 返回列表