ubuntu文件系统修改( for arm)
系统:ubuntu14.04
镜像:ubuntu-rootfs.img for aarch64
创建一个文件夹 ubuntu-mount
mkdir ubuntu-mount
将ubuntu-rootfs.img镜像挂载到ubuntu-mount
mount ubuntu-rootfs.img ubuntu-mount
进入ubunt-mount就可以看到文件系统的结构了。
cd ubuntu-mount
安装模拟处理器 qemu,这是一个可以模拟多种cpu构架平台的模拟器,类似于虚拟机。
详细情况可以参考官网网站https://www.qemu.org/
apt-get install qemu
复制关键文件到文件夹,根据自己系统的平台复制一份到虚拟文件系统下。
#this is for 32 bit arm system
cp /usr/bin/qemu-arm-static usr/bin/
#this is for 64 bit arm system
cp /usr/bin/qemu-aarch64-static usr/bin/
下面需要把根目录改变到ubuntu-mount上去,如果直接使用chroot的话,会存在proc已经dev下的文件无法检测到的问题,所以可以直接使用脚本 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
返回上一级目录,直接使用ch-mount.sh改变当前的根目录
./ch-mount.sh -m ubuntu-mount/
这个时候遇到了这个问题,就是挂载的文件系统的运行空间是按照镜像的大小来,所以无法再添加新的内容。由下图可知系统占用已满。
df -h
所以在当时在安装新的软件包的时候遇到以下的错误:
“ You don’t have enough free space in /var/cache/apt/archives/. ”
尝试使用 apt-get autoclean 和 apt-get clean都没有作用。
在这里需要重新修改镜像大小,然后重新挂载发现就可以解决问题了。
#退出当前虚拟环境
exit
#将挂载的目录取消挂载,不进行此操作会影响后续操作
./ch-mount -u ubuntu-mount
umount ubuntu-mount
修改镜像大小需要用到工具 qemu-img
apt-get install qemu-kvm
安装成功之后就可以使用qemu-img工具了,执行指令
qemu-img resize ubuntu-rootfs.img +5G
resize2fs -f ubuntu-rootfs.img
修改完大小之后,重新挂载之后检查存储设备的使用情况,发现已经有多余的空间了,接下来就可以对改文件系统进行适当的修改了。
可以自由地安装软件包
参考文献: