瑞米派RK3568开发板Ubuntu系统移植指南
2026/7/17 1:37:44 网站建设 项目流程

1. 瑞米派与Ubuntu系统移植概述

瑞米派(Remi Pi)是米尔电子推出的一款高性能嵌入式开发板,基于瑞芯微RK3568处理器设计,具备4核Cortex-A55架构和1.8GHz主频。这款开发板在工业控制、边缘计算和物联网网关等领域有着广泛应用。将Ubuntu系统移植到瑞米派上,可以充分利用Ubuntu丰富的软件生态和开发工具链,为嵌入式应用开发提供更灵活的环境。

Ubuntu 22.04 LTS(Jammy Jellyfish)作为长期支持版本,提供了5年的安全更新支持,特别适合需要稳定运行的嵌入式场景。与传统的嵌入式Linux发行版相比,Ubuntu提供了更完善的包管理系统和更丰富的软件仓库,开发者可以轻松安装各种开发工具和运行时环境。

系统移植的核心在于让Ubuntu能够正确识别瑞米派的硬件架构,并加载相应的驱动程序。RK3568处理器采用ARMv8-A架构,因此我们需要使用ARM64版本的Ubuntu作为基础。移植过程主要包括uboot适配、内核定制、根文件系统构建和设备树配置等关键环节。

2. 开发环境准备与工具链配置

2.1 主机开发环境搭建

推荐使用Ubuntu 20.04或22.04作为开发主机系统,这样可以获得最佳的兼容性。以下是需要安装的基础工具包:

sudo apt update sudo apt install -y git build-essential bc bison flex libssl-dev \ libncurses5-dev device-tree-compiler lzop u-boot-tools \ gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

对于交叉编译工具链,建议使用Linaro官方提供的gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu版本。安装完成后,需要将工具链路径添加到环境变量中:

echo 'export PATH=$PATH:/opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin' >> ~/.bashrc source ~/.bashrc

2.2 源代码获取

需要准备以下关键组件的源代码:

  1. U-Boot:瑞芯微提供的定制版本
  2. Linux内核:建议使用linux-5.10.y分支
  3. Ubuntu Base:从Ubuntu官方获取arm64架构的base镜像

使用以下命令获取内核源代码:

git clone -b linux-5.10.y https://github.com/rockchip-linux/kernel.git

2.3 构建环境验证

在开始移植前,建议先验证交叉编译环境是否正常工作:

aarch64-linux-gnu-gcc --version

如果输出显示交叉编译器版本信息,说明环境配置正确。接下来可以尝试编译一个简单的Hello World程序进行测试:

// hello.c #include <stdio.h> int main() { printf("Hello, Remi Pi!\n"); return 0; }

使用交叉编译器编译:

aarch64-linux-gnu-gcc -o hello hello.c

使用file命令检查生成的二进制文件架构:

file hello

正确的输出应该显示"ARM aarch64"架构。

3. U-Boot适配与编译

3.1 U-Boot源代码准备

瑞米派使用的U-Boot是瑞芯微提供的定制版本,需要从官方仓库获取:

git clone https://github.com/rockchip-linux/u-boot.git -b master

进入u-boot目录后,首先需要配置瑞米派对应的defconfig:

make CROSS_COMPILE=aarch64-linux-gnu- rockchip_rk3568_defconfig

3.2 U-Boot配置调整

瑞米派的存储设备通常为eMMC或SD卡,需要在配置中正确设置:

  1. 打开.config文件,确保以下配置项已启用:
CONFIG_ROCKCHIP_RK3568=y CONFIG_TARGET_EVB_RK3568=y CONFIG_CMD_MMC=y CONFIG_CMD_USB=y CONFIG_CMD_FS_GENERIC=y
  1. 修改环境变量存储位置:
CONFIG_ENV_IS_IN_MMC=y CONFIG_SYS_MMC_ENV_DEV=0 CONFIG_SYS_MMC_ENV_PART=0

3.3 U-Boot编译与烧写

执行编译命令:

make CROSS_COMPILE=aarch64-linux-gnu- -j$(nproc)

编译完成后会生成以下关键文件:

  • u-boot.bin:原始的U-Boot二进制文件
  • idbloader.img:Rockchip专用的第一阶段加载器
  • u-boot.itb:包含U-Boot和设备树的镜像文件

使用瑞芯微提供的工具将U-Boot烧写到SD卡:

sudo rkdeveloptool db rk356x_spl_loader_v1.08.111.bin sudo rkdeveloptool wl 0x40 idbloader.img sudo rkdeveloptool wl 0x4000 u-boot.itb

注意:烧写前请确保SD卡已正确连接到开发主机,并且所有重要数据已备份,烧写过程会擦除SD卡上的数据。

4. Linux内核定制与编译

4.1 内核配置

进入之前下载的内核源代码目录,首先导入瑞米派的默认配置:

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- rockchip_linux_defconfig

然后根据需要进行定制化配置:

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig

关键的配置选项包括:

  1. 处理器类型:
    • CPU类型选择Cortex-A55
    • 启用ARMv8.2-A ISA扩展
  2. 设备驱动:
    • 启用RK3568相关的GPIO、PWM、I2C、SPI等外设驱动
    • 配置正确的显示输出接口(如HDMI或MIPI-DSI)
  3. 文件系统支持:
    • 确保EXT4、SQUASHFS等常用文件系统已启用
    • 启用OVERLAYFS支持,用于Ubuntu Core的snap系统

4.2 内核编译

执行编译命令:

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

编译完成后,关键生成文件位于:

  • arch/arm64/boot/Image:内核镜像
  • arch/arm64/boot/dts/rockchip/rk3568-remi-pi.dtb:设备树二进制文件

4.3 内核模块安装

首先创建模块安装目录:

mkdir -p kernel_modules

然后安装内核模块:

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- INSTALL_MOD_PATH=$(pwd)/kernel_modules modules_install

这将把所有内核模块安装到kernel_modules目录下,后续构建根文件系统时需要将这些模块复制到/lib/modules目录中。

5. Ubuntu根文件系统构建

5.1 获取Ubuntu Base镜像

从Ubuntu官方下载arm64架构的base镜像:

wget http://cdimage.ubuntu.com/ubuntu-base/releases/22.04/release/ubuntu-base-22.04.1-base-arm64.tar.gz

创建根文件系统目录并解压:

mkdir rootfs sudo tar -xzf ubuntu-base-22.04.1-base-arm64.tar.gz -C rootfs

5.2 基础系统配置

首先需要配置qemu-user-static来在主机上运行arm64程序:

sudo apt install qemu-user-static sudo cp /usr/bin/qemu-aarch64-static rootfs/usr/bin/

然后chroot到目标文件系统进行配置:

sudo chroot rootfs /bin/bash

在chroot环境中执行以下基本配置:

apt update apt install -y systemd-sysv ubuntu-minimal apt install -y net-tools iputils-ping openssh-server

设置root密码和创建普通用户:

passwd root adduser ubuntu usermod -aG sudo ubuntu

配置网络:

echo "remi-pi" > /etc/hostname echo "127.0.0.1 localhost" >> /etc/hosts echo "127.0.1.1 remi-pi" >> /etc/hosts

退出chroot环境:

exit

5.3 安装内核模块

将之前编译的内核模块复制到根文件系统中:

sudo cp -r kernel_modules/lib rootfs/

5.4 配置串口控制台

为了让系统可以通过瑞米派的调试串口登录,需要修改/etc/systemd/system/getty.target.wants目录下的串口服务配置:

sudo sed -i 's/^ExecStart=.*/ExecStart=-\/sbin\/agetty -a root -L 115200 ttyS2 vt100/' rootfs/lib/systemd/system/serial-getty@.service sudo ln -s /lib/systemd/system/serial-getty@.service rootfs/etc/systemd/system/getty.target.wants/serial-getty@ttyS2.service

6. 系统镜像打包与烧写

6.1 创建磁盘镜像

首先创建一个4GB大小的磁盘镜像文件:

dd if=/dev/zero of=remi-pi-ubuntu.img bs=1M count=4096

然后对镜像进行分区:

fdisk remi-pi-ubuntu.img

按照以下步骤创建分区表:

  1. 输入g创建GPT分区表
  2. 输入n创建新分区,选择默认值创建16MB大小的启动分区
  3. 输入t,选择分区类型为"U-Boot SPL"
  4. 输入n创建第二个分区,使用剩余空间作为根文件系统分区
  5. 输入w保存分区表

6.2 格式化分区

将镜像文件映射为loop设备:

sudo losetup -Pf remi-pi-ubuntu.img

假设loop设备为/dev/loop0,格式化分区:

sudo mkfs.vfat -F 32 /dev/loop0p1 -n boot sudo mkfs.ext4 /dev/loop0p2 -L rootfs

6.3 写入U-Boot和内核

挂载boot分区并写入U-Boot:

sudo mount /dev/loop0p1 /mnt sudo cp idbloader.img /mnt/ sudo cp u-boot.itb /mnt/ sudo umount /mnt

挂载根文件系统分区并复制根文件系统:

sudo mount /dev/loop0p2 /mnt sudo cp -a rootfs/* /mnt/ sudo cp arch/arm64/boot/Image /mnt/boot/ sudo cp arch/arm64/boot/dts/rockchip/rk3568-remi-pi.dtb /mnt/boot/ sudo umount /mnt

6.4 烧写到瑞米派

将SD卡插入开发主机,确认设备名称(如/dev/sdb),然后使用dd命令烧写镜像:

sudo dd if=remi-pi-ubuntu.img of=/dev/sdb bs=4M status=progress sync

7. 系统启动与调试

7.1 首次启动配置

将SD卡插入瑞米派,连接串口调试工具(如USB转TTL模块),波特率设置为115200。上电后应该能看到U-Boot的启动信息。

在U-Boot命令行中设置启动参数:

setenv bootargs "console=ttyS2,115200 earlycon=uart8250,mmio32,0xfe660000 root=/dev/mmcblk0p2 rw rootwait" setenv bootcmd "load mmc 0:1 0x02080000 Image; load mmc 0:1 0x06000000 rk3568-remi-pi.dtb; booti 0x02080000 - 0x06000000" saveenv boot

7.2 系统优化与配置

成功启动后,可以进行以下优化配置:

  1. 更新软件源并升级系统:
apt update apt upgrade -y
  1. 安装常用工具:
apt install -y vim git curl wget net-tools
  1. 配置SSH服务:
systemctl enable ssh systemctl start ssh
  1. 调整文件系统大小(如果使用了比镜像更大的存储设备):
resize2fs /dev/mmcblk0p2

7.3 常见问题排查

  1. 启动卡在U-Boot阶段:

    • 检查U-Boot版本是否匹配RK3568
    • 验证SD卡烧写是否正确
    • 确认启动参数中的设备节点名称是否正确
  2. 内核panic或无法挂载根文件系统:

    • 检查内核配置是否包含必要的文件系统驱动
    • 确认bootargs中的root参数指向正确的分区
    • 验证根文件系统是否完整
  3. 网络无法正常工作:

    • 检查内核是否包含正确的以太网驱动
    • 验证设备树中的网络配置
    • 确认/etc/network/interfaces配置正确

8. 进阶配置与优化

8.1 图形界面安装

如果需要图形界面,可以安装Ubuntu Desktop:

apt install -y ubuntu-desktop

对于嵌入式应用,更推荐安装轻量级的LXDE桌面:

apt install -y lxde-core lightdm

8.2 硬件加速配置

RK3568内置Mali-G52 GPU,需要安装对应的驱动:

apt install -y mali-bifrost-g52-g2p0-wayland-gbm

配置X11使用硬件加速:

mkdir -p /etc/X11/xorg.conf.d cat > /etc/X11/xorg.conf.d/20-mali.conf <<EOF Section "Device" Identifier "Mali Graphics" Driver "modesetting" Option "AccelMethod" "glamor" EndSection EOF

8.3 性能优化建议

  1. 调整CPU调度策略:
echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
  1. 优化内存使用:
echo vm.swappiness=10 >> /etc/sysctl.conf
  1. 启用zram交换空间:
apt install -y zram-config
  1. 禁用不必要的服务:
systemctl disable bluetooth.service systemctl disable ModemManager.service

8.4 应用程序打包与部署

对于生产环境,建议使用snap或docker打包应用程序:

  1. 安装snapd:
apt install -y snapd
  1. 安装docker:
apt install -y docker.io
  1. 创建自定义snap:
snapcraft init

在项目目录中编辑snapcraft.yaml文件,定义应用程序的构建和运行方式,然后打包:

snapcraft

生成的.snap文件可以直接安装到瑞米派上:

snap install --dangerous your-app_1.0_arm64.snap

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询