You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为树莓派5交叉编译安装开发包并获取根文件系统?

树莓派5交叉编译:获取真实根文件系统及编译配置

一、能否从运行中的树莓派复制根文件系统?

可以,但需注意以下细节:

  • 排除虚拟/临时目录:复制时要跳过/proc/sys/dev这类内核虚拟文件系统,以及/tmp/run/mnt/media等临时/挂载目录,避免无效数据和冲突。推荐用rsync命令:
    rsync -avz --exclude={/proc,/sys,/dev,/tmp,/run,/mnt,/media} pi@<树莓派IP>:/ /path/to/local/raspberrypi-rootfs
    
  • 修正系统配置:复制完成后,需修改根文件系统内的/etc/fstab,注释掉虚拟文件系统的挂载项;若需要在主机上通过该根文件系统访问网络,可调整/etc/resolv.conf
  • 局限性:如果树莓派系统安装了大量无关软件,根文件系统会冗余过大;后续更新依赖需重新复制或进入chroot环境操作。

二、更推荐的方法:从官方镜像提取根文件系统

这种方式能获得干净、与树莓派官方系统完全一致的根文件系统,步骤如下:

  1. 下载官方镜像:获取树莓派5对应的64位Raspberry Pi OS(Bookworm版本)镜像。
  2. 挂载根分区
    • fdisk -l /path/to/raspios.img查看镜像分区信息,找到根分区的起始扇区(比如27262976)。
    • 计算偏移量并挂载:
      sudo mount -o loop,offset=$((27262976*512)) /path/to/raspios.img /path/to/local/raspberrypi-rootfs
      
  3. 在chroot中安装依赖
    • 先挂载必要的虚拟文件系统,确保chroot环境正常运行:
      sudo mount --bind /dev /path/to/local/raspberrypi-rootfs/dev
      sudo mount --bind /proc /path/to/local/raspberrypi-rootfs/proc
      sudo mount --bind /sys /path/to/local/raspberrypi-rootfs/sys
      
    • 安装qemu-user-static以支持在x86_64主机上运行ARM64程序:
      sudo apt install qemu-user-static
      sudo cp /usr/bin/qemu-aarch64-static /path/to/local/raspberrypi-rootfs/usr/bin/
      
    • 进入chroot环境并安装开发依赖:
      sudo chroot /path/to/local/raspberrypi-rootfs
      apt update && apt install libwebkit2gtk-4.0-dev build-essential cmake
      exit
      
    • 退出后卸载虚拟文件系统:
      sudo umount /path/to/local/raspberrypi-rootfs/{sys,proc,dev}
      

三、CMake交叉编译配置

  1. 安装交叉编译器
    sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
    
  2. 创建工具链文件:新建toolchain-aarch64-rpi.cmake,内容如下:
    set(CMAKE_SYSTEM_NAME Linux)
    set(CMAKE_SYSTEM_PROCESSOR aarch64)
    
    set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
    set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)
    
    set(CMAKE_SYSROOT /path/to/local/raspberrypi-rootfs)
    
    set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
    set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
    set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
    set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
    
  3. 执行编译
    cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=toolchain-aarch64-rpi.cmake
    cmake --build build
    

内容的提问来源于stack exchange,提问作者jiandingzhe

火山引擎 最新活动