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

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镜像烧写进开发板,系统启动以后如下图所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值