当前位置: 首页 > news >正文

正点原子STM32MP257开发板移植ubuntu24.04根文件系统(带桌面版)

本篇主要内容

    • 效果展示:
    • 一、环境准备
    • 二、移植步骤
      • 1.下载、解压rootfs
      • 2.ubuntu虚拟机安装qemu-user-static
      • 3.根文件系统换软件源
      • 4.安装必要软件
      • 5.配置串口登录
      • 6.设置root账户、主机名
      • 7.网络配置
      • 8.安装桌面环境
    • 三、打包、烧写rootfs
      • 1.创建一个4GB的ext4并格式化
      • 2.拷贝根文件系统到ubuntu2404_rootfs.ext4
    • 四、烧录ubuntu2404_rootfs
      • 1.烧录测试

效果展示:

请添加图片描述

一、环境准备

✅虚拟机:ubuntu24.04
✅开发板:正点原子STM32MP257
✅根文件系统:ubuntu-base-24.04.2-base-arm64.tar.gz

二、移植步骤

1.下载、解压rootfs

wget https://cdimage.ubuntu.com/ubuntu-base/releases/24.04/release/ubuntu-base-24.04.2-base-arm64.tar.gz
mkdir ubuntu2404_rootfs	
tar -xvf ubuntu-base-24.04.2-base-arm64.tar.gz -C ubuntu2404_rootfs

2.ubuntu虚拟机安装qemu-user-static

⚠️这里是在ubuntu虚拟机安装qemu,qemu是一个提供虚拟环境的工具,类似模拟器。在这里主要是在后续ubuntu虚拟机临时挂载我们制作的rootfs时,可以运行rootfs里的命令进行一些配置,这些命令都是aarch64架构的。安装后,可以看到有多种架构的qemu,这里我们用到的是aarch64。
关于aarch64和arm64什么区别?查阅资料后据说都是一个意思,指同一个架构,只是说法不同,aarch64比arm64更正式

apt-get install qemu-user-static

在这里插入图片描述

# 拷贝aarch64架构的qemu到rootfs中
cp /usr/bin/qemu-aarch64-static ubuntu2404_rootfs/usr/bin

3.根文件系统换软件源

⚠️ubuntu24.04更换软件源的配置文件不再是/etc/apt/source.list,而是/etc/apt/source.list.d/ubuntu.sources,并且修改方式也改变了,具体修改如下。

vi ubuntu2404_rootfs/etc/apt/sources.list.d/ubuntu.sources	

在这里插入图片描述
⚠️更换好软件源后,在执行apt update之前,需要先安装ssl相关的证书,才可以访问上面的软件源。由于此时在rootfs里还无法安装软件,这里得先拷贝虚拟机中的证书到rootfs。

sudo cp -r /etc/ssl/  ubuntu2404_rootfs/etc/	# 直接拷贝整个ssl目录到根文件系统的etc目录
sudo chmod 777 ubuntu2404_rootfs/ # 这里需要给根文件系统加上权限,否则更新以及后续会报错

⚠️接着,进行apt update前,需要先临时挂载到这个rootfs,使用里面的apt进行,前面安装的虚拟环境qemu在这里就发挥作用了。这里的挂载命令比较多,我们通过一个简单的脚本来做比较方便,具体路径不唯一,需要根据实际确定。

#!/bin/bash
echo "MOUNTING"
sudo mount -t proc /proc        ~/ubuntu2404_rootfs/proc
sudo mount -t sysfs /sys        ~/ubuntu2404_rootfs/sys
sudo mount -o bind /dev         ~/ubuntu2404_rootfs/dev
sudo mount -o bind /dev/pts     ~/ubuntu2404_rootfs/dev/pts
sudo chroot ~/ubuntu2404_rootfs
#!/bin/bashecho "UNMOUNTING"
sudo umount ~/ubuntu2404_rootfs/proc
sudo umount ~/ubuntu2404_rootfs/sys
sudo umount ~/ubuntu2404_rootfs/dev/pts
sudo umount ~/ubuntu2404_rootfs/dev

⚠️执行mount.sh脚本,可以看到以下的界面,就成功挂载到了正在制作的rootfs中,后续的更新、安装软件,配置串口等操作均在这里执行。
在这里插入图片描述

4.安装必要软件

⚠️安装前先更新源,可以看到源更换成了阿里云的,也就是上面配置的

apt update

在这里插入图片描述

⚠️再下载必要的一些软件,以下命令安装的时候,需要选择一些信息,随意即可。

apt-get install -y sudo language-pack-en-base ssh net-tools ethtool ifupdown iputils-ping htop vim bash-completion systemd	# 其余按需添加

5.配置串口登录

⚠️配置文件路径:sudo vi ubuntu2404_rootfs/lib/systemd/system/serial-getty@.service。这是一个Linux系统管理串行控制台的服务,具体配置文件的含义可见下图注释(注释为UP查阅资料后自行添加,仅供参考,可能有误)
⚠️第一处修改:BindsTo=dev-%i
在这里插入图片描述
⚠️第二处修改:ExecStart=-/sbin/agetty -a root --keep-baud 115200,38400,9600 %I $TERM
在这里插入图片描述

6.设置root账户、主机名

在这里插入图片描述
⚠️主机名的设置也可以省略,在后续安装好桌面环境后,初次登录会有设置的界面。这里是设置完,后面登录后的串口终端就是这样的:

root@Alientek-STM32MP257:~#

在这里插入图片描述
⚠️将上面的主机名绑定到本地回环地址,名称必须和上面对应
在这里插入图片描述

7.网络配置

# 没有这个文件就创建,内容如下
vi etc/netplan/50-cloud-init.yaml	
network:version: 2ethernets:end0:dhcp4: trueend1:dhcp4: false

在这里插入图片描述

8.安装桌面环境

⚠️ubuntu的桌面环境一般有以下几种:gnome、xfce和KDE等。我们使用的ubuntu虚拟机一般都是gnome,而如果想要比较轻量级的,可以考虑xfce。这里我们安装的是gnome。大小大概需要3G,安装时间比较久,不想要桌面环境的这一步可以略过。

sudo apt install ubuntu-gnome-desktop

⚠️安装完桌面环境,rootfs简单的配置就完成了,可以看到此时的大小大概是3.4G
在这里插入图片描述

三、打包、烧写rootfs

1.创建一个4GB的ext4并格式化

dd if=/dev/zero of=ubuntu2404_rootfs.ext4 bs=1M count=4096
mkfs.ext4 ubuntu2404_rootfs.ext4

2.拷贝根文件系统到ubuntu2404_rootfs.ext4

# 挂载ubuntu2404_rootfs.ext4到虚拟机
mkdir mount_point	# 创建一个目录作为挂载点
sudo mount ubuntu2404_rootfs.ext4 mount_point/

在这里插入图片描述
⚠️注意看是拷贝到mount_point这个目录,上面将ext4挂载到的这个目录。拷贝时间比较久,需要稍等一会。

# 拷贝根文件系统所以内容到挂载点目录
sudo cp -arv ubuntu2404_rootfs/* mount_point/

⚠️拷贝完,卸载ubuntu2404_rootfs.ext4,使用ST的烧写工具烧录即可。

四、烧录ubuntu2404_rootfs

1.烧录测试

⚠️这里我们可以复制官方提供的出厂系统固件包里的tsv文件,将最后要烧写的根文件系统改成前面制作的ubuntu2404_rootfs.ext4,并将这个文件放到E:\【正点原子】STM32MP257开发板\【正点原子】STM32MP257开发板(A盘)-基础资料\08、系统镜像\01、出厂系统镜像\01、STM32CubeProg烧录固件包这个目录下。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
⚠️接着就可以打开STM32CubeProgram烧写了,完成后就可以得到同款ubuntu24.04了。当然,这仅是简单移植ubuntu的根文件系统,可能会有不少bug出现。

在这里插入图片描述
⚠️等待烧写完成,串口登录开发板,就可以看到以下结果了。同时接上屏幕,可以登录到桌面,第一次登录会有个初始化向导,也会重新让填写主机名、用户名。
在这里插入图片描述
请添加图片描述

⚠️插上键盘和鼠标,填写完用户名和一些信息,就可以看到下图的效果了。
请添加图片描述
在这里插入图片描述

http://www.dtcms.com/a/314205.html

相关文章:

  • Android的UI View是如何最终绘制成一帧显示在手机屏幕上?
  • Android Espresso 测试框架深度解析:从入门到精通
  • imx6ull-驱动开发篇8——设备树常用 OF 操作函数
  • 力扣热题100——哈希表
  • 大模型×垂直领域:预算、时间、空间三重夹击下的生存法则
  • 基于ensp的防火墙安全策略及认证策略综合实验
  • Flink CDC 介绍
  • PHP-分支语句、while循环、for循环
  • 深入理解Spring中的循环依赖及解决方案
  • 鸿蒙南向开发 编写一个简单子系统
  • 机器学习——学习路线
  • MySQL进阶:(第八篇)深入解析InnoDB存储架构
  • 高效洗牌:Fisher-Yates算法详解
  • 软考 系统架构设计师系列知识点之杂项集萃(118)
  • 直播 app 系统架构分析
  • 如何在 Ubuntu 24.04 LTS 上安装 Docker
  • 计算机网络:
  • 团购商城 app 系统架构分析
  • (五)系统可靠性设计
  • android TextView lineHeight 是什么 ?
  • 国产化低代码平台如何筑牢企业数字化安全底座
  • 学习日志27 python
  • 远程机器操作--学习系列004
  • Vue Router快速入门
  • 数据从mysql迁移到postgresql
  • Petalinux快捷下载
  • 项目一:Python实现PDF增删改查编辑保存功能的全栈解决方案
  • WPF 按钮背景色渐变
  • LLM开发——基于Graph RAG知识图谱检索增强生成
  • steam Rust游戏 启动错误,删除sys驱动,亲测有效。