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

目录

[在Ubuntu主机中修改ARM Linux开发板的根文件系统](#在Ubuntu主机中修改ARM Linux开发板的根文件系统)

一、安装环境

二、根文件系统镜像扩容

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

四、修改相关配置

五、创建挂载脚本

六、切换回主机目录

七、取消挂载

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


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

复制代码
开发环境:
    Ubuntu20.04、飞凌OK3568开发板、开发板使用的根文件系统镜像为ubuntu.img
一、安装环境
复制代码
首先使用以下命令在Ubuntu20.04中安装qemu相关环境:
bash 复制代码
sudo apt-get install qemu-user-static
二、根文件系统镜像扩容
复制代码
使用以下命令对linux开发板使用的根文件系统进行扩容:
bash 复制代码
sudo fsck.ext3 -f IMAGE
bash 复制代码
sudo resize2fs IMAGE SIZE
复制代码
注意:
IMAGE:开发板使用的根文件系统镜像名称,我这里就是ubuntu.img。
SIZE:块的数量、一个块的大小为4K,这里GB-MB-KB之间的换算按照1000算。
     如想要扩容到5G,则块数大小为:5 * 1000 * 1000 / 4K = 1250000块
按需求扩容对应的容量大小,还需要注意的是根文件系统镜像大小与开发板rootfs分区大小有关,要保证根文件系统镜像后续能够正常烧录到开发板中。
复制代码
这里我使用的开发板根文件系统镜像扩容到8G大小。
bash 复制代码
sudo fsck.ext3 -f ubuntu.img
bash 复制代码
sudo resize2fs ubuntu.img 2000000   //8G
三、挂载扩容后的根文件系统镜像
复制代码
在根文件系统镜像的同级目录下,新建target目录用来挂载镜像使用。
bash 复制代码
mkdir target
复制代码
接着挂载根文件系统镜像到target目录下
bash 复制代码
sudo mount ubuntu.img target/
四、修改相关配置
复制代码
首先,切换到target目录下,修改相关的配置:
bash 复制代码
cd target
bash 复制代码
sudo cp /usr/bin/qemu-arm-static usr/bin/
复制代码
由于后续修改根文件系统内容时需要使用到网络,因此需要先拷贝PC主机端的dns配置:
bash 复制代码
sudo cp -b /etc/resolv.conf  etc/resolv.conf
复制代码
修改镜像源,这里常用的镜像源有阿里云,中科大,清华和华为的,可以选择一个即可。
复制代码
使用vim打开镜像源配置文件:
bash 复制代码
sudo vim etc/apt/source.list
复制代码
拷贝粘贴以下内容,修改完成后,wq保存退出。
bash 复制代码
deb http://ports.ubuntu.com/ubuntu-ports/ xenial main universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial main universe
五、创建挂载脚本
复制代码
首先,从target目录下,切换出去到上一级目录。
bash 复制代码
cd ..
复制代码
接着,使用vim创建并打开一个挂载脚本文件:
bash 复制代码
vim mount.sh
复制代码
将以下内容拷贝到脚本文件中,拷贝完成后wq保存退出。
bash 复制代码
#!/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
复制代码
脚本文件创建成功后,需要给其添加可执行权限。
bash 复制代码
chmod +x mount.sh
复制代码
接着执行以下命令将根文件系统镜像挂载到qemu上:
bash 复制代码
sudo ./mount.sh -m target/
复制代码
至此,已经成功将扩容后的根文件系统镜像挂载到qemu上,虚拟机操作用户会变为root@ubuntu:/# ,此时执行apt等操作安装的软件会保留在根文件系统镜像中。我们按照自己的需求做对应的修改即可。
六、切换回主机目录
复制代码
当我们修改完毕后,使用exit命令即可切换回主机目录下。
bash 复制代码
exit
七、取消挂载
复制代码
当修改根文件系统完成后,还需要取消对根文件系统的挂载。
bash 复制代码
sudo ./mount.sh -u target/
bash 复制代码
sudo umount target/
八、精简根文件系统镜像大小
复制代码
我们通过步骤二扩容得到的根文件系统往往会大一点,在我们修改根文件系统镜像完成后,可以使用以下命令对根文件系统镜像进行精简。
复制代码
1、检查修复镜像的文件系统
bash 复制代码
sudo e2fsck -p -f ubuntu.img  
复制代码
2、精简文件系统镜像的大小
bash 复制代码
sudo resize2fs -M ubuntu.img
复制代码
ubuntu.img要按照自己板子根文件系统的实际的名字改
复制代码
至此,我们就完成了在PC虚拟机上对ARM Linux开发板所使用的根文件系统的修改。修改完成后,将精简后的根文件系统烧录到linux开发板中即可。
相关推荐
sanggou1 小时前
Linux批量执行工具脚本使用指南:一键运行多个release-dev.sh脚本
linux·bash
夜月yeyue7 小时前
设计模式分析
linux·c++·stm32·单片机·嵌入式硬件
kfepiza7 小时前
Debian的`/etc/network/interfaces`的`allow-hotplug`和`auto`对比讲解 笔记250704
linux·服务器·网络·笔记·debian
Narnat7 小时前
Rk3568驱动开发_中断_14
驱动开发
cuijiecheng20188 小时前
Ubuntu下布署mediasoup-demo
linux·运维·ubuntu
独行soc10 小时前
2025年渗透测试面试题总结-2025年HW(护网面试) 33(题目+回答)
linux·科技·安全·网络安全·面试·职场和发展·护网
java龙王*10 小时前
开放端口,开通数据库连接权限,无法连接远程数据库 解决方案
linux
bcbobo21cn11 小时前
Linux命令的命令历史
linux·histsize·histfile
jingyu飞鸟12 小时前
linux系统源代码安装apache、编译隐藏版本号
linux·运维·apache