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

在Ubuntu主机中修改ARM Linux开发板的根文件系统

目录

在Ubuntu主机中修改ARM Linux开发板的根文件系统

一、安装环境

二、根文件系统镜像扩容

三、挂载扩容后的根文件系统镜像

四、修改相关配置

五、创建挂载脚本

六、切换回主机目录

七、取消挂载

八、精简根文件系统镜像大小


在Ubuntu主机中修改ARM Linux开发板的根文件系统

开发环境:Ubuntu20.04、飞凌OK3568开发板、开发板使用的根文件系统镜像为ubuntu.img
一、安装环境
首先使用以下命令在Ubuntu20.04中安装qemu相关环境:
sudo apt-get install qemu-user-static
二、根文件系统镜像扩容
使用以下命令对linux开发板使用的根文件系统进行扩容:
sudo fsck.ext3 -f IMAGE
sudo resize2fs IMAGE SIZE
注意:
IMAGE:开发板使用的根文件系统镜像名称,我这里就是ubuntu.img。
SIZE:块的数量、一个块的大小为4K,这里GB-MB-KB之间的换算按照1000算。如想要扩容到5G,则块数大小为:5 * 1000 * 1000 / 4K = 1250000块
按需求扩容对应的容量大小,还需要注意的是根文件系统镜像大小与开发板rootfs分区大小有关,要保证根文件系统镜像后续能够正常烧录到开发板中。
这里我使用的开发板根文件系统镜像扩容到8G大小。
sudo fsck.ext3 -f ubuntu.img
sudo resize2fs ubuntu.img 2000000   //8G
三、挂载扩容后的根文件系统镜像
在根文件系统镜像的同级目录下,新建target目录用来挂载镜像使用。
mkdir target
接着挂载根文件系统镜像到target目录下
sudo mount ubuntu.img target/
四、修改相关配置
首先,切换到target目录下,修改相关的配置:
cd target
sudo cp /usr/bin/qemu-arm-static usr/bin/
由于后续修改根文件系统内容时需要使用到网络,因此需要先拷贝PC主机端的dns配置:
sudo cp -b /etc/resolv.conf  etc/resolv.conf
修改镜像源,这里常用的镜像源有阿里云,中科大,清华和华为的,可以选择一个即可。
使用vim打开镜像源配置文件:
sudo vim etc/apt/source.list
拷贝粘贴以下内容,修改完成后,wq保存退出。
deb http://ports.ubuntu.com/ubuntu-ports/ xenial main universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main universe
五、创建挂载脚本
首先,从target目录下,切换出去到上一级目录。
cd ..
接着,使用vim创建并打开一个挂载脚本文件:
vim mount.sh
将以下内容拷贝到脚本文件中,拷贝完成后wq保存退出。
#!/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
脚本文件创建成功后,需要给其添加可执行权限。
chmod +x mount.sh
接着执行以下命令将根文件系统镜像挂载到qemu上:
sudo ./mount.sh -m target/
至此,已经成功将扩容后的根文件系统镜像挂载到qemu上,虚拟机操作用户会变为root@ubuntu:/# ,此时执行apt等操作安装的软件会保留在根文件系统镜像中。我们按照自己的需求做对应的修改即可。
六、切换回主机目录
当我们修改完毕后,使用exit命令即可切换回主机目录下。
exit
七、取消挂载
当修改根文件系统完成后,还需要取消对根文件系统的挂载。
sudo ./mount.sh -u target/
sudo umount target/
八、精简根文件系统镜像大小
我们通过步骤二扩容得到的根文件系统往往会大一点,在我们修改根文件系统镜像完成后,可以使用以下命令对根文件系统镜像进行精简。
1、检查修复镜像的文件系统
sudo e2fsck -p -f ubuntu.img  
2、精简文件系统镜像的大小
sudo resize2fs -M ubuntu.img
ubuntu.img要按照自己板子根文件系统的实际的名字改
至此,我们就完成了在PC虚拟机上对ARM Linux开发板所使用的根文件系统的修改。修改完成后,将精简后的根文件系统烧录到linux开发板中即可。
http://www.lryc.cn/news/581867.html

相关文章:

  • RSTP 拓扑收敛机制
  • IRF堆叠技术的主要优势
  • 操作系统王道考研习题
  • HCIA-生成数协议(STP)
  • uniapp实现的多种时间线模板
  • DolphinScheduler 3.2.0 后端开发环境搭建指南
  • Vue计算属性(computed)全面解析:原理、用法与最佳实践
  • 多级缓存如何应用
  • C++高频知识点(二)
  • 【Pyhton】文件读取:读取整个(大型)文件
  • 铸造软件交付的“自动驾驶”系统——AI大模型如何引爆DevOps革命
  • mybatis-plus从入门到入土(二):单元测试
  • 深度学习图像分类数据集—蘑菇识别分类
  • 利用近距离全景图像进行树状结构骨架化
  • 每天一个前端小知识 Day 23 - PWA 渐进式 Web 应用开发
  • Linux国产与国外进度对垒
  • 如何使用xmind编写测试用例
  • 408第三季part2 - 计算机网络 - 应用层
  • 大数据Hadoop之——Flink1.17.0安装与使用(非常详细)
  • 分布式会话的演进和最佳实践,含springBoot 实现(Java版本)
  • 深度学习图像分类数据集—濒危动物识别分类
  • 李宏毅genai笔记:推理
  • Web攻防-XMLXXE上传解析文件预览接口服务白盒审计应用功能SRC报告
  • 网安系列【8】之暴力破解入门
  • Java设计模式之行为型模式(策略模式)介绍与说明
  • 125.【C语言】数据结构之归并排序递归解法
  • docker-compse安装nginx
  • Win11 安装 Visual Studio(保姆教程 - 更新至2025.07)
  • Altium Designer使用入门(非精通)教程 第三章(PCB绘制)
  • Application的onLowMemory从Android API 34开始系统不再触发,从API 35开始废弃