[ Content contribution] 树莓派运行 deepin v23
Tofloor
poster avatar
空木蓮華
deepin
2024-03-26 16:17
Author

介绍

树莓派运行 deepin 系统。

构建内核

内核可以从官方 raspberrypi/firmware 仓库的 boot 目录下拷贝。

安装工具,这里选择交叉编译

sudo apt install git bc bison flex libssl-dev make libc6-dev libncurses5-dev

为 64 位内核安装 64 位工具链

sudo apt install git bc bison flex libssl-dev make libc6-dev libncurses5-dev

克隆代码

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

根据 Raspberry Pi 型号运行以下命令来准备默认配置。

这里用树莓派 4B

cd linux
KERNEL=kernel8
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcm2711_defconfig

使用配置构建,对于所有 64 位版本

make -j$(nproc) ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- Image dtbs modules

分区

用读卡器将 SD 插入电脑,用 lsblk 识别设备。后面的操作和插入一个 SD 卡一样。

这里 dd 个磁盘文件,来当作 SD 卡。

dd if=/dev/zero of=deepin-raspberrypi.img bs=1M count=16384

如果是 SD 卡,进行下格式化, lsblk 查看具体设备。

如果分区被挂载了需要卸载 sudo umount /media/xxx, 用 fdisk 删除下已有的分区,下面是对磁盘进行分区, SD 卡同理。

sudo fdisk deepin-raspberrypi.img << EOF
n
p
1

+300M
t
c
n
p
2


w
EOF

挂载

DEV=$(sudo losetup --partscan --find --show deepin-raspberrypi.img)
sudo mkfs.fat -F32 "${DEV}p1"
sudo mkfs.ext4 "${DEV}p2" # 根分区 (/)

拷贝根文件系统和引导

mkdir /mnt/rootfs
ROOTFS="/mnt/rootfs"
sudo mount "${DEV}p2" $ROOTFS

# 根文件系统
./build-rootfs.sh
sudo mount "${DEV}p1" $ROOTFS/boot

# 在物理设备上需要添加 cmdline.txt 定义 Linux内核启动时的命令行参数

PTUUID=$(sudo blkid /dev/loop0 | awk -F'PTUUID="' '{print $2}' | awk -F'"' '{print $1}')
echo "console=serial0,115200 console=tty1 root=PARTUUID=$PTUUID-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet init=/usr/lib/raspi-config/init_resize.sh" | sudo tee $ROOTFS/boot/cmdline.txt

# 拷贝引导加载程序/GPU 固件等, 从 https://github.com/raspberrypi/firmware/tree/master/boot 官方仓库中拷贝,另外放入了 cmdline.txt 和 config.txt 配置

sudo cp -r firmware/* $ROOTFS/boot

额外的包

# deepin 源里目前没有 raspi-config 这个包,需要另外下载
sudo mount --bind /dev $ROOTFS/dev
sudo mount -t proc none $ROOTFS/proc
sudo mount -t sysfs none $ROOTFS/sys

sudo chroot $ROOTFS bash

# 进入根文件系统
curl http://archive.raspberrypi.org/debian/pool/main/r/raspi-config/raspi-config_20240313_all.deb -o raspi-config.deb
apt install ./raspi-config.deb
rm ./raspi-config.deb

# 退出系统
exit

编辑分区表

PTUUID=$(sudo blkid /dev/loop0 | awk -F'PTUUID="' '{print $2}' | awk -F'"' '{print $1}')
sudo tee $ROOTFS/etc/fstab << EOF
proc            /proc           proc    defaults          0       0
PARTUUID=$PTUUID-01  /boot           vfat    defaults          0       2
PARTUUID=$PTUUID-02  /               ext4    defaults,noatime  0       1
EOF

启动

尝试使用 qemu 启动

下面使用的内核和设备树是我编译的,也可以直接拷贝 firmware 中的 kernel.img 和 bcm2710-rpi-3-b.dtb

qemu-system-aarch64 -machine type=raspi3b \
	-m 1G  -dtb ~/code/raspberrypi/linux/arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dtb \
	-kernel ~/code/raspberrypi/linux/arch/arm64/boot/Image \
	-drive id=hd-root,format=raw,file=deepin-raspberrypi.img \
	-append "rw earlycon=pl011,0x3f201000 console=ttyAMA0 console=ttyS0,115200 loglevel=8 root=/dev/mmcblk0p2 fsck.repair=yes net.ifnames=0 rootwait memtest=1 dwc_otg.fiq_fsm_enable=0" \
	-serial stdio \
	-netdev user,id=net0,net=10.0.2.0/24,hostfwd=tcp::8022-:22 \
	-usb -device usb-kbd -device usb-tablet -device usb-net,netdev=net0

从 SD 卡启动

直接将 SD 插入树莓派,通电,插入显示屏,无需额外操作。

pc1.png

安装桌面环境

arm 的稳定源可能缺一些包,先添加上构建用的 ci

sudo vim /etc/apt/sources.list
deb [trusted=yes] https://ci.deepin.com/repo/obs/deepin:/Develop:/main/standard/ ./
deb-src [trusted=yes] https://ci.deepin.com/repo/obs/deepin:/Develop:/main/standard/ ./
deb [trusted=yes] https://ci.deepin.com/repo/obs/deepin:/Develop:/community/deepin_develop/ ./
deb-src [trusted=yes] https://ci.deepin.com/repo/obs/deepin:/Develop:/community/deepin_develop/ ./
deb [trusted=yes] https://ci.deepin.com/repo/obs/deepin:/Develop:/dde/deepin_develop/ ./
deb-src [trusted=yes] https://ci.deepin.com/repo/obs/deepin:/Develop:/dde/deepin_develop/ ./
sudo apt update && sudo apt upgrade
sudo apt install deepin-desktop-environment-base
sudo apt install deepin-desktop-environment-cli
sudo apt install deepin-desktop-environment-core
sudo apt install deepin-desktop-environment-extras
sudo apt install deepin-desktop-environment-ll

安装完成后可以选择注释掉 ci 源,避免依赖冲突。

desktop1.png

desktop2.png

完结撒花。

参考

QEMU仿真树莓派1和3B-保姆级教程

raspberrypi document0ation

项目

deepin-raspberrypi

镜像文件

Reply Favorite View the author
All Replies
dxy2020
deepin
2024-03-26 16:31
#1

like

Reply View the author
jjcui8595
Moderator
2024-03-26 16:49
#2

楼主威武like

Reply View the author
depend
deepin
2024-03-26 17:13
#3

6

Reply View the author
yanjuner
Super Moderator
2024-03-26 17:20
#4

学到了学到了

Reply View the author
晚秋(lateautumn)
Moderator
2024-03-26 17:22
#5

厉害like

Reply View the author
阿尼樱奈奈
Moderator
2024-03-26 17:36
#6

like

Reply View the author
Amber
deepin
2024-03-26 18:32
#7

没玩过,但是好高级like

Reply View the author
Daryl Xu
deepin
2024-03-26 19:45
#8
like
Reply View the author
lchunghan
deepin
2024-03-26 20:44
#9

like

Reply View the author
不会开车有驾照
deepin
2024-03-27 09:45
#10

支持所有折腾

Reply View the author
盘灶车站
deepin
2024-03-29 10:20
#11

楼主,用你这个法子,在pine64开发板上成功,但安装完截图录屏应用之后,运行不起来截图功能,你那边怎么样?

Reply View the author
空木蓮華
deepin
2024-03-29 11:33
#12
盘灶车站

楼主,用你这个法子,在pine64开发板上成功,但安装完截图录屏应用之后,运行不起来截图功能,你那边怎么样?

那个截图工具系统预装的是玲珑运行的,你试试直接安装 deepin-screen-recorder 这个包,截图的,用快捷键 ctrl + alt + a 或者你直接命令 deepin-screen-recorder 看看输出。

原本应该去掉一些包的,省事我直接全装了。

Reply View the author