百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

手把手教你在Ubuntu定制文件系统【飞凌OKT507-C开发板教程】

liuian 2024-12-09 15:21 22 浏览

为了给客户的测试和开发提供便利,飞凌嵌入式的开发板产品一般都支持多种操作系统,以基于全志T507H处理器设计研发的OKT507-C开发板为例,它支持三种操作系统,分别是:Linux、Android 和 Forlinx Desktop(Ubuntu),这里提到的Forlinx Desktop系统是飞凌嵌入式在Ubuntu base的基础上构建的桌面操作系统,完全兼容Ubuntu18.04,相对传统的Linux系统而言易用性更高。

Forlinx Desktop(Ubuntu)系统基于Ubuntu官方为嵌入式设备制作的操作系统-Lubuntu,该操作系统具备apt-get、ldd等常用的命令,若需要安装软件则直接apt-get在线安装即可,不需进行交叉编译移植等繁琐操作。但是每次重新烧写镜像之后,之前安装的软件就得重新安装,比较繁琐,如果需要批量操作则每块开发板都需要去apt-get安装,这样会大幅增加工作量,很不便于批量化生产。

能不能把软件一起打包到镜像呢?这样每次烧写完就不用再去apt-get在线安装了。答案当然是肯定的,这就涉及到文件系统的定制了,那么接下来,小编就为大家介绍在Forlinx Desktop(Ubuntu)系统上定制文件系统的操作过程。


1. 解压文件系统

首先,找到OKT507-desktop-release源码的文件系统所在的目录,然后将文件系统压缩包解压,路径如下:

OKT507-desktop-release/ubuntu

解压后,可看到文件系统目录OKT507-linux-ubuntu,进入到此目录后可看到如下文件夹:


2. 安装QEMU

这里简单介绍下QEMU,它是一个小巧的模拟器,可以模拟很多硬件如ARM、x86、AMD64/Intel64等。QEMU用途广泛,比如Xen、Android模拟器等都是基于QEMU的。下面我们开始在虚拟机进行安装QEMU,如下:

① 更新下载源:

sudo apt-get update

②执行命令安装:

sudo apt-get install qemu-aarch64-static

sudo apt-get install qemu-user-static


3. 修改配置

① 将QEMU的qemu-arm-static拷贝到文件系统目录OKT507-linux-ubuntu,如下:

sudo cp /usr/bin/qemu-arm-static usr/bin/

② 拷贝PC主机端的DNS配置,因为待会我们安装程序时要用网络:

sudo cp -b /etc/resolv.conf etc/resolv.conf

③ 修改下载源:

sudo vim etc/apt/sources.list

添加

deb http://ports.ubuntu.com/ubuntu-ports/ xenial main universe

deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main universe


4. 挂载文件系统

因为我们这里是通过脚本的方式挂载和卸载文件系统,所以需要编写一个脚本挂载和卸载文件系统。

① 新建一个脚本文件命名为ch-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 chroot ${2}

}

function umnt() {

echo "UNMOUNTING"

sudo umount ${2}proc

sudo umount ${2}sys

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

② 设置这个shell脚本可执行权限,如下:

sudo chmod 777 ch-mount.sh

③ 挂载文件系统:

执行ch-mount.sh脚本 指定参数-m,挂载成功如下:

sudo ./ch-mount.sh -m ./


5. 安装软件

前面我们挂载了文件系统,已将文件系统挂载到了QEMU模拟器,接下来就可以安装我们所需要的软件了。

① 更新下载源:

apt update

注意:更新下载源可能会报错,这里需要注意一下,因为tmp文件夹权限不够,chmod为其赋予权限。

如下:

chmod 777 /tmp

② 安装软件:

至此,便可以安装所需软件了,在这里用apt-get安装自己所需软件,根据所需安装。我们这里来安装一个minicom串口测试工具。如下:

③ 安装完成后,exit退出QEMU。

④ 执行ch-mount.sh脚本卸载文件系统,指定参数-u,卸载成功后打印如下:

注意:我们exit退出后,只是退出了QEMU模拟器,并没有卸载文件系统,一定要执行脚本卸载文件系统。


6. 打包文件系统

① 完成前面的步骤后,用tar命令将当前文件夹下所有文件压缩,命名为OKT507-linux-ubuntu.tar.gz。如下:

sudo tar -cvzf OKT507-linux-ubuntu.tar.gz ./*

② 压缩完成后,为文件系统压缩包OKT507-linux-ubuntu.tar.gz赋予权限,如下:

sudo chmod a+w OKT507-linux-ubuntu.tar.gz

③ 将刚打包好的压缩包替换到上一级目录下的旧的文件系统压缩包。

④ 重新编译打包后生成新的镜像烧录开发板。


7. 测试方法

烧录到板子后,在终端启动minicom,验证下是否安装上。如下:

从上图红框可以看出,通过终端命令启动了minicom,说明我们在QEMU中安装成功了,至此Ubuntu文件系统定制就做完了。

通过这种方法可以个性化的定制属于自己文件系统,安装自己所需软件,也可以根据自己需求将出厂不需要的软件用相同的方式卸载掉,这样既能减少工作量,又利于批量化生产。

以上就是小编为大家带来的在Forlinx Desktop(Ubuntu)系统上定制文件系统的操作过程。

相关推荐

GCI: Another key public good for international community

MembersofadelegationofhighschoolstudentsfromtheU.S.stateofWashingtonposeforaphotoa...

kube on kube 实现思路分享(kube-scheduler)

这里的kubeonkube,是指建立K8s元集群,纳管其他业务K8s集群,通过声明式API管理集群的创建、增删节点等。参考https://github.com/kubean-i...

China and India hold the key to a more inclusive global future

ByMayaMajueranLead:AsChinaandIndiamark75yearsofdiplomaticties,theircooperationcouldse...

日本真子公主的婚礼又要提上日程了吗?未婚夫:债务问题已解决

日本明仁天皇将于今年3月31日退位,德仁皇太子即将成为新一任的天皇。在平成时代最后的倒计时中,明仁天皇的孙女真子公主的婚事却又一次进入了人们的视野。(viaTheTelegraph)关注日本皇室的...

kratos源码分析系列(1)(kvm源码解析与应用 pdf)

https://github.com/go-kratos/kratos是b站开源的一个微服务框架,整体来看它结合grpc生态中的grpc-gateway,以及wire依赖注入和众多常用的trace,m...

【2.C#基础】6.循环语句(c#循环语句例子)

6.循环语句当需要多次执行同一个处理时,就需要用到循环语句。一般情况下,循环的流程图如下:6.1while循环C#中的while循环语句在给定的条件为真的情况下会重复执行目标语句。格式如下:...

使用 Google Wire 在 Go 中进行依赖注入

关注点分离、松耦合系统和依赖反转原则等概念在软件工程中是众所周知的,并且在创建良好的计算机程序过程中至关重要。在本文中,我们将讨论一个同时应用了这三个原则的技术,称为依赖注入。我们将尽可能地实践,更加...

用 Golang封装你的API(golang封装dll)
用 Golang封装你的API(golang封装dll)

每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。@头条创作挑战赛本文探讨了在用Golang封装你的API的过程以及几个不同的编程步骤。我做了一个非常有限的时间来证明如何为客户正在开...

2025-05-09 20:03 liuian

Terraform 实战 | 万字长文(terrify是什么意思中文)

Terraform是什么Terraform(https://www.terraform.io/)是HashiCorp旗下的一款开源(Go语言开发)的DevOps基础架构资源管理运维工具,可...

Go 语言入门:环境安装(go语言安装 window)

一、前言这里不同于其他人的Go语言入门,环境安装我向来注重配置,比如依赖包、缓存的默认目录。因为前期不弄好,后面要整理又影响这影响那的,所以就干脆写成文章,方便后期捡起。二、安装1.安装包htt...

Go语言进阶之Go语言高性能Web框架Iris项目实战-项目结构优化EP05

前文再续,上一回我们完成了用户管理模块的CURD(增删改查)功能,功能层面,无甚大观,但有一个结构性的缺陷显而易见,那就是项目结构过度耦合,项目的耦合性(Coupling),也叫耦合度,进而言之,模块...

如何将Go项目与Docker结合实现高效部署

在现代软件开发中,使用Docker部署应用程序已经成为一种标准实践。本文将深入探讨如何将Go项目与Docker结合,实现高效、可靠的部署过程。通过详细的步骤和丰富的示例,你将能够迅速掌握这一流程。准备...

五分钟轻松熟悉一个k8s Operator应用制作

简介:operator是一种kubernetes的扩展形式,可以帮助用户以Kubernetes的声明式API风格自定义来管理应用及服务,operator已经成为分布式应用在k8s集群部...

程序员的副业秘籍!一款可以快速搭建各类系统的后台管理系统

系统简介这是一个基于Gin+Vue+ElementUI(或ArcoDesign、AntDesign)的系统快速开发平台,采用了前后端分离,旨在帮助用户快速完成各类系统的基础功能搭建。平...

使用 Go 语言开发区块链钱包的项目目录结构设计

在开发区块链钱包时,项目的目录结构应该清晰、模块化,确保代码的可维护性和扩展性。基于Go的惯例,结合区块链钱包的功能需求,以下是一个较为合理的目录结构示例:1.目录结构blockchain-wa...