)
本篇主要内容效果展示一、环境准备二、移植步骤1.下载、解压rootfs2.ubuntu虚拟机安装qemu-user-static3.根文件系统换软件源4.安装必要软件5.配置串口登录6.设置root账户、主机名7.网络配置8.安装桌面环境三、打包、烧写rootfs1.创建一个4GB的ext4并格式化2.拷贝根文件系统到ubuntu2404_rootfs.ext4四、烧录ubuntu2404_rootfs1.烧录测试效果展示一、环境准备✅虚拟机ubuntu24.04✅开发板正点原子STM32MP257✅根文件系统ubuntu-base-24.04.2-base-arm64.tar.gz二、移植步骤1.下载、解压rootfswgethttps://cdimage.ubuntu.com/ubuntu-base/releases/24.04/release/ubuntu-base-24.04.2-base-arm64.tar.gzmkdirubuntu2404_rootfstar-xvfubuntu-base-24.04.2-base-arm64.tar.gz-Cubuntu2404_rootfs2.ubuntu虚拟机安装qemu-user-static⚠️这里是在ubuntu虚拟机安装qemuqemu是一个提供虚拟环境的工具类似模拟器。在这里主要是在后续ubuntu虚拟机临时挂载我们制作的rootfs时可以运行rootfs里的命令进行一些配置这些命令都是aarch64架构的。安装后可以看到有多种架构的qemu这里我们用到的是aarch64。关于aarch64和arm64什么区别查阅资料后据说都是一个意思指同一个架构只是说法不同aarch64比arm64更正式apt-getinstallqemu-user-static# 拷贝aarch64架构的qemu到rootfs中cp/usr/bin/qemu-aarch64-static ubuntu2404_rootfs/usr/bin3.根文件系统换软件源⚠️ubuntu24.04更换软件源的配置文件不再是/etc/apt/source.list而是/etc/apt/source.list.d/ubuntu.sources并且修改方式也改变了具体修改如下。viubuntu2404_rootfs/etc/apt/sources.list.d/ubuntu.sources⚠️更换好软件源后在执行apt update之前需要先安装ssl相关的证书才可以访问上面的软件源。由于此时在rootfs里还无法安装软件这里得先拷贝虚拟机中的证书到rootfs。sudocp-r/etc/ssl/ ubuntu2404_rootfs/etc/# 直接拷贝整个ssl目录到根文件系统的etc目录sudochmod777ubuntu2404_rootfs/# 这里需要给根文件系统加上权限否则更新以及后续会报错⚠️接着进行apt update前需要先临时挂载到这个rootfs使用里面的apt进行前面安装的虚拟环境qemu在这里就发挥作用了。这里的挂载命令比较多我们通过一个简单的脚本来做比较方便具体路径不唯一需要根据实际确定。#!/bin/bashechoMOUNTINGsudomount-tproc /proc ~/ubuntu2404_rootfs/procsudomount-tsysfs /sys ~/ubuntu2404_rootfs/syssudomount-obind/dev ~/ubuntu2404_rootfs/devsudomount-obind/dev/pts ~/ubuntu2404_rootfs/dev/ptssudochroot~/ubuntu2404_rootfs#!/bin/bashechoUNMOUNTINGsudoumount~/ubuntu2404_rootfs/procsudoumount~/ubuntu2404_rootfs/syssudoumount~/ubuntu2404_rootfs/dev/ptssudoumount~/ubuntu2404_rootfs/dev⚠️执行mount.sh脚本可以看到以下的界面就成功挂载到了正在制作的rootfs中后续的更新、安装软件配置串口等操作均在这里执行。4.安装必要软件⚠️安装前先更新源可以看到源更换成了阿里云的也就是上面配置的aptupdate⚠️再下载必要的一些软件以下命令安装的时候需要选择一些信息随意即可。apt-getinstall-ysudolanguage-pack-en-basesshnet-toolsethtoolifupdown iputils-pinghtopvimbash-completion systemd# 其余按需添加5.配置串口登录⚠️配置文件路径sudo vi ubuntu2404_rootfs/lib/systemd/system/serial-getty.service。这是一个Linux系统管理串行控制台的服务具体配置文件的含义可见下图注释注释为UP查阅资料后自行添加仅供参考可能有误⚠️第一处修改:BindsTodev-%i⚠️第二处修改ExecStart-/sbin/agetty -a root --keep-baud 115200,38400,9600 %I $TERM6.设置root账户、主机名⚠️主机名的设置也可以省略在后续安装好桌面环境后初次登录会有设置的界面。这里是设置完后面登录后的串口终端就是这样的rootAlientek-STM32MP257:~#⚠️将上面的主机名绑定到本地回环地址名称必须和上面对应7.网络配置# 没有这个文件就创建内容如下vietc/netplan/50-cloud-init.yamlnetwork:version:2ethernets:end0:dhcp4:trueend1:dhcp4:false8.安装桌面环境⚠️ubuntu的桌面环境一般有以下几种gnome、xfce和KDE等。我们使用的ubuntu虚拟机一般都是gnome而如果想要比较轻量级的可以考虑xfce。这里我们安装的是gnome。大小大概需要3G安装时间比较久不想要桌面环境的这一步可以略过。sudoaptinstallubuntu-gnome-desktop⚠️安装完桌面环境rootfs简单的配置就完成了可以看到此时的大小大概是3.4G三、打包、烧写rootfs1.创建一个4GB的ext4并格式化ddif/dev/zeroofubuntu2404_rootfs.ext4bs1Mcount4096mkfs.ext4 ubuntu2404_rootfs.ext42.拷贝根文件系统到ubuntu2404_rootfs.ext4# 挂载ubuntu2404_rootfs.ext4到虚拟机mkdirmount_point# 创建一个目录作为挂载点sudomountubuntu2404_rootfs.ext4 mount_point/⚠️注意看是拷贝到mount_point这个目录上面将ext4挂载到的这个目录。拷贝时间比较久需要稍等一会。# 拷贝根文件系统所以内容到挂载点目录sudocp-arvubuntu2404_rootfs/* mount_point/⚠️拷贝完卸载ubuntu2404_rootfs.ext4使用ST的烧写工具烧录即可。四、烧录ubuntu2404_rootfs1.烧录测试⚠️这里我们可以复制官方提供的出厂系统固件包里的tsv文件将最后要烧写的根文件系统改成前面制作的ubuntu2404_rootfs.ext4并将这个文件放到E:\【正点原子】STM32MP257开发板\【正点原子】STM32MP257开发板A盘-基础资料\08、系统镜像\01、出厂系统镜像\01、STM32CubeProg烧录固件包这个目录下。⚠️接着就可以打开STM32CubeProgram烧写了完成后就可以得到同款ubuntu24.04了。当然这仅是简单移植ubuntu的根文件系统可能会有不少bug出现。⚠️等待烧写完成串口登录开发板就可以看到以下结果了。同时接上屏幕可以登录到桌面第一次登录会有个初始化向导也会重新让填写主机名、用户名。⚠️插上键盘和鼠标填写完用户名和一些信息就可以看到下图的效果了。