在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开发板中即可。