0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

树莓派镜像的制作、烧录及运行

深度操作系统 来源:深度操作系统 2025-03-27 16:00 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

你是否想过自己动手打造一个专属的操作系统镜像?无论是为极客项目定制开发环境,还是让老旧设备焕发新生,系统镜像定制都是极客玩家的必备技能。

那么如何针对自己手中的设备,为其定制一个专属的系统镜像呢?

感谢社区用户@空木蓮華 的投稿及贡献。本文将以 deepin 深度操作系统以及树莓派设备为例,演示树莓派镜像的制作、烧录及运行,与你分享自定义系统镜像的实用思路与宝贵经验。

1基础工具链安装

在开始制作镜像前,需先安装基础工具链。可通过以下命令安装必要软件包:

sudo apt update -y
sudo apt-get install -y qemu-user-static binfmt-support mmdebstrap arch-test usrmerge usr-is-merged fdisk dosfstools
sudo systemctl restart systemd-binfmt  # 重启 binfmt 服务加载ARM支持

其中,qemu-user-static 与 binfmt-support 用于实现异架构模拟,让 X86 主机可直接执行 ARM 程序。

2根文件系统构建

使用 mmdebstrap 创建基础系统,命令如下:

mkdir -p rootfs
sudo mmdebstrap 
    --hook-dir=/usr/share/mmdebstrap/hooks/merged-usr 
    --include="ca-certificates,locales,sudo,apt,adduser,polkitd,systemd,network-manager,dbus-daemon,apt-utils,bash-completion,curl,vim,bash,deepin-keyring,init,ssh,net-tools,iputils-ping,lshw,iproute2,iptables,procps,wpasupplicant,dmidecode,ntpsec-ntpdate,linux-firmware" 
    --architectures=arm64 
    beige 
    rootfs 
    "deb https://community-packages.deepin.com/beige/ beige main commercial community" 
    "deb https://proposed-packages.deepin.com/beige-testing/ unstable/25 main commercial community"
该命令指定创建 ARM64 架构的根文件系统,包含系统工具、网络工具、调试工具等必要软件包。

3磁盘镜像制作

3.1 创建空白镜像并分区

使用以下命令创建空白镜像并进行分区:

dd if=/dev/zero of=deepin-raspberrypi.img bs=1M count=4096
sudo fdisk deepin-raspberrypi.img << EOF
n
p
1


+300M
t
c
n
p
2


w
EOF

上述命令创建了一个 4GB 的空白镜像文件,并将其分为两个分区:300MB 的 FAT32 格式启动分区和剩余空间的 Linux 分区。

3.2 格式化与挂载分区

通过 losetup 将镜像文件绑定到回环设备,然后分别对两个分区进行格式化和挂载操作:

LOOP=$(sudo losetup -Pf --show deepin-raspberrypi.img)
sudo mkfs.fat -F32 "${LOOP}p1"
sudo dosfslabel "${LOOP}p1" bootfs
sudo mkfs.ext4 "${LOOP}p2"
sudo e2label "${LOOP}p2" rootfs


mkdir tmp
sudo mount "${LOOP}p2" tmp
sudo cp -a rootfs/* tmp
sudo mkdir tmp/boot/firmware
sudo mount "${LOOP}p1" tmp/boot/firmware


sudo mount --bind /dev tmp/dev
sudo mount -t proc chproc tmp/proc
sudo mount -t sysfs chsys tmp/sys
sudo mount -t tmpfs -o "size=99%" tmpfs tmp/tmp
sudo mount -t tmpfs -o "size=99%" tmpfs tmp/var/tmp
sudo mount --bind /etc/resolv.conf tmp/etc/resolv.conf
sudo mount -t devpts devpts tmp/dev/pts

4树莓派硬件适配

4.1安装固件与内核

从树莓派官方仓库[1]下载树莓派预编译固件,并拷贝至相应目录。

git clone --depth=1 https://github.com/raspberrypi/firmware.git
sudo cp -r firmware/boot/* tmp/boot/firmware

4.2 配置 config.txt

配置config.txt文件[2],以启用音频、自动加载覆盖层、设置 64 位模式等。

sudo tee tmp/boot/firmware/config.txt <

4.3 添加树莓派官方源

mkdir -p tmp/etc/apt/sources.list.d
# 添加树莓派的源,一些树莓派提供的工具,需要从这个软件源下载
echo "deb [trusted=yes] http://archive.raspberrypi.org/debian/ bookworm main" | sudo tee tmp/etc/apt/sources.list.d/raspberrypi.list

4.4 安装额外的软件包、内核

# raspi-config 会依赖到 libfmt9,deepin 源里没 已经升级到 libfmt10,从 Debian 下载 deb 包
curl -L http://ftp.cn.debian.org/debian/pool/main/f/fmtlib/libfmt9_9.1.0+ds1-2_arm64.deb -o tmp/tmp/libfmt9.deb
curl -L http://ftp.cn.debian.org/debian/pool/main/d/device-tree-compiler/libfdt1_1.6.1-4+b1_arm64.deb -o tmp/tmp/libfdt1.deb

4.5 进入 chroot,并安装配置工具及内核

sudo chroot tmp bash
(chroot) apt update -y && apt install -y /tmp/libfmt9.deb /tmp/libfdt1.deb
(chroot) apt install -y raspi-config raspberrypi-sys-mods firmware-brcm80211 raspi-firmware bluez-firmware
(chroot) apt install -y 
    linux-image-rpi-v8 
    linux-image-rpi-2712 
    linux-headers-rpi-v8 
    linux-headers-rpi-2712

5配置启动参数

设置 cmdline.txt 内核参数,指定控制台、根文件系统等信息。

# 配置 cmdline.txt 内核参数
(chroot) echo "console=serial0,115200 console=tty1 root=LABEL=rootfs rootfstype=ext4 fsck.repair=yes rootwait quiet init=/usr/lib/raspberrypi-sys-mods/firstboot splash plymouth.ignore-serial-consoles" | tee /boot/firmware/cmdline.txt

6编辑分区表

配置 /etc/fstab 文件,确保系统启动时正确挂载分区。

(chroot) tee /etc/fstab << EOF
proc          /proc           proc    defaults          0       0
LABEL=bootfs  /boot/firmware  vfat    defaults          0       2
LABEL=rootfs  /               ext4    defaults,rw,errors=remount-ro,x-systemd.growfs  0       1
EOF

7系统个性化配置

创建用户,并配置本地化设置,包括语言、时区等。

# 创建用户并设置密码
(chroot) useradd -m deepin && usermod -aG sudo deepin
(chroot) echo 'deepin:deepin' | chpasswd
(chroot) chsh -s /bin/bash deepin
# 取消注释
(chroot) sed -i -E 's/#[[]]*(en_US.UTF-8[[]]+UTF-8)/1/g' /etc/locale.gen
(chroot) sed -i -E 's/#[[]]*(zh_CN.UTF-8[[]]+UTF-8)/1/g' /etc/locale.gen
# 生成语言设置
(chroot) locale-gen
# 设置中文
(chroot) tee /etc/locale.conf << EOF
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN
EOF
# 设置本地上海时区
(chroot) ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

8清理与压缩

在完成上述配置后,可以清理软件包缓存并卸载挂载点。

# 清理软件包缓存
(chroot) apt clean && rm -rf /var/cache/apt/archives/*
(chroot) exit
# 卸载挂载点
sudo umount -l tmp
# 强制文件系统检查
sudo e2fsck -f "${LOOP}p2"
# 解除回环设备
sudo losetup -D $LOOP

9烧录镜像

此步骤建议使用树莓派官方烧录工具,根据系统提示进行操作,将制作好的镜像烧录到树莓派的存储设备上。

详细步骤可参考:《deepin 25树莓派通用镜像上线》

10安装桌面环境

若需要安装桌面环境,可在系统启动后通过 APT 安装,或直接在树莓派设备上构建含桌面的完整镜像。

export DEBIAN_FRONTEND=noninteractive
sudo apt update
# DDE 桌面环境相关的包
sudo apt install deepin-desktop-environment-{base,cli,core,extras}
# 这里安装完系统lightdm是被禁用自启动,允许自启动重启
sudo systemctl enable lightdm
# 玲珑环境
sudo apt install deepin-desktop-environment-ll
# UOS AI 、火狐浏览器
sudo apt install uos-ai firefox


# 如果需要使用 treeland 窗管
sudo apt install treeland ddm
# 禁用 lightdm 自启动,允许 ddm 自启动
sudo systemctl disable lightdm && sudo systemctl enable ddm
# 停止 lightdm,启动 ddm
sudo systemctl stop lightdm && sudo systemctl enable ddm

11制作镜像脚本

可通过克隆 GitHub 仓库获取制作镜像的脚本,方便批量制作或自动化操作。

git clone --depth=1 https://github.com/deepin-community/deepin-raspberrypi.git


# 构建不包含桌面环境的镜像
cd deepin-raspberrypi
./build.sh


# 构建包含桌面环境的镜像,需要在树莓派上构建
cd deepin-raspberrypi
./build.sh desktop

以上便是在树莓派上定制 deepin 系统镜像的全过程,本教程至此结束。教程中所涉及命令的详细解读可点击「阅读原文」查看。

通过以上讲解,相信大家已经了解了系统磁盘镜像的制作过程。这里以 deepin 和树莓派为例,其他架构的系统定制(如 X86_64、LoongArch64、RISC-V64 等架构的系统)也可以参考这一思路。

再次感谢@空木蓮華的贡献及分享!若您在实践过程中遇到了任何问题,或者对我们的教程有任何建议,欢迎随时在deepin 社区论坛与我们交流。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 操作系统
    +关注

    关注

    37

    文章

    7328

    浏览量

    128625
  • 镜像
    +关注

    关注

    0

    文章

    178

    浏览量

    11548
  • 烧录
    +关注

    关注

    8

    文章

    305

    浏览量

    36943
  • 树莓派
    +关注

    关注

    122

    文章

    2069

    浏览量

    109700

原文标题:以 deepin 为例,手把手教你如何自定义系统镜像 | 内附视频

文章出处:【微信号:linux_deepin,微信公众号:深度操作系统】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    实用树莓Linux编译指南,打工人必备!

    不友好,有没有好的解决办法? 今天来分享一下我的私藏干货——树莓Linux编译。编译好之后,开发板只需插到树莓派上连接电脑就可以直接用了,极其方便。 本文以树莓
    的头像 发表于 12-17 16:19 1983次阅读
    实用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>Linux编译指南,打工人必备!

    树莓入门教程—烧录镜像方法

    烧录树莓
    jf_97106930
    发布于 :2022年09月04日 14:41:55

    banana pi 板上跑树莓镜像

    `banana pi 板上跑树莓镜像banana pi 上运行树莓派系统镜像已经发布请到网站
    发表于 08-09 19:31

    树莓派系列教程2:树莓烧写镜像

    ”进行烧写。四、启动树莓烧写完后把 SD 卡插入树莓即可运行树莓
    发表于 03-28 10:40

    第二章 如何与树莓搭讪

    :https://pan.baidu.com/s/1E9eA2I8EE_Cudxfix2jNxA 提取码:axny第一部分给树莓烧录系统大部分代理商提供的树莓
    发表于 03-20 11:38

    树莓镜像烧写

    开发环境1.1镜像烧写机器人出厂已经烧写完成树莓ROS镜像,用户可直接使用,跳过此步骤。如果使用过程中损坏系统文件或者镜像版本更新,用户需
    发表于 08-06 09:46

    树莓派系统镜像制作

    树莓带你掌握嵌入式linux产品实战开发–树莓派系统镜像制作(七)作者:伍俊伟 本文非作者授权,禁止转载2020年8月22日文章目录从
    发表于 11-05 09:21

    树莓4B安装及使用

    实验一树莓4B安装及使用目录实验一 树莓4B安装及使用... 1目录... 1一、 树莓
    发表于 12-13 06:12

    怎样去设计一个基于树莓4B的智能小车

    搭建以 树莓4B为核心的智能小车(最少化操作步骤)既然是最少化,那么所有的工具和步骤都会极为简单PS:这里树莓使用笔记本电脑进行安装配置,树莓
    发表于 01-12 06:55

    树莓烧录后死机怎么办?

    树莓烧录后死机怎么办
    发表于 10-24 08:06

    基于树莓制作的平板电脑

    基于树莓的平板电脑,可运行ubuntu、raspbian、WindowsIoT、Android!
    的头像 发表于 06-05 06:10 6308次阅读

    利用树莓制作Pi Zero游戏机的方法与步骤

    树莓制作Pi Zero游戏机,它在控制器内部运行retropie,这是一个非常简单树莓项目
    的头像 发表于 05-23 06:10 6891次阅读

    使用树莓制作HomeKit安防监控

    树莓3B及树莓摄像头,制作可以与homekit智能家居媲美的安防监控!
    的头像 发表于 05-30 12:54 4034次阅读
    使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b><b class='flag-5'>制作</b>HomeKit安防监控

    树莓带你掌握嵌入式linux产品实战开发-- 树莓派系统镜像制作(七)

    树莓带你掌握嵌入式linux产品实战开发–树莓派系统镜像制作(七)作者:伍俊伟 wjw@paipaiiot.com本文非作者授权,禁止转
    发表于 11-02 14:50 13次下载
    从<b class='flag-5'>树莓</b><b class='flag-5'>派</b>带你掌握嵌入式linux产品实战开发-- <b class='flag-5'>树莓</b>派系统<b class='flag-5'>镜像</b><b class='flag-5'>制作</b>(七)

    干货来喽!实用树莓Linux编译指南

    不友好,有没有好的解决办法? 今天来分享一下我的私藏干货——树莓Linux编译。编译好之后,开发板只需插到树莓派上连接电脑就可以直接用了,极其方便。 本文以树莓
    的头像 发表于 12-18 16:31 838次阅读
    干货来喽!实用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>Linux编译指南