如何修改buildroot和debian文件系统

电子说

1.3w人已加入

描述

本文档主要介绍在没有编译环境的情况下,如何修改buildroot和debian文件系统方法,如在buildroot文件系统中添加文件、修改目录等文件操作,在debian文件系统中,安装软件库、工具、扩大文件系统空间等等操作。

1.Debian文件系统   

1.1此操作可在虚拟机中完成,首先需要创建一个文件夹    

 

sudo mkdir debian/

 

1.2 然后将文件系统镜像 linaro-rootfs.img挂载到debian文件夹

 

sudo mount linaro-rootfs.img debian/

 

1.3 进入debian就可以看到文件系统的结构了    

Buildroot

这时可以对文件系统进行文件操作,修改完成后取消挂载即可

1.4 如果需要安装一些软件库或者某些工具则需要依赖qemu工具,先在本地环境安装qemu-user-static工具

 

sudo apt update
sudo apt-get install qemu-user-static

 

1.5 然后需要将安装的qemu工具复制到固件挂载的对应目录下,这样是为了在宿主机上模拟ARM架构时,可以确保在模拟环境中运行的程序能够找到并使用这个工具,从而保持环境的一致性。

 

sudo cp /usr/bin/qemu-aarch64-static debian-mount/usr/bin/

 

这里的aarch64代表是ARM架构的64位版本

1.6 然后再使用ch-mount.sh脚本进入到固件内部    

 

#!/bin/bash
IP="www.baidu.com"
NUM=3


func_ping()
{
    ping $IP -c $NUM > ping.txt
    echo ""
    echo ""
    echo ""
    if [ ! -z "`grep "reachable" ping.txt`" ]; then
        echo "----------------------------------"
        echo " "
        echo " Now is unreachable! Please check whether the computer has Internet access."
        echo " "
        echo "----------------------------------"
        rm ping.txt
    exit
    fi  
    echo "Internet is OK."
    rm ping.txt
}

function mnt() {
    echo "MOUNTING"
    echo "To exit, press 'ctrl + d'"
    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
    umnt $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

 

如果使用脚本挂载报错,则很有可能是qemu-aarch64-static工具没有复制到对应目录下

如果模拟挂载成功,就能看到文件系统内部,这时就可以在文件系统内部中使用apt工具,安装所需要的版本库和对应工具,安装完成后按下“ctrl + d”可以保存推出挂载。

Buildroot

 1.7 如果在固件内部安装工具时,发现空间不足,则需要使用到qemu-kvm工具来修改镜像大小,首先要在本地环境安装qemu-kvm工具

 

sudo apt-get install qemu-kvm

 

1.8 修改固件镜像大小需要对debian挂载目录进行权限修改

 

sudo mount -o remount linaro-rootfs.img debian/

 

1.9 这时候就可以对文件系统大小进行修改,修改大小“+”后面的单位有K、M、G

 

sudo qemu-img resize -f raw linaro-rootfs.img +1G

 

2.0 然后需要取消挂载再使用resize2fs工具调整文件系统的大小

 

sudo umount /work/bsp/rk356x_bsp/rockdev/debian
sudo resize2fs -f linaro-rootfs.img

 

Buildroot

打印这些信息就说明文件系统修改成功,可以再使用ch-mount.sh挂载进去查看df -h查看是否修改成功

2.Buildroot文件系统  

Buildroot文件系统我们提供的标准固件没有apt工具,所以并不能通过qemu工具模拟ARM架构,来apt安装工具,如果需要,则还是用工具源码交叉编译后手动移植到文件系统中。

Buildroot文件系统可以直接挂载进去来对文件或者目录进行操作,取消挂载即可保存。

Buildroot    

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分