news 2026/4/16 20:36:33

PetaLinux 文件系统目录详解:嵌入式 Linux 根文件系统各文件夹的作用与内容

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PetaLinux 文件系统目录详解:嵌入式 Linux 根文件系统各文件夹的作用与内容

PetaLinux 文件系统目录详解:嵌入式 Linux 根文件系统各文件夹的作用与内容

文章目录

  • PetaLinux 文件系统目录详解:嵌入式 Linux 根文件系统各文件夹的作用与内容
    • 一、根文件系统总览
    • 二、各目录详细说明
      • 1. `/bin` - 基本用户命令二进制文件
      • 2. `/sbin` - 系统管理命令
      • 3. `/usr` - 用户系统资源(二级层次)
      • 4. `/lib` - 系统引导和根文件系统运行所需的基本共享库与内核模块
      • 5. `/etc` - 系统配置文件
      • 6. `/dev` - 设备文件
      • 7. `/proc` - 进程信息伪文件系统
      • 8. `/sys` - 内核对象信息与驱动模型
      • 9. `/boot` - 引导加载程序相关文件
      • 10. `/home` - 普通用户主目录
      • 11. `/root` - root 用户主目录
      • 12. `/var` - 可变数据文件
      • 13. `/tmp` - 临时文件
      • 14. `/run` - 运行时变量数据
      • 15. `/mnt` 与 `/media` - 临时挂载点
      • 16. `/opt` - 可选应用软件包
      • 17. `/srv` - 服务数据
    • 三、PetaLinux 特有的目录或注意事项
    • 四、实际使用中的小贴士
      • 1. 如何查看当前目录使用情况?
      • 2. 如何判断某个命令来自哪个包?
      • 3. 如何自定义根文件系统内容?
      • 4. 如何固化自定义脚本或配置文件?
    • 五、总结

在嵌入式 Linux 开发中,PetaLinux 是 Xilinx 官方推荐的一套嵌入式 Linux 构建工具,能够快速生成针对 Zynq、Zynq UltraScale+ MPSoC 等平台的 Linux 镜像。PetaLinux 构建出的根文件系统(rootfs)遵循标准的 Linux 文件系统层次结构(Filesystem Hierarchy Standard, FHS),同时又针对嵌入式场景做了一些定制与精简。

对于刚接触 PetaLinux 或嵌入式 Linux 的开发者来说,理清根文件系统下各个目录的用途、存放内容,以及它们与实际系统运行的关系,是调试和定制系统的基础。本文将详细介绍 PetaLinux 生成的根文件系统中常见文件夹的作用和内容,帮助你快速掌握嵌入式 Linux 的文件布局。


一、根文件系统总览

一个典型的 PetaLinux 根文件系统(以rootfsrootfs.cpio形式呈现)挂载到目标板的/下,使用ls /可以看到如下目录:

bin boot dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var

有些目录在 PetaLinux 默认配置下可能为空(如/home/srv),但仍保留以满足标准应用程序的预期。下面我们逐一剖析这些目录的用途。


二、各目录详细说明

1./bin- 基本用户命令二进制文件

用途:存放系统启动和单用户模式下必需的用户级命令,所有用户均可执行。

典型内容

  • 常用 Shell 命令:shlscpmvrmcatechomountumount等。
  • 在 PetaLinux 中,这些命令通常来自BusyBox(一个集成众多常用命令的精简工具集),因此/bin下的可执行文件多为指向 BusyBox 的符号链接。
$ls-l/bin/ls lrwxrwxrwx1root root7Mar92023/bin/ls ->busybox

注意:现代 Linux 发行版倾向于将/bin/sbin/lib合并到/usr下(即 UsrMerge)。但在 PetaLinux 构建的嵌入式系统中,为了精简仍保留传统的分离结构。

2./sbin- 系统管理命令

用途:存放系统管理员使用的关键系统命令,通常需要 root 权限执行。

典型内容

  • ifconfigroute(网络配置)
  • fsckmkfs(文件系统检查与创建)
  • reboothaltpoweroff(系统控制)
  • 与硬件交互的工具:fw_printenvi2cgetgpio等(取决于 PetaLinux 配方中是否添加相关软件包)

/bin类似,这些命令大多也链接至 BusyBox。

3./usr- 用户系统资源(二级层次)

/usr是根文件系统中内容最丰富的目录之一,它包含了大部分用户程序、库、文档和共享数据。

子目录用途
/usr/bin绝大多数用户命令,如gccpythonmakessh等(如果安装了)
/usr/sbin非必需的系统管理命令,如sshdtcpdumpuseradd
/usr/lib应用程序和系统服务使用的共享库、目标文件
/usr/includeC/C++ 头文件,用于交叉编译环境
/usr/share架构无关的共享数据,如帮助文档、时区信息、字体、图标等
/usr/local本地安装的软件,PetaLinux 默认通常为空,供用户自定义安装使用

PetaLinux 特有说明:在/usr/bin下可能会包含一些与 Xilinx 硬件相关的工具,如xbutil(管理 Alveo 加速卡)、dfx-mgr(动态功能交换管理器)等,具体取决于你启用的IMAGE_FEATURES和添加的 recipes。

4./lib- 系统引导和根文件系统运行所需的基本共享库与内核模块

用途:存放系统启动和/bin/sbin下程序所依赖的动态链接库,以及内核模块。

子路径内容
/lib/ld-linux-*.so*动态链接器/加载器
/lib/libc.so.*C 标准库(通常为 glibc 或 musl)
/lib/libm.so.*数学库
/lib/modules/$(uname -r)/内核模块目录,存放编译好的.ko文件及其依赖关系文件(modules.dep)

PetaLinux 特别注意

  • 若你在 PetaLinux 配置中使能了内核模块(CONFIG_xxx=m),这些模块会被安装到/lib/modules/<kernel-version>/下。
  • 启动时,depmod会生成模块依赖关系,确保modprobe能正确加载模块。

5./etc- 系统配置文件

用途:存放系统全局的配置文件(文本文件),启动脚本和网络配置等均在此处。

重要文件/子目录

文件/目录作用
/etc/inittab定义 init 进程的运行级别及启动的任务(若使用 sysvinit)
/etc/init.d/SysV init 风格的服务启动脚本
/etc/rc*.d/各个运行级别下服务的符号链接(K 开头表示停止,S 开头表示启动)
/etc/fstab文件系统挂载表,定义启动时自动挂载的分区
/etc/passwd/etc/shadow用户账户信息(密码哈希存储在 shadow 中)
/etc/group用户组信息
/etc/hostname主机名
/etc/hosts静态主机名解析
/etc/resolv.confDNS 解析服务器配置(可能由 DHCP 或 network manager 动态生成)
/etc/network/interfaces网络接口静态配置(若使用 ifupdown)
/etc/udev/udev 设备管理器的规则和配置
/etc/dropbear/Dropbear SSH 服务器的密钥和配置(PetaLinux 常用轻量级 SSH)

PetaLinux 特性
PetaLinux 生成的根文件系统默认使用BusyBox initSysVinit(可配置)。/etc/init.d/rcS是系统启动时的主要初始化脚本,你可以在这里添加自定义启动命令。

6./dev- 设备文件

用途:Linux “一切皆文件”哲学的体现,所有硬件设备(包括虚拟设备)都以特殊文件的形式存在于/dev下。

典型内容

  • 块设备:/dev/mmcblk0(SD 卡)、/dev/mtdblock0(NAND/NOR Flash)
  • 字符设备:/dev/ttyPS0(Zynq UART)、/dev/i2c-0(I2C 总线)、/dev/gpiochip*(GPIO 控制器)
  • 虚拟设备:/dev/null/dev/zero/dev/random/dev/urandom
  • 终端:/dev/tty/dev/console/dev/pts/*

在 PetaLinux 中,/devdevtmpfsudev/mdev动态管理。启动时内核挂载 devtmpfs,用户空间的 udev/mdev 负责处理热插拔事件并创建设备节点。

7./proc- 进程信息伪文件系统

用途:一个内存中的虚拟文件系统,提供了内核和进程信息的实时视图。不占用磁盘空间。

常用文件

  • /proc/cpuinfo- CPU 信息
  • /proc/meminfo- 内存使用情况
  • /proc/version- 内核版本
  • /proc/uptime- 系统启动时长
  • /proc/<PID>/- 每个进程的详细信息(如cmdlinestatusfd/
  • /proc/device-tree/-设备树(Device Tree)的运行时视图(对嵌入式开发极其有用!)

例如,查看 Zynq MPSoC 的 CPU 信息:

cat/proc/cpuinfo

8./sys- 内核对象信息与驱动模型

用途:类似于/proc,但提供的是关于内核对象、设备和驱动模型的统一视图。

常用目录

  • /sys/class/- 按设备类别分类(如/sys/class/gpio/用于操作 GPIO)
  • /sys/devices/- 按实际设备拓扑组织
  • /sys/kernel/debug/-debugfs 挂载点,提供内核调试信息(需挂载debugfs

PetaLinux 默认启用 sysfs,许多硬件调试都依赖/sys

9./boot- 引导加载程序相关文件

注意:在嵌入式 Linux 中,/boot目录不一定被挂载为单独的分区,其内容可能直接存放在根文件系统中。

PetaLinux 环境下/boot的典型内容

  • ImageuImage- 编译好的 Linux 内核镜像
  • system.dtbsystem-top.dtb- 设备树二进制文件
  • boot.scrboot.bin- U-Boot 启动脚本或综合引导文件(对于 Zynq,BOOT.BIN包含 FSBL、bitstream 和 U-Boot,通常放在 FAT 分区,不在/boot下)

对于使用ext4 根文件系统且由 U-Boot 加载内核的场景,U-Boot 会从 FAT 分区读取内核和 DTB,因此/boot可能为空或仅用于存放备份镜像。具体情况取决于你的启动介质配置。

10./home- 普通用户主目录

用途:为系统上的普通用户提供个人文件存储空间。

PetaLinux 默认通常只创建root用户,因此/home目录多为空。如果需要创建多用户环境,可以在petalinux-config -c rootfs中添加用户支持包,并在此处创建用户目录。

11./root- root 用户主目录

用途:root 用户的专属主目录,路径固定为/root(不同于/home/root)。

12./var- 可变数据文件

用途:存放系统运行过程中内容会频繁变化的文件,如日志、缓存、锁文件、临时数据库等。

子目录内容
/var/log系统和应用程序日志文件(如messagesdmesgboot.log
/var/run运行时进程 PID 文件和 socket 文件(现多软链接到/run
/var/lock锁文件,确保资源互斥访问(软链接到/run/lock
/var/tmp持久化的临时文件(系统重启后通常保留)
/var/spool邮件、打印任务等队列数据
/var/lib应用程序状态信息,如包管理器数据库(opkgrpm

13./tmp- 临时文件

用途:所有用户和程序存放临时文件的目录。系统重启后该目录内容会被清空

在 PetaLinux 中,/tmp通常挂载为tmpfs(内存文件系统),这样可以减少对 Flash 的写入磨损。

14./run- 运行时变量数据

用途:自系统启动以来描述系统状态的数据,通常也挂载为 tmpfs。系统启动早期即可用,且重启后消失。

典型内容

  • /run/utmp- 当前登录用户信息
  • /run/udev/- udev 运行时数据
  • /run/dbus/- D-Bus 系统总线的 socket 文件
  • /run/media/- 自动挂载的可移动介质(如 U 盘)挂载点

15./mnt/media- 临时挂载点

  • /mnt:系统管理员手动挂载文件系统的临时挂载点。PetaLinux 中常用于挂载 SD 卡的其他分区、NFS 共享等。
  • /media:自动挂载可移动介质(如 USB 存储设备)的基础目录。若系统使用udisksautomount工具,U 盘会被挂载到/media/sda1等子目录下。

16./opt- 可选应用软件包

用途:存放额外安装的第三方软件。PetaLinux 镜像默认可能为空,但当你通过 Yocto recipe 添加独立的大型软件(如 Xilinx Vitis AI 运行时、自定义应用程序)时,常将它们安装到/opt下。

例如,Xilinx 提供的 AI 示例可能安装至/opt/xilinx/

17./srv- 服务数据

用途:存放系统服务提供的数据,如 HTTP 服务器(/srv/www)或 FTP 服务器(/srv/ftp)。嵌入式系统中较少用到,默认多为空。


三、PetaLinux 特有的目录或注意事项

  1. /lib/firmware/
    PetaLinux 内核可能通过request_firmware()接口加载固件到硬件设备(如 WiFi/BT 芯片、Xilinx AI Engine 固件)。这些固件文件(.bin.fw)会被放置在/lib/firmware/下。

  2. /usr/bin/petalinux-*并不存在!
    注意,PetaLinux 是构建工具,生成的根文件系统里没有petalinux-开头的命令。这些命令只在开发主机上使用。

  3. 设备树叠加层(DTBO)
    若使用动态设备树叠加层,.dtbo文件常放在/lib/firmware//boot/下,由dfx-mgr或用户脚本加载。

  4. 挂载点与分区布局
    PetaLinux 构建的映像通常将根文件系统打包为rootfs.cpio.gz.u-bootrootfs.ext4,而引导文件(BOOT.BINimage.ub)放在 FAT 分区中。因此在目标板上,根文件系统的/boot可能为空,而真正的内核/DTB 在第一个 FAT 分区(挂载为/run/media/mmcblk0p1等)。


四、实际使用中的小贴士

1. 如何查看当前目录使用情况?

使用df -h查看各挂载点的磁盘使用量:

# df -hFilesystem Size Used Avail Use% Mounted on /dev/root3.5G 320M3.0G10% / devtmpfs 494M0494M0% /dev tmpfs 494M1.2M 493M1% /run tmpfs 494M 132K 494M1% /var/volatile

2. 如何判断某个命令来自哪个包?

在 PetaLinux 环境中可以使用which找到命令位置,然后检查其链接:

whichls# /bin/lsls-l/bin/ls# lrwxrwxrwx 1 root root 7 Mar 9 2023 /bin/ls -> busybox

3. 如何自定义根文件系统内容?

  • 通过petalinux-config -c rootfs菜单增减软件包。
  • project-spec/meta-user/recipes-core/images/petalinux-image.bbappend中添加IMAGE_INSTALL += "your-package"
  • project-spec/meta-user/下创建自定义 recipe 或添加文件到rootfs的特定路径。

4. 如何固化自定义脚本或配置文件?

将文件放在project-spec/meta-user/recipes-core/base-files/下,通过 bbappend 覆盖原/etc下的文件,或者编写自己的 recipe 安装到目标目录。


五、总结

PetaLinux 生成的根文件系统遵循标准的 Linux 目录结构,但针对嵌入式做了大量精简。理解各目录的作用,能够帮助你:

  • 快速定位问题:比如配置文件在/etc,日志在/var/log,模块在/lib/modules
  • 进行系统定制:知道在哪里添加自启动脚本,在哪里放置固件。
  • 有效调试硬件:利用/sys/proc/device-tree查看设备状态。

参考资料

  • Filesystem Hierarchy Standard
  • Xilinx PetaLinux Tools Documentation
  • BusyBox Documentation
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 20:35:16

MockGPS位置模拟:5步实现手机精准虚拟定位的完整指南

MockGPS位置模拟&#xff1a;5步实现手机精准虚拟定位的完整指南 【免费下载链接】MockGPS Android application to fake GPS 项目地址: https://gitcode.com/gh_mirrors/mo/MockGPS 你是否需要在不同场景下灵活控制手机位置&#xff1f;无论是测试应用功能、展示特定地…

作者头像 李华
网站建设 2026/4/16 20:34:41

WMMAVYUXUANSYS/育轩:重塑校园会议与教育音频管理新范式

WMMAV * Shanghai YuxuanSys * Shanghai AVS系统如何改变“盲管”状态 从一个实际部署界面的截图可以清晰看到&#xff0c;这套AVS智能管理平台提供了以下能力&#xff1a; 全校总览&#xff1a;直观显示23间教室、设备总数、在线设备数及85%的在线率 楼宇钻取&#xff1a;支…

作者头像 李华
网站建设 2026/4/16 20:33:49

避坑指南:STM32F103 CAN过滤器配置的那些‘坑’(从原理到代码调试)

STM32F103 CAN过滤器配置实战&#xff1a;从硬件原理到调试技巧 最近在调试一个工业控制项目时&#xff0c;遇到了CAN总线数据接收异常的问题——明明发送端已经发出了数据&#xff0c;接收端却毫无反应。经过一番排查&#xff0c;发现问题出在CAN过滤器的配置上。这让我意识到…

作者头像 李华
网站建设 2026/4/16 20:25:26

2025届学术党必备的五大AI论文工具横评

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 于当下高等教育范畴之内&#xff0c;人工智能技术已然渐渐浸透至毕业论文撰写的整个流程之中…

作者头像 李华