三、构建根文件系统
使用 mmdebstrap 构建 deepin 25(代号 Crimson)的最小根文件系统:
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"
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:
git clone https://github.com/armbian/rkbin --depth=1
git clone https://github.com/u-boot/u-boot -b v2025.07 --depth=1
git clone https://github.com/TrustedFirmware-A/trusted-firmware-a -b v2.13.0 --depth=1
pushd ./trusted-firmware-a
ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make PLAT=rk3588 bl31
popd
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
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
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 ${WORKSPACE}
export DEBIAN_FRONTEND=noninteractive
2、接下来在 Chroot 环境中安装内核及桌面环境:
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
passwd
export USER=用户名
useradd -m -G users,sudo,audio -s /bin/bash ${USER}
passwd ${USER}
2、配置 fstab 和 extlinux 引导:
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
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