TB-RK3399Pro移植ubuntu 26.04及烧录
TB-RK3399Pro移植ubuntu 26.04及烧录一、Ubuntu 26.04根文件系统制作1.1 安装必要工具包1.2 获取 Ubuntu Base RootFS1.3 文件系统挂载1.4 换源1.5 更新系统并安装基础软件1.6 配置中文支持可选1.7 设置时区1.8 添加账户1.9 串口 getty让串口有登录提示RK3399 调试关键1.10 清理缓存退出 chroot1.11 安装内核模块到根文件系统1.12 设置hostname1.13 设置默认ip二、制作烧录镜像2.1 boot.img2.2 rootfs.img三、烧录3.1 rkdeveloptool 工具3.2 烧录Uboot3.3 emmc分区3.4 烧录系统和镜像四、总结一、Ubuntu 26.04根文件系统制作这个流程已经很成熟了直接问AI也能生成个七七八八这里就简单写写以及一些踩坑记录。1.1 安装必要工具包sudoaptupdatesudoaptinstall-y\qemu-user-static\binfmt-support\debootstrap\wget\tar\gcc-aarch64-linux-gnu\device-tree-compiler\build-essential\libncurses-dev\flex\bison\libssl-dev\bc\dosfstools\e2fsprogs\kmod如有遗漏请根据报错自行补齐。ubuntu26.04的PC安装 qemu-user-static 和 binfmt-support 需要 universe 源而且需要指定安装版本这里不多赘述可根据实际情况咨询AI。1.2 获取 Ubuntu Base RootFS到 http://cdimage.ubuntu.com/ubuntu-base/releases/ 下载对应版本和架构即可。1.3 文件系统挂载# 解压mkdir~/ubuntu_rootfssudotar-xpfubuntu-base-26.04-base-arm64.tar.gz-C~/ubuntu_rootfs# 复制 QEMU 模拟器和DNS配置ROOTFS~/ubuntu_rootfssudocp/usr/bin/qemu-aarch64$ROOTFS/usr/bin/sudocp/etc/resolv.conf$ROOTFS/etc/resolv.conf# 挂载临时伪文件系统# 2) 临时挂载伪文件系统sudomount-tproc proc$ROOTFS/procsudomount-tsysfs sysfs$ROOTFS/syssudomount--bind/dev$ROOTFS/devsudomount--bind/dev/pts$ROOTFS/dev/pts# chroot进入sudochroot$ROOTFS/bin/bash1.4 换源ubuntu 26.04使用 DEB822 格式将 $ROOTFS/etc/apt/sources.list.d/ubuntu.sources 中的地址修改1.5 更新系统并安装基础软件aptupdateaptupgrade-y# 安装必备基础工具aptinstall-y\sudo\vim\net-tools\iproute2\iputils-ping\network-manager\udev\kmod\dbus\systemd\systemd-sysv\openssh-server\less\locales初次更新如果因校验报错可以尝试在更新和安装命令添加--allow-insecure-repositories参数。1.6 配置中文支持可选apt install -y language-pack-zh-hans language-pack-enlocale-gen en_US.UTF-8 zh_CN.UTF-8update-locale LANGen_US.UTF-81.7 设置时区ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimedpkg-reconfigure -f noninteractive tzdata1.8 添加账户echoroot:123456|chpasswd# 自己改密码useradd-m-s/bin/bash ubuntuechoubuntu:ubuntu|chpasswdusermod-aGsudoubuntu1.9 串口 getty让串口有登录提示RK3399 调试关键ln-sf/lib/systemd/system/serial-getty.service\/etc/systemd/system/getty.target.wants/serial-gettyttyS2.service1.10 清理缓存退出 chrootaptcleanrm-rf/var/lib/apt/lists/*exit# 卸载伪文件系统sudoumount$ROOTFS/dev/ptssudoumount$ROOTFS/devsudoumount$ROOTFS/syssudoumount$ROOTFS/proc1.11 安装内核模块到根文件系统cdpath_to_linuxmakeARCHarm64CROSS_COMPILEaarch64-linux-gnu- modules -j$(nproc)sudomakemodules_installARCHarm64CROSS_COMPILEaarch64-linux-gnu-INSTALL_MOD_PATH/path/to/your/rootfs注INSTALL_MOD_PATH应直接指向rootfs的顶层目录系统会自动创建lib/modules/$(uname -r)子目录并填充模块文件。1.12 设置hostname添加$ROOTFS/etc/hosts文件127.0.0.1 localhost127.0.1.1 my-board ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters添加$ROOTFS/etc/hostname文件:ubuntu1.13 设置默认ip添加$ROOTFS/etc/netplan/01-netcfg.yamlnetwork: version:2renderer: networkd ethernets: end0: dhcp4: no addresses:[192.168.1.100/24]routes: - to: default via:192.168.1.1 nameservers: addresses: -114.114.114.114 -223.5.5.5二、制作烧录镜像调试阶段需要制作两个镜像boot.img 和 rootfs.img后续如果调试稳定再打成总包。2.1 boot.imgmkdirbootcpImage boot/cprk3399pro-toybrick-prod.dtb boot/mkdir-pboot/extlinux在 boot/extlinux 创建 extlinux.conftimeout 5 menu title Ubuntu Boot label Ubuntu kernel /Image fdt /rk3399pro-toybrick-prod.dtb append root/dev/mmcblk0p2 rw rootwait consolettyS2,1500000 earlycon然后使用以下命令ddif/dev/zeroofboot.imgbs1Mcount256mkfs.ext4-Lboot boot.imgmkdirboot_mountsudomountboot.img boot_mountsudocp-rboot/* boot_mount/sudoumountboot_mount得到boot.img2.2 rootfs.img# 暂定2GB大小ddif/dev/zeroofrootfs.imgbs1Mcount2048mkfs.ext4-Lrootfs rootfs.imgmkdirrootfs_mountsudomountrootfs.img rootfs_mountsudocp-rpath_to_ubuntu_rootfs/* rootfs_mount/# 如果已经打成tar包# sudo tar xpf rootfs.tar.gz -C rootfs_mountsudosyncsudoumountrootfs_mount三、烧录文件准备除了编译生成的镜像打包的img文件以外还需要旧版本的MiniLoaderAll文件作为媒介。3.1 rkdeveloptool 工具这里直接使用rockchip的官方烧录工具适用性和灵活性好的。https://github.com/rockchip-linux/rkdeveloptool仓库中有安装说明直接按照步骤安装即可。3.2 烧录Uboot将板卡进入maskrom模式cdpath_to_rkdeveloptool# 查看设备是否已识别sudo./rkdeveloptool ld应该看到DevNo1 Vid0x2207 Pid0x330c Maskrom擦除emmc并烧录ubootsudo./rkdeveloptool db MiniLoaderAll.bin# 擦除emmc初次烧录时使用sudo./rkdeveloptool ef# 烧录 idbloadersudo./rkdeveloptool wl64idbloader.img# 烧录 ubootsudo./rkdeveloptool wl16384uboot.itb# 重启进入ubootsudo./rkdeveloptool rd3.3 emmc分区将板卡进入到uboot在uboot下进行emmc分区boot分区256MBrootfs为剩余空间。gptwritemmc0nameboot,start16MiB,size256MiB;namerootfs,size-3.4 烧录系统和镜像将板卡进入maskrom模式sudo./rkdeveloptool db MiniLoaderAll.binsudo./rkdeveloptool wl 0x8000 boot.imgsudo./rkdeveloptool wl 0x88000 rootfs.img# 重启sudo./rkdeveloptool rd然后即可进入系统四、总结有个坑没解决extlinux.conf 中原本想使用 append rootLABELrootfs规避掉dev节点的问题但是一直报错找不到文件系统有时间再尝试一下。有知晓的读者也可以告知。其他的网络、驱动以及功能模块暂未测试留待以后完善。总体移植还算顺利如对您有帮助请帮忙点赞收藏感谢。