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

Buildroot和Debian文件系统修改方法

本文档主要介绍在没有编译环境的情况下,如何修改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就可以看到文件系统的结构了    

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

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

sudo apt updatesudo 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/bashIP="www.baidu.com"NUM=3func_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}
functionmnt() {    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}}functionumnt() {    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$2elif [ "$1" == "-u" ] && [ -n "$2" ];then    umnt $1$2else    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”可以保存推出挂载。

 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

sudoqemu-imgresize-frawlinaro-rootfs.img +1G

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

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

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

2.Buildroot文件系统   
Buildroot文件系统我们提供的标准固件没有apt工具,所以并不能通过qemu工具模拟ARM架构,来apt安装工具,如果需要,则还是用工具源码交叉编译后手动移植到文件系统中。
Buildroot文件系统可以直接挂载进去来对文件或者目录进行操作,取消挂载即可保存。

    

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java的IO流
  • VBA即用型代码手册:删除重复行Delete Duplicate Rows
  • 七天进阶elasticsearch[two]
  • 暴雨推出X705显示器:23.8英寸100Hz IPS屏
  • 重写setter方法要小心递归调用
  • [word] word悬挂缩进怎么设置? #经验分享#职场发展#经验分享
  • 25.逢七必过
  • Docker 学习总结(83)—— 配置文件daemon.json介绍及优化建议
  • python学习 - 在线 百度语音API 播报 测试案例分析
  • 二叉树最大宽度
  • 论文略读:Onthe Expressivity Role of LayerNorm in Transformers’ Attention
  • Spark MLlib机器学习
  • 安全高效海外仓系统:中小海外仓标准化管理的第一步
  • 开机自启动脚本配置
  • Java 期末复习 习题集
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • Java方法详解
  • Java-详解HashMap
  • Laravel 菜鸟晋级之路
  • React系列之 Redux 架构模式
  • RxJS: 简单入门
  • Spring Boot快速入门(一):Hello Spring Boot
  • 构建二叉树进行数值数组的去重及优化
  • 检测对象或数组
  • 精彩代码 vue.js
  • 算法-图和图算法
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 线上 python http server profile 实践
  • 2017年360最后一道编程题
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • (3)llvm ir转换过程
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (八)Flask之app.route装饰器函数的参数
  • (补充)IDEA项目结构
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (强烈推荐)移动端音视频从零到上手(下)
  • (十八)Flink CEP 详解
  • (十三)Flask之特殊装饰器详解
  • (四)Linux Shell编程——输入输出重定向
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)shell中括号的特殊用法 linux if多条件判断
  • (转)负载均衡,回话保持,cookie
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • (转载)利用webkit抓取动态网页和链接
  • ./configure、make、make install 命令
  • .gitignore文件忽略的内容不生效问题解决
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .net core webapi 大文件上传到wwwroot文件夹
  • .NET Core WebAPI中封装Swagger配置
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET 中使用 TaskCompletionSource 作为线程同步互斥或异步操作的事件
  • .NET开发不可不知、不可不用的辅助类(一)