当开源生态遇上极客硬件,会碰撞出怎样的火花?当 deepin 25 遇上香橙派 5 Plus 开发板,又会带来什么样的实践体验?
感谢社区用户@zc_zhu 的贡献与投稿,本文将带你深入体验这一融合过程:从环境准备、系统构建,到内核编译与桌面部署,为大家详细讲解如何在香橙派 5 Plus 上移植 deepin 25 操作系统。
一、环境准备
1、系统准备
我们推荐在 deepin 或 Ubuntu、Debian 等系统环境下进行操作,使用 AMD64 主机配合 TF 卡构建系统镜像。若你希望将系统直接安装至板载 eMMC,可先通过 TF 卡启动 Armbian,再在开发板内完成后续操作。
2、安装工具及依赖
# 切换到超级账户(root)
sudo su
# 升级系统,安装依赖
apt update -y
apt install -y curl git mmdebstrap qemu-user qemu-user-static binfmt-support usrmerge
apt install -y build-essential crossbuild-essential-arm64 libncurses-dev swig flex bison u-boot-tools bc rsync libssh-dev git kmod cpio libelf-dev libssl-dev dwarves python3-pyelftools libgnutls28-dev python3-dev python3-setuptools uuid-runtime
二、TF 卡分区与格式化
1、将 TF 卡通过读卡器接入电脑,假设识别为 /dev/sda
(实际操作请根据实际情况确认设备名)
2、我们使用 parted
工具进行分区,预留 16MB 空白区域,并创建一个根分区。如果是安装在emmc上,分区及挂载时替换相应设备,一般应该为mmcblk0:
# 我这里只有一个根分区,磁盘前面留16M空白区域,你也可以使用其他工具分区,比如cfdisk
parted --script /dev/sda \
mklabel gpt \
mkpart primary ext4 16MiB 100%
3、接下来格式化分区,并生成用于后续引导和 fstab 设置的 UUID:
# 生成一个根分区的uuid,后面设置引导和fstab的时候使用
root_uuid=$(uuidgen)
# 格式化成ext4
mkfs.ext4 -U "${root_uuid}" -L root /dev/sda1
4、最后挂载分区:
# 设置挂载点
export WORKSPACE=$(pwd)/deepin
mkdir ${WORKSPACE}
# 挂载跟分区
mount /dev/sda1 ${WORKSPACE}
三、构建根文件系统
使用 mmdebstrap
构建 deepin 25(代号 Crimson)的最小根文件系统:
# deepin 25版本代号
export dist_version="crimson"
export dist_name="deepin"
# 系统架构
export arch="arm64"
# 需要安装的软件包
export PACKAGES="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,fdisk,initramfs-tools"
# 配置软件源
export REPOS="deb https://community-packages.deepin.com/beige/ crimson main commercial community"
# 如果不是在deepin系统上构建,需要执行以下命令
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 425956BB3E31DF51
# 构建根文件系统
mmdebstrap \
--hook-dir=/usr/share/mmdebstrap/hooks/merged-usr \
--skip=check/empty \
--include=$PACKAGES \
--components="main,commercial,community" \
--variant=minbase \
--architectures=${arch} \
${dist_version} \
${WORKSPACE} \
"${REPOS}"
四、编译 U-Boot 与内核
接下来需编译 U-Boot 引导程序和 Linux 内核:
1、编译 U-Boot:需下载并编译 tf-a 和 u-boot,具体命令可参考原文件或作者项目仓库。完成后需将生成的 u-boot 烧写至开发板 SPI:
# 下载rkbin
git clone https://github.com/armbian/rkbin --depth=1
# 下载u-boot源码
git clone https://github.com/u-boot/u-boot -b v2025.07 --depth=1
# 下载tf-a源码
git clone https://github.com/TrustedFirmware-A/trusted-firmware-a -b v2.13.0 --depth=1
# 编译tf-a
pushd ./trusted-firmware-a
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make PLAT=rk3588 bl31
popd
# 编译u-boot
pushd ./u-boot
export ROCKCHIP_TPL=../rkbin/rk35/rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.15.bin
export BL31=../trusted-firmware-a/build/rk3588/release/bl31/bl31.elf
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make orangepi-5-plus-rk3588_defconfig
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make -j$(nproc)
popd
# 在uboot目录下找到u-boot-rockchip-bin文件,参考香橙派官方烧写u-boot到spi的方法,将文件写入到开发版的spi里面
dd if=./u-boot/u-boot-rockchip.bin of=/dev/sda1 seek=1 bs=32k conv=fsync status=non
2、编译内核:使用 Armbian 提供的 Linux 内核源码,配置并编译生成 deb 包:
# 获取内核源码
git clone https://github.com/armbian/linux-rockchip -b rk-6.1-rkr5.1 --depth=1
# 配置并编译内核
wget https://raw.gitcode.com/zc_zhu/Deepin-OPi5Plus/blobs/8f39ccf42eb5e7058eb389ed1908fdddea1f84c3/.config -O ./linux-rockchip/.config
pushd linux-rockchip
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make menuconfig
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make bindeb-pkg -j$(nproc)
popd
# 将编译好的deb内核软件包复制到TF卡上的根文件系统的boot目录中等待后面步骤安装
cp *.deb ${WORKSPACE}/boot/
五、Chroot 配置与系统安装
1、挂载虚拟文件系统并 Chroot 进入目标根环境:
# 挂载相关分区
mount --bind /dev "${WORKSPACE}/dev"
mount -t proc chproc "${WORKSPACE}/proc"
mount -t sysfs chsys "${WORKSPACE}/sys"
mount -t tmpfs -o "size=99%" tmpfs "${WORKSPACE}/tmp"
mount -t tmpfs -o "size=99%" tmpfs "${WORKSPACE}/var/tmp"
# chroot到根文件系统中
chroot ${WORKSPACE}
# 不进行交互式安装
export DEBIAN_FRONTEND=noninteractive
2、接下来在 Chroot 环境中安装内核及桌面环境:
-
安装内核
# 上一步已经chroot到deepin的根文件系统中,确保命令成功执行
# 安装内核
dpkg -i /boot/*.deb
-
安装桌面
# 安装桌面环境
apt update -y
apt install -y \
deepin-desktop-environment-core \
deepin-desktop-environment-base \
deepin-desktop-environment-cli \
deepin-desktop-environment-extras \
firefox \
ddm \
treeland
systemctl disable lightdm
systemctl enable ddm
六、系统配置与用户设置
1、设置主机名、root 密码,并新建用户:
# 设置主机名
echo OPi5Plus | tee /etc/hostname > /dev/null
# 设置root密码
passwd
# 新建用户
export USER=用户名
useradd -m -G users,sudo,audio -s /bin/bash ${USER}
passwd ${USER}
2、配置 fstab 和 extlinux 引导:
# 配置fstab
echo "# <file system> <mount point> <type> <options> <dump> <fsck>" > ${WORKSPACE}/etc/fstab
echo "UUID=${root_uuid,,} / ext4 defaults,x-systemd.growfs 0 1" >> ${WORKSPACE}/etc/fstab
# 配置extlinux
mkdir -p ${WORKSPACE}/boot/extlinux/
cat > ${WORKSPACE}/boot/extlinux/extlinux.conf << EOF
default Deepin V25
menu title OPi5Plus U-Boot
prompt 1
timeout 5
label Deepin V25
menu Deepin V25
linux /boot/vmlinuz-6.1.115
nitrd /boot/initrd.img-6.1.115
fdt /usr/lib/linux-image-6.1.115/rockchip/rk3588-orangepi-5-plus.dtb
fdtoverlays /usr/lib/linux-image-6.1.115/rockchip/overlay/rockchip-rk3588-panthor-gpu.dtbo
append root=UUID=${root_uuid} rootfs=ext4 rootwait rw console=ttyS2,1500000 console=tty1 cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory loglevel=3
EOF
七、清理工作与首次启动
1、退出 Chroot 环境,清理临时文件和软件包缓存:
# 删除内核软件包
rm -rf /boot/*.deb
# 清理apt缓存
apt clean
# 退出chroot环境
exit
2、随后卸载相关设备:
umount ${WORKSPACE}/tmp
umount ${WORKSPACE}/var/tmp
umount ${WORKSPACE}/proc
umount ${WORKSPACE}/sys
umount ${WORKSPACE}/dev
umount ${WORKSPACE}
3、接着将 TF 卡插入香橙派 5 Plus,并接通电源与外设,即可首次进入 deepin 25 桌面!
以上便是在香橙派5Plus上运行 deepin 25 的全过程,本教程至此结束。再次感谢 @zc_zhu 的贡献及分享!
若您在实践过程中遇到了任何问题,或者对我们的教程有任何建议,欢迎随时在deepin 社区论坛中与我们交流。