瑞米派RK3568开发板Ubuntu系统移植指南

瑞米派RK3568开发板Ubuntu系统移植指南
1. 瑞米派与Ubuntu系统移植概述瑞米派Remi Pi是米尔电子推出的一款高性能嵌入式开发板基于瑞芯微RK3568处理器设计具备4核Cortex-A55架构和1.8GHz主频。这款开发板在工业控制、边缘计算和物联网网关等领域有着广泛应用。将Ubuntu系统移植到瑞米派上可以充分利用Ubuntu丰富的软件生态和开发工具链为嵌入式应用开发提供更灵活的环境。Ubuntu 22.04 LTSJammy 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 ~/.bashrc2.2 源代码获取需要准备以下关键组件的源代码U-Boot瑞芯微提供的定制版本Linux内核建议使用linux-5.10.y分支Ubuntu Base从Ubuntu官方获取arm64架构的base镜像使用以下命令获取内核源代码git clone -b linux-5.10.y https://github.com/rockchip-linux/kernel.git2.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目录后首先需要配置瑞米派对应的defconfigmake CROSS_COMPILEaarch64-linux-gnu- rockchip_rk3568_defconfig3.2 U-Boot配置调整瑞米派的存储设备通常为eMMC或SD卡需要在配置中正确设置打开.config文件确保以下配置项已启用CONFIG_ROCKCHIP_RK3568y CONFIG_TARGET_EVB_RK3568y CONFIG_CMD_MMCy CONFIG_CMD_USBy CONFIG_CMD_FS_GENERICy修改环境变量存储位置CONFIG_ENV_IS_IN_MMCy CONFIG_SYS_MMC_ENV_DEV0 CONFIG_SYS_MMC_ENV_PART03.3 U-Boot编译与烧写执行编译命令make CROSS_COMPILEaarch64-linux-gnu- -j$(nproc)编译完成后会生成以下关键文件u-boot.bin原始的U-Boot二进制文件idbloader.imgRockchip专用的第一阶段加载器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 ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- rockchip_linux_defconfig然后根据需要进行定制化配置make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- menuconfig关键的配置选项包括处理器类型CPU类型选择Cortex-A55启用ARMv8.2-A ISA扩展设备驱动启用RK3568相关的GPIO、PWM、I2C、SPI等外设驱动配置正确的显示输出接口如HDMI或MIPI-DSI文件系统支持确保EXT4、SQUASHFS等常用文件系统已启用启用OVERLAYFS支持用于Ubuntu Core的snap系统4.2 内核编译执行编译命令make ARCHarm64 CROSS_COMPILEaarch64-linux-gnu- -j$(nproc)编译完成后关键生成文件位于arch/arm64/boot/Image内核镜像arch/arm64/boot/dts/rockchip/rk3568-remi-pi.dtb设备树二进制文件4.3 内核模块安装首先创建模块安装目录mkdir -p kernel_modules然后安装内核模块make ARCHarm64 CROSS_COMPILEaarch64-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 rootfs5.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环境exit5.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-gettyttyS2.service6. 系统镜像打包与烧写6.1 创建磁盘镜像首先创建一个4GB大小的磁盘镜像文件dd if/dev/zero ofremi-pi-ubuntu.img bs1M count4096然后对镜像进行分区fdisk remi-pi-ubuntu.img按照以下步骤创建分区表输入g创建GPT分区表输入n创建新分区选择默认值创建16MB大小的启动分区输入t选择分区类型为U-Boot SPL输入n创建第二个分区使用剩余空间作为根文件系统分区输入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 rootfs6.3 写入U-Boot和内核挂载boot分区并写入U-Bootsudo 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 /mnt6.4 烧写到瑞米派将SD卡插入开发主机确认设备名称如/dev/sdb然后使用dd命令烧写镜像sudo dd ifremi-pi-ubuntu.img of/dev/sdb bs4M statusprogress sync7. 系统启动与调试7.1 首次启动配置将SD卡插入瑞米派连接串口调试工具如USB转TTL模块波特率设置为115200。上电后应该能看到U-Boot的启动信息。在U-Boot命令行中设置启动参数setenv bootargs consolettyS2,115200 earlyconuart8250,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 boot7.2 系统优化与配置成功启动后可以进行以下优化配置更新软件源并升级系统apt update apt upgrade -y安装常用工具apt install -y vim git curl wget net-tools配置SSH服务systemctl enable ssh systemctl start ssh调整文件系统大小如果使用了比镜像更大的存储设备resize2fs /dev/mmcblk0p27.3 常见问题排查启动卡在U-Boot阶段检查U-Boot版本是否匹配RK3568验证SD卡烧写是否正确确认启动参数中的设备节点名称是否正确内核panic或无法挂载根文件系统检查内核配置是否包含必要的文件系统驱动确认bootargs中的root参数指向正确的分区验证根文件系统是否完整网络无法正常工作检查内核是否包含正确的以太网驱动验证设备树中的网络配置确认/etc/network/interfaces配置正确8. 进阶配置与优化8.1 图形界面安装如果需要图形界面可以安装Ubuntu Desktopapt install -y ubuntu-desktop对于嵌入式应用更推荐安装轻量级的LXDE桌面apt install -y lxde-core lightdm8.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 EOF8.3 性能优化建议调整CPU调度策略echo performance | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor优化内存使用echo vm.swappiness10 /etc/sysctl.conf启用zram交换空间apt install -y zram-config禁用不必要的服务systemctl disable bluetooth.service systemctl disable ModemManager.service8.4 应用程序打包与部署对于生产环境建议使用snap或docker打包应用程序安装snapdapt install -y snapd安装dockerapt install -y docker.io创建自定义snapsnapcraft init在项目目录中编辑snapcraft.yaml文件定义应用程序的构建和运行方式然后打包snapcraft生成的.snap文件可以直接安装到瑞米派上snap install --dangerous your-app_1.0_arm64.snap