当开源生态遇上极客硬件,会碰撞出怎样的火花?当 deepin 25 遇上香橙派 5 Plus 开发板,又会带来什么样的实践体验?
感谢社区用户@zc_zhu 的贡献与投稿,本文将带你深入体验这一融合过程:从环境准备、系统构建,到内核编译与桌面部署,为大家详细讲解如何在香橙派 5 Plus 上移植 deepin 25 操作系统。
一、环境准备
系统准备
我们推荐在 deepin 或 Ubuntu、Debian 等系统环境下进行操作,使用 AMD64 主机配合 TF 卡构建系统镜像。若你希望将系统直接安装至板载 eMMC,可先通过 TF 卡启动 Armbian,再在开发板内完成后续操作。
安装工具及依赖
# 切换到超级账户(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 卡分区与格式化
将 TF 卡通过读卡器接入电脑,假设识别为 /dev/sda(实际操作请根据实际情况确认设备名)。
我们使用 parted 工具进行分区,预留 16MB 空白区域,并创建一个根分区。如果是安装在emmc上,分区及挂载时替换相应设备,一般应该为mmcblk0。
# 我这里只有一个根分区,磁盘前面留16M空白区域,你也可以使用其他工具分区,比如cfdisk parted --script /dev/sda mklabel gpt mkpart primary ext4 16MiB 100%
接下来格式化分区,并生成用于后续引导和 fstab 设置的 UUID。
# 生成一个根分区的uuid,后面设置引导和fstab的时候使用
root_uuid=$(uuidgen)
# 格式化成ext4
mkfs.ext4 -U "${root_uuid}" -L root /dev/sda1
最后挂载分区。
# 设置挂载点
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 内核。
编译 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=none
编译内核:使用 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 配置与系统安装
挂载虚拟文件系统并 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
接下来在 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
六、系统配置与用户设置
设置主机名、root 密码,并新建用户。
# 设置主机名
echo OPi5Plus | tee /etc/hostname > /dev/null
# 设置root密码
passwd
# 新建用户
export USER=用户名
useradd -m -G users,sudo,audio -s /bin/bash ${USER}
passwd ${USER}
配置 fstab 和 extlinux 引导。
# 配置fstab echo "#" > ${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 initrd /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
七、清理工作与首次启动
退出 Chroot 环境,清理临时文件和软件包缓存。
# 删除内核软件包 rm -rf /boot/*.deb # 清理apt缓存 apt clean # 退出chroot环境 exit
随后卸载相关设备。
umount ${WORKSPACE}/tmp
umount ${WORKSPACE}/var/tmp
umount ${WORKSPACE}/proc
umount ${WORKSPACE}/sys
umount ${WORKSPACE}/dev
umount ${WORKSPACE}
借着将 TF 卡插入香橙派 5 Plus,并接通电源与外设,即可首次进入 deepin 25 桌面!
以上便是在香橙派5Plus上运行 deepin 25 的全过程,本教程至此结束。再次感谢 @zc_zhu 的贡献及分享!
若您在实践过程中遇到了任何问题,或者对我们的教程有任何建议,欢迎随时在deepin 社区论坛中与我们交流。
全部0条评论
快来发表一下你的评论吧 !