Buildroot |自定义overlayfs

Buildroot |自定义overlayfs

Buildroot规范了整个嵌入式系统构建,从系统配置、软件包选择、到打包成img形式。但是这些步骤都有一定的“官方”的味道,如果我们想要在每次构建的时候加上我们自定义的脚本或者配置文件,难道是要在img构建出来后再一个一个拷贝吗?不是的,overlayfs就是解决这样的问题。

overlayfs,覆盖的根文件系统。允许我们在某个目录另外自定义一个根文件下系统,在构建目标文件系统后但尚未打包img前,自动帮我们把里面的内容拷贝到目标文件系,如果有重复的文件,就会覆盖原本的内容。

overlayfs的使用场景

  • 有零散的经常使用的文件需要打包到根文件系统
  • buildroot的定义软件版本不适合系统,需要我们自定义版本

使用overlayfs

这个例子将我另外编译的qt库通过buildroot提供的overlayfs自动打包进img。

1.创建overlayfs文件夹

官方推荐的overlayfs文件夹是如此格式:board///rootfs-overlay

创建overlayfs文件夹:fs-overlay是我模仿rk的命名,usr/lib是按照一般的根文件系统的库路径

sudo mkdir -p board/myboard/alphal-imx6ull/fs-overlay/usr/lib

2.拷贝自定义文件

sudo cp -rf ~/Desktop/mystuff/arm-qt/ ./board/myboard/alphal-imx6ull/fs-overlay/usr/lib

3.使能overlayfs功能

这一步让buildroot知道需要把哪个overlayfs拷贝进目标文件系统

BR2_ROOTFS_OVERLAY(在System configuratio菜单中)是用来指定overlayfs的目录,这里把上面的fs-overlay路径写上。注意.git / .svn /.hg等版本控制的隐藏文件会被排除。

sudo make menuconfig

在这里插入图片描述

可以使用空格将多个目录加入

4.构建系统

sudo make

5.检查img是否包含自定义内容

最后的img文件在output/image下生成rootfs.ext2

justice@justice-virtual-machine:~/Desktop/buildroot-2022.11.1/output/images$ ls
mnt  rootfs.ext2  rootfs.ext4  rootfs.tar  rootfs.tar.gz
justice@justice-virtual-machine:~/Desktop/buildroot-2022.11.1/output/images$ sudo mount -o loop rootfs.ext2 mnt/
justice@justice-virtual-machine:~/Desktop/buildroot-2022.11.1/output/images$ cd mnt/
justice@justice-virtual-machine:~/Desktop/buildroot-2022.11.1/output/images/mnt$ ls usr/lib
alsa-lib           libext2fs.so       libiperf.so.0      libncurses.so.6.1   libstdc++.so
arm-qt             libext2fs.so.2     libiperf.so.0.0.0  libpanel.so         libstdc++.so.6
libblkid.so        libext2fs.so.2.4   libmagic.so        libpanel.so.6       libstdc++.so.6.0.29
libcom_err.so      libform.so         libmagic.so.1      libpanel.so.6.1     libstdc++.so.6.0.29-gdb.py
libcom_err.so.2    libform.so.6       libmagic.so.1.0.0  libreadline.so      libuuid.so
libcom_err.so.2.1  libform.so.6.1     libmenu.so         libreadline.so.8    os-release
libcurses.so       libhistory.so      libmenu.so.6       libreadline.so.8.1  terminfo
libe2p.so          libhistory.so.8    libmenu.so.6.1     libss.so            tslib
libe2p.so.2        libhistory.so.8.1  libncurses.so      libss.so.2
libe2p.so.2.3      libiperf.so        libncurses.so.6    libss.so.2.0

justice@justice-virtual-machine:~/Desktop/buildroot-2022.11.1/output/images$ sudo umount mnt

可以看到我overlayfs的内容arm-qt已经在目标img中。

关注公众号:justice与初中生小许

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值