【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第五篇 文件系统构建篇-第七十九章 Ubuntu20文件系统

news2024/11/26 12:16:10

i.MX8MM处理器采用了先进的14LPCFinFET工艺,提供更快的速度和更高的电源效率;四核Cortex-A53,单核Cortex-M4,多达五个内核 ,主频高达1.8GHz,2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT、4G模块、CAN、RS485等接口一应俱全。H264、VP8视频硬编码,H.264、H.265、VP8、VP9视频硬解码,并提供相关历程,支持8路PDM接口、5路SAI接口、2路Speaker。系统支持Android9.0(支持获取root限)Linux4.14.78+Qt5.10.1、Yocto、Ubuntu20、Debian9系统。适用于智能充电桩,物联网,工业控制,医疗,智能交通等,可用于任何通用工业和物联网应用、

【公众号】迅为电子

【粉丝群】258811263(加群获取驱动文档+例程)


第七十九章 Ubuntu20文件系统

作为 linux 开发平台,imx8MM开发板也可以移植 ubuntu 系统。Ubuntu Base 是用于为特定需求创建自定义映像的最小 rootfs。 Ubuntu Base 致力于为板级支持包(BSP)、受限制或集成环境中的应用创建适当的最小环境, 作为应用或 Linux 容器(如 LXC 或 Docker) 演示映像的基础。Ubuntu 移植比较简单, ubuntu 官方提供了制作好的根文件系统, 我们只需要配置下相关内容即可放到板子上运行。 本章我们构建的是 ubuntu20.04 系统。

79.1 Ubuntu-base 获取

首先我们打开终端, 切换到 root 模式。 如下图所示:

然后使用命令“mkdir ubuntu-base” 创建该文件夹, 并使用命令“cd ubuntu-base/” 进入该文件夹, 我们本章移植过程均在此文件内操作。 如下图所示:  

Ubuntu 官方针对不同的 CPU 架构提供相应的 ubuntu base 根文件系统,有 amd64(64 位 X86)、 armhf、i386(32 位 X86)、 powerpc、 ppc64el 等系统的我们可以先下载到 Windows 计算机内,网站如下。

http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/ 

找到 ubuntu-base-20.04.1-base-arm64.tar.gz, 点击下载即可, 如下图所示 

 

这个压缩包在我们的资料iTOP-i.MX8MM开发板\02-i.MX8MM开发板网盘资料汇总(不含光盘内容)\09_i.MX8MM开发板Ubuntu文件系统构建资料\Ubuntu官方源码目录下会有提供。 如下图:  

然后我们使用 SSH 工具传输到刚刚的目录。或者我们可以在该目录下使用以下命令直接下载,如下图所示,下载之后可以看到压缩包。

mkdir rootfs

cd rootfs/

wget http://cdimage.ubuntu.com/ubuntu-base/releases/20.04/release/ubuntu-base-20.04.1-base-arm64.tar.gz

 

79.2 Ubuntu-base 构建

79.2.1 解压 Ubuntu-base

我们使用命令“tar -xvf ubuntu-base-20.04.1-base-arm64.tar.gz”,如下temp图所示: 

 

解压完成之后就是根文件系统, 使用命令“ls” 查看目录。  

输入以下命令删除压缩包

rm -rf ubuntu-base-20.04.1-base-arm64.tar.gz

 

79.2.2 安装 Qemu-User-Static 工具 

QEMU 是专门模拟不同机器架构的软件, 在 ubuntu 中对其支持良好, 若需要挂载 ubuntu armhf 版本的文件,必须安装 qemu-user-static 工具。 

首先 Ubuntu 下使用命令“apt-get install qemu-user-static” 安装, 安装过程中按 y 继续。 如下图所示: 

这一步骤是将 qemu-user-static 安装到了 pc ubuntu 上, 然后使用命令“cp /usr/bin/qemu-aarch64-static ./usr/bin/”,拷贝 qemu-arm-static 到刚刚解压出来的目录。 如下图所示  

79.2.3 设置软件源

Ubuntu 安装软件是通过名 apt-get 从网上下载安装的。 我们需要指定软件源。为了制作成功的根文件系统能够联网, 可以直接拷贝本机的 dns 配置文件到根文件系统的相应位置,使用命令“cp /etc/resolv.conf ./etc/resolv.conf” ,如下图所示: 

然后修改根文件系统软件源, 使用命令,如下图所示: 

sed -i 's/ports\.ubuntu\.com/mirrors\.tuna\.tsinghua\.edu\.cn/g' ./etc/apt/sources.list

echo "nameserver 114.114.114.114" > ./etc/resolv.conf

79.2.4 挂载根文件系统并 Chroot

1 首先在本机挂载刚刚下载好的文件系统, 需要挂载 proc, sys, dev, dev/pts 等文件系统。 使用命令“vi mount.sh” 添加挂载脚本。 如下图所示: 

 

挂载过程的脚本 mount.sh 内容如下, 修改完保存退出。

#!/bin/bash

function mnt() {

    echo "MOUNTING"

    sudo mount -t proc /proc ${2}proc

    sudo mount -t sysfs /sys ${2}sys

    sudo mount -o bind /dev ${2}dev

    sudo mount -B /dev/pts ${2}dev/pts

    sudo chroot ${2}

}

function umnt() {

    echo "UNMOUNTING"

    sudo umount ${2}proc

    sudo umount ${2}sys

    sudo umount ${2}dev/pts

    sudo umount ${2}dev

}

if [ "$1" == "-m" ] && [ -n "$2" ] ;

then

    mnt $1 $2

elif [ "$1" == "-u" ] && [ -n "$2" ];

then

    umnt $1 $2

else

    echo ""

    echo "Either 1'st, 2'nd or both parameters were missing"

    echo ""

    echo "1'st parameter can be one of these: -m(mount) OR -u(umount)"

    echo "2'nd parameter is the full path of rootfs directory(with trailing '/')"

    echo ""

    echo "For example: ch-mount -m /media/sdcard/"

    echo ""

    echo 1st parameter : ${1}

    echo 2nd parameter : ${2}

fi                      

 

输入以下命令赋予权限

chmod a+x mount.sh

 

然后使用命令“./mount.sh -m rootfs/” 运行挂载。看到用户名切换到了root则成功了。 

 如果想要退出,则输入exit,然后输入“./mount.sh -u rootfs/”,如下图所示:

79.2.5 定制ubuntu系统

由于 ubuntu base 是一个最小根文件系统,很多命令和软件都没有,因此我们需要先安装一下常用的命令和软件

我们输入以下命令挂载

 ./mount.sh -m rootfs/

然后安装软件包,输入以下命令:

apt update

apt upgrade

apt install sudo

apt install language-pack-en-base

apt install vim

apt install net-tools

apt install ethtool

apt install ifupdown

apt install iputils-ping

apt install rsyslog

apt install htop

 

设置root密码:

passwd

 

修改hostname

echo iMX8MM > /etc/hostname

设置串⼝:

systemctl enable getty@ttymxc1.service

 

退出:

exit

卸载:

./mount.sh -u rootfs/-u

 

79.2.6 打包rootfs

输入以下命令打包

tar -zcvf ubuntu_20.04_imx8mm_ubuntu_rootfs_base.tar.gz rootfs/

79.2.7 编译镜像

将Linux源码下rootfs目录下的rootfs文件系统删除

 

然后将ubuntu_20.04_imx8mm_ubuntu_rootfs_base.tar.gz压缩包拷贝到Linux源码根目录下,如下图所示 

然后解压,输入以下命令,此时ubuntu文件系统替换了原来的文件系统

tar -vxf ubuntu_20.04_imx8mm_ubuntu_rootfs_base.tar.gz

然后按照编译章节,编译镜像,然后烧写镜像即可。

 

79.2.8 测试ubuntu20

将Ubuntu20镜像烧写进开发板,系统启动以后如下图所示:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2045253.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何进行数据中心的负载测试规划和设计

负载测试是数据中心规划和设计的重要组成部分,它可以帮助评估系统在高负载条件下的性能表现。以下是进行数据中心负载测试规划和设计的步骤: 1. 确定目标:首先,需要明确负载测试的目标。这可能包括评估系统的最大处理能力&#xf…

2024年省市县乡镇村行政边界矢量数据分享,数据获取在文末

今天给大家分享的是【2024乡镇区划矢量边界数据】!数据更新自2024年6月,同上一年对比乡镇数量有所调整。 现阶段的我国行政区划 行政区划的划分确实是为了更有效地进行行政管理和服务,使得国家的治理能够更加有序和高效。 行政区划的合理设定…

将ios 无线投屏至windows 10

尝试通过wsa安装乐播安桌盒子版, 没有成功,有帖为证, 但是却给win10带来了wsa的特性, 有帖为证: https://blog.csdn.net/weixin_62598385/article/details/141260431 尝试通过wsa安装乐播安桌盒子版, 没有成…

深入理解指针(五)

一、一维数组传参的本质 首先从一个问题开始&#xff0c;我们之前都是在函数外部计算数组的元素个数&#xff0c;那我们可以把数组传给一个函数后&#xff0c;在函数内部求数组的元素个数吗&#xff1f; 我们来看一下下面的代码&#xff1a; #include<stdio.h> void te…

springboot+JTA+atomikos多数据源分布式事务管理

一、项目需求 1、同时操作两个数据库&#xff0c;一个在本地服务器&#xff0c;一个在云服务器。 2、数据库数据是同步的&#xff0c;两个数据库同时做update、insert等操作时&#xff0c;无论哪个数据库操作失败&#xff0c;要求两个数据库数据同时回滚。 3、两个数据库均为SQ…

整理 酷炫 Flutter 优质 布局、交互 开源App

xtimer-flutter-app Flutter 计时器应用 项目地址&#xff1a;https://github.com/pedromassango/xtimer-flutter-app 项目Demo&#xff1a;https://download.csdn.net/download/qq_36040764/89631382

<数据集>骑行头盔识别数据集<目标检测>

数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;5026张 标注数量(xml文件个数)&#xff1a;5026 标注数量(txt文件个数)&#xff1a;5026 标注类别数&#xff1a;3 标注类别名称&#xff1a;[helmet, without_helmet, two_wheeler] 序号类别名称图片数框数1helm…

CCleaner Pro v6.26.11169 中文绿色便携版免安装 下载 Windows缓存清理 磁盘清理 注册表清理 大文件查找

可以清理系统和软件缓存&#xff0c;清理注册表&#xff0c;磁盘分析进行大文件查找 下载地址(资源制作整理不易&#xff0c;下载使用需付费&#xff0c;不能接受请勿浪费时间下载) 链接&#xff1a;https://pan.baidu.com/s/1XLi-J1h-G5xx8QBwXeFMcg?pwd2fen 提取码&#xf…

美股涨跌互现,半导体与科技股受关注

美股市场表现 昨夜&#xff0c;美股三大股指表现不一。道琼斯工业平均指数下跌0.36%&#xff0c;纳斯达克综合指数上涨0.21%&#xff0c;标准普尔500指数持平。科技股表现突出&#xff0c;其中英伟达股价上涨超过4%。债市方面&#xff0c;美国十年期国债收益率下跌至3.905%&am…

大语言模型(LLM)的SIO解构

引言: 大语言模型&#xff08;LLM&#xff09;作为现代人工智能领域的重要突破&#xff0c;已经在自然语言处理&#xff08;NLP&#xff09;中展现出了卓越的能力。这些模型通过深度学习算法和大规模数据训练&#xff0c;在多个语言任务中表现出接近人类的理解与生成能力&#…

七、2 ADC数模转换器有关函数介绍(Keil5)

函数介绍 &#xff08;1&#xff09;ADCCLK的配置函数&#xff08;在rcc.h中&#xff09; &#xff08;2&#xff09;ADC的库函数&#xff08;在adc.h中&#xff09;

将 Amazon SageMaker 机器学习模型与 QuickSight 集成。

增强使用 Amazon SageMaker 和 QuickSight 构建的机器学习模型的概述。 您是否曾想过如何以更简单的方式将 ML 预测添加到您的 BI 平台并分享给业务客户&#xff1f;别担心&#xff01;AWS ML Insights 的 SageMaker 增强型 QuickSight 之一可以满足您的需求&#xff01; 假设…

vue3 antdv3 Select 每行数据的最右侧增加一个x删除按钮,鼠标移上去显示,移走消失,并且点击可以删除当前行的数据。

1、先上个图&#xff0c;这个是实现的效果&#xff1a; 鼠标移动E所在的行&#xff0c;则E的最右侧显示一个x删除按钮&#xff0c;点击x按钮&#xff0c;可以删除当前的数据&#xff0c; 点击增加按钮&#xff0c;可以新增。 2、实现的代码&#xff1a; <Selectv-model:v…

栈与队列 - 用队列实现栈

225. 用队列实现栈 方法一&#xff1a;使用两个队列实现 var MyStack function() {this.queue1 [];this.queue2 []; };/** * param {number} x* return {void}*/ MyStack.prototype.push function(x) {this.queue1.push(x); };/*** return {number}*/ MyStack.prototype.p…

.net实战(VB):连接网页数据

先上效果图 在上程序 Public Sub SendPostRequest(aa As String)MessageBox.Show(sheet.Name)Dim token As StringDim xmlhttp As ObjectDim xmlhttp1 As ObjectDim url As StringDim jsonParams As StringDim response As Stringxmlhttp CreateObject("MSXML2.XMLHTTP&…

【Qt开发】多线程QThread(通过QObject::moveToThread)和QMutex互斥锁的配置和基本函数

【Qt开发】多线程QThread&#xff08;通过QObject::moveToThread&#xff09;和QMutex互斥锁的配置和基本函数 多线程 Qt官方给了两种方法连运行多线程函数 一种是直接用QThread的run()方法 还有一种就是继承QObject 用moveToThread方法去放到QThread里执行 在官方文档中 推…

6.MySQL的增删改查

目录 Create 单行插入数据 全列插入 多行数据指定列插入 插入否则更新 主键冲突 唯一键冲突 &#xff08;☆&#xff09; 替换数据 Retrieve Select列 全列查询 指定列查询 查询字段为表达式 where条件 NULL 的查询 NULL 和 NULL 的比较&#xff0c; 和 <>…

野蛮生长后,AI大模型还需要重复“造轮子”?

AI大模型带来的智能革命&#xff0c;媲美工业革命和电力革命&#xff0c;深刻改变人类社会的生产生活方式&#xff0c;是开启智能时代的那一台“蒸汽机”。 从文生文到文生图&#xff0c;再到文生视频&#xff0c;以ChatGPT、Sora等为代表的大模型引领了全球人工智能技术与产业…

《使用深度学习三分类模型预测胸部CT中的肺腺癌侵袭性》| 文献速递-基于深度学习的乳房、前列腺疾病诊断系统

Title 题目 Predicting Invasiveness of Lung Adenocarcinoma at Chest CT with Deep Learning Ternary Classification Models 《使用深度学习三分类模型预测胸部CT中的肺腺癌侵袭性》 Background 背景 Preoperative discrimination of preinvasive, minimally invasive,…

开关电源之结构分析

如有技术问题及技术需求请加作者微信! 开关电源之结构分析 1、开关电源的结构 常用开关电源,主要是为电子设备提供直流电源供电。电子设备所需要的直流电压,范围一般都在几伏到十几伏,而交流市电电源供给的电压为220V(110V),频率为50Hz(60Hz)。开关电源的作用就是把一…