You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写自动化脚本制作自定义Ubuntu 24 Server树莓派4可启动镜像

如何编写自动化脚本制作自定义Ubuntu 24 Server树莓派4可启动镜像

我完全理解你想要打造一个比Raspberry Pi Imager更灵活的自定义镜像工具——把预装了ROS、专属工具的Ubuntu 24 Server打包成可启动的img.xz,确实比直接dd官方镜像实用多了。下面我就一步步帮你理清思路和具体操作:

一、前期准备

  • 下载官方Ubuntu 24 Server for Raspberry Pi的ARM64镜像(对应树莓派4的版本)
  • 安装必要工具:
    sudo apt update && sudo apt install qemu-user-static losetup parted xz-utils -y
    

二、挂载基础镜像并进入定制环境

  1. 将镜像挂载为循环设备:

    sudo losetup -fP ubuntu-24.04-server-arm64.img
    

    执行后可以用losetup -l查看生成的循环设备,比如/dev/loop0

  2. 挂载启动分区和根分区:
    先查看分区表确认分区编号:

    sudo parted -l /dev/loop0
    

    通常第一个分区(loop0p1)是FAT32格式的/boot,第二个(loop0p2)是ext4格式的/root。创建临时挂载点并挂载:

    sudo mkdir -p /tmp/pi-boot /tmp/pi-root
    sudo mount /dev/loop0p1 /tmp/pi-boot
    sudo mount /dev/loop0p2 /tmp/pi-root
    
  3. 进入ARM模拟的chroot环境:
    把qemu的ARM静态二进制复制到根分区,让x86机器能运行ARM程序:

    sudo cp /usr/bin/qemu-aarch64-static /tmp/pi-root/usr/bin/
    

    为了让chroot环境更完整,可以挂载必要的系统文件系统:

    sudo mount -t proc proc /tmp/pi-root/proc
    sudo mount -t sysfs sys /tmp/pi-root/sys
    sudo mount -o bind /dev /tmp/pi-root/dev
    

    然后进入chroot:

    sudo chroot /tmp/pi-root /bin/bash
    

三、定制你的系统

现在你就像在真实的树莓派系统里操作了,可以完成这些定制:

  • 安装ROS及依赖(比如适配Ubuntu 24.04的ROS 2 Jazzy):
    sudo apt update && sudo apt install ros-jazzy-desktop -y
    echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc
    
  • 安装自定义工具:sudo apt install git vim htop tmux -y
  • 复制你的工作文件:可以在chroot前把本地文件复制到/tmp/pi-root/opt/目录下,然后在chroot里调整权限或路径
  • 配置系统:比如开启SSH服务、设置默认用户密码、调整网络参数等
  • 清理冗余文件以减小镜像体积:
    sudo apt clean && sudo apt autoremove -y
    

完成后退出chroot:exit

四、处理启动分区(可选)

官方镜像的启动分区已经适配树莓派4,一般不需要修改。如果需要自定义启动参数(比如启用串口控制台),可以编辑/tmp/pi-boot/cmdline.txt,添加console=ttyAMA0,115200之类的参数。

五、卸载挂载并打包成img.xz

  1. 先卸载所有挂载的文件系统:
    sudo umount /tmp/pi-root/proc /tmp/pi-root/sys /tmp/pi-root/dev
    sudo umount /tmp/pi-boot /tmp/pi-root
    sudo losetup -d /dev/loop0
    
  2. 用xz压缩镜像,可选压缩级别(-9为最高压缩,速度较慢):
    xz -9 ubuntu-24.04-server-arm64.img
    
    完成后就得到了ubuntu-24.04-server-arm64.img.xz,可以直接用来烧录到SD卡或USB设备。

六、环境选择:本地x86机器还是树莓派?

  • 优先选本地x86/AMD64机器:安装qemu-user-static后就能模拟ARM环境,编译和安装软件的速度比树莓派快很多,而且不会占用树莓派的资源,操作也更安全(只要你别误挂载自己的系统分区)。
  • 树莓派本地制作:不需要qemu,但速度慢,内存不足时可能会出现安装失败的情况,适合没有x86机器的场景。

一些额外注意事项

  • 操作前务必备份原始镜像,避免误操作导致需要重新下载
  • 如果定制过程中遇到网络问题,可以在chroot前把本地的resolv.conf复制到/tmp/pi-root/etc/,解决DNS解析问题:
    sudo cp /etc/resolv.conf /tmp/pi-root/etc/resolv.conf
    

备注:内容来源于stack exchange,提问作者Teemo225

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 08:48:22