当开源生态遇上极客硬件,会碰撞出怎样的火花?当 deepin 25 遇上香橙派 5 Plus 开发板,又会带来什么样的实践体验?

感谢社区用户@zc_zhu 的贡献与投稿,本文将带你深入体验这一融合过程:从环境准备、系统构建,到内核编译与桌面部署,为大家详细讲解如何在香橙派 5 Plus 上移植 deepin 25 操作系统。

【香橙派:树莓派有的我也要有!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 社区论坛中与我们交流。

发表评论