Firefly开源社区

标题: debian10操作系统,我加上自己的程序后,怎么导出镜像来进行批量烧写 [打印本页]

作者: lilin    时间: 2022-3-23 11:27
标题: debian10操作系统,我加上自己的程序后,怎么导出镜像来进行批量烧写
如题,谢谢tchip_askquestions

log.txt

657 Bytes, 下载次数: 4, 下载积分: 灯泡 -1 , 经验 -1


作者: 板蓝根    时间: 2022-3-23 12:51
试一下这个,使用方法 https://wiki.t-firefly.com/zh_CN ... /export_dev_sf.html

ff_export_rootfs_buildroot.tar

933.53 KB, 下载次数: 27, 下载积分: 灯泡 -1 , 经验 -1


作者: lilin    时间: 2022-3-28 21:12
sudo apt install fireflydev
您好以上命令报错,firefly的源是什么?或者有直接安装好环境的docker么?
作者: lilin    时间: 2022-3-29 10:01
是板子里执行
sudo apt install fireflydev么?

我rv1126板子debian系统的源是这样
deb http://mirrors.aliyun.com/debian/ buster main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ buster main non-free contrib
deb http://mirrors.aliyun.com/debian-security buster/updates main
deb-src http://mirrors.aliyun.com/debian-security buster/updates main
deb http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ buster-updates main non-free contrib
deb http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib
deb-src http://mirrors.aliyun.com/debian/ buster-backports main non-free contrib


作者: lilin    时间: 2022-3-29 10:21


另外,我使用工具导出镜像为什么不可以?
作者: 板蓝根    时间: 2022-3-29 15:45
用我给你的包,里面有二进制文件不需要 apt 安装了
作者: lilin    时间: 2022-3-29 19:09


感谢回复,用您的方法导出镜像,并烧写后
1、rootfs分区大小是 0x00400000块,为2GB,我的镜像只有1.1G,从df命令看root-ro变成了100%,会不会有问题?
2、有办法把userdata也导出来么?


作者: 板蓝根    时间: 2022-3-30 11:39
没关系的 ,现在是使用 overlayfs,根文件系统只是只读不会被真正修改,所有修改都会记录在 userdata 上,所以只要 userdata 有空间就可以了,建议你升级 rootfs 的时候同时升级一下 misc 擦除一下 userdata 分区
作者: 板蓝根    时间: 2022-3-30 11:41
建议你如果想打包进入固件的文件不要放入 userdata,因为每次烧写第一次开机都会擦除 userdata 的,所以即使放进去了开机也会被擦除掉
作者: music1913    时间: 2022-6-16 16:27
板蓝根 发表于 2022-3-29 15:45
用我给你的包,里面有二进制文件不需要 apt 安装了

我直接做备份得到空间不足的错误:
  1. sudo ./ff_export_rootfs /media/firefly/AC91-C4AE/
  2. MEDIA FREE SPACE SIZE    5663    MBytes
  3. EXPORT IMAGE SIZE        8566    MBytes
  4. No enough free space on
复制代码


所以我尝试 mount 一个64G的U盘,但总是不成功,请帮忙看看哦:
这是Debian 10上的df -h:
  1. Filesystem      Size  Used Avail Use% Mounted on
  2. udev            870M     0  870M   0% /dev
  3. tmpfs           175M  5.0M  170M   3% /run
  4. /dev/mmcblk0p6  981M  830M   83M  91% /root-ro
  5. /dev/mmcblk0p8   13G  6.6G  5.6G  55% /userdata
  6. overlayroot      13G  6.6G  5.6G  55% /
  7. tmpfs           875M     0  875M   0% /dev/shm
  8. tmpfs           5.0M     0  5.0M   0% /run/lock
  9. tmpfs           875M     0  875M   0% /sys/fs/cgroup
  10. tmpfs           175M     0  175M   0% /run/user/0
  11. tmpfs           175M     0  175M   0% /run/user/1000
复制代码


然后插上U盘后 lsblk:
  1. NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
  2. sda            8:0    1 58.7G  0 disk
  3. `-sda1         8:1    1 58.7G  0 part
  4. mmcblk0      179:0    0 14.6G  0 disk
  5. |-mmcblk0p1  179:1    0    4M  0 part
  6. |-mmcblk0p2  179:2    0    4M  0 part
  7. |-mmcblk0p3  179:3    0   32M  0 part
  8. |-mmcblk0p4  179:4    0   32M  0 part
  9. |-mmcblk0p5  179:5    0   32M  0 part
  10. |-mmcblk0p6  179:6    0    2G  0 part /root-ro
  11. |-mmcblk0p7  179:7    0  192M  0 part
  12. `-mmcblk0p8  179:8    0 12.3G  0 part /userdata
  13. mmcblk0boot0 179:32   0    4M  1 disk
  14. mmcblk0boot1 179:64   0    4M  1 disk
复制代码


安装 ntfs-3g:
  1. sudo apt install ntfs-3g
复制代码


进行mount:
  1. sudo mount /dev/sda1 -t ntfs /media/usb_drive
  2. modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.19.111/modules.dep.bin'
  3. modprobe: FATAL: Module fuse not found in directory /lib/modules/4.19.111
  4. ntfs-3g-mount: fuse device is missing, try 'modprobe fuse' as root
  5. firefly@firefly:~/Download/ff_export_rootfs_buildroot$ sudo modprobe fuse
  6. modprobe: ERROR: ../libkmod/libkmod.c:586 kmod_search_moddep() could not open moddep file '/lib/modules/4.19.111/modules.dep.bin'
复制代码


请问这个错误如何处理呢?
作者: 板蓝根    时间: 2022-6-16 18:55
music1913 发表于 2022-6-16 16:27
我直接做备份得到空间不足的错误:

格式化成 ext4 再,测试
作者: music1913    时间: 2022-6-17 12:34
板蓝根 发表于 2022-6-16 18:55
格式化成 ext4 再,测试

按您的建议格式化 USB Drive 到  ext4 格式后, mount都成功了。
接下来,这是我的 export 结果:

  1. firefly@firefly:~/Download/ff_export_rootfs_buildroot$ sudo ./ff_export_rootfs /media/usb_drive/
  2.     MEDIA FREE SPACE SIZE    55975   MBytes
  3.     EXPORT IMAGE SIZE        8568    MBytes
  4.     find: '/proc/896/task/896/net': Invalid argument
  5.     find: '/proc/896/net': Invalid argument
  6.     find: '/proc/936/task/936/net': Invalid argument
  7.     find: '/proc/936/net': Invalid argument
  8.     find: '/proc/1139/task/1139/net': Invalid argument
  9.     find: '/proc/1139/net': Invalid argument
  10.     BLOCK_COUNT 9290489
  11.     INODE_COUNT 169877
  12.     sync...
  13.     sync finish
  14.     Export rootfs to /media/usb_drive//Firefly_ext4_202206170232.img Success
复制代码


可见生成 .img 文件大小有9G,在进行 e2fsck 和 resize2fs 后,仍然有7G。

然后尝试进行 repack, 首先拷贝官方的Debian 10镜像文件 AIO-RV1126(1109)-JD4\Debian10\debian10_2021_0429_1902\debian10\rootfs.img 并重新命名为 update.img 再放到 Ubuntu PC 下运行 unpack,但遇到错误:

  1. xxxx@DESKTOP-9NG0VFK:~/Downloads/firefly-rk3399-linux-repack$ sudo ./unpack.sh
  2. start to unpack update.img...
  3. ********RKImageMaker ver 1.66********
  4. Unpacking image, please wait...
  5. Error:Check update.img failed!
  6. Press any key to quit:
复制代码



问题1:
,我在 Debian 10 中就是安装了 rknn_toolkit_lite, 以及一些 Python package,想象中用不了太多空间。请问压缩后的文件大小还有 7G 正常吗?

问题2:
unpack.sh 出错是什么原因呢?
作者: 板蓝根    时间: 2022-6-21 11:26
1. 这个可以自行检查一下大文件,可能是一些缓存或者其他无用文件没有清理掉 ,导出前最好清理一下文件系统。

2. unpack 日志输出已经很明显了,没有找到 update.img 你要把需要解包的 img rename 成 update.img 才可以
作者: music1913    时间: 2022-6-21 13:01
板蓝根 发表于 2022-6-21 11:26
1. 这个可以自行检查一下大文件,可能是一些缓存或者其他无用文件没有清理掉 ,导出前最好清理一下文件系统 ...

关于问题1:
请问如何“清理一下文件系统”呢?有建议的方法吗。

关于问题2:
这是我的文件夹结构:
  1. shawn@DESKTOP-9NG0VFK:~/Downloads/firefly-rk3399-linux-repack$ ls -l
  2. total 1055216
  3. drwxr-xr-x 2 shawn shawn       4096 Jun 17 12:21 bin
  4. drwxr-xr-x 2 shawn shawn       4096 Jun 17 12:19 output
  5. -rwxr-xr-x 1 shawn shawn       2084 Oct 20  2020 pack.sh
  6. -rw-r--r-- 1 shawn shawn        697 Jun  2  2020 Readme.md
  7. -rwxr-xr-x 1 shawn shawn        480 Jun  3  2019 unpack.sh
  8. -rw-r--r-- 1 shawn shawn 1080516608 Apr 29  2021 update.img
复制代码

可以看到 update.img 文件是在里面的,而且报错消息是:
Unpacking image, please wait...
Error:Check update.img failed!   

而如果该文件不存在路径下的话,报错应该是:
start to unpack update.img...
Error:No found update.img!

作者: 板蓝根    时间: 2022-6-21 14:31
unpack 是解包完整 镜像,而不是 rootfs.img
作者: music1913    时间: 2022-6-21 14:53
本帖最后由 music1913 于 2022-6-21 14:56 编辑
板蓝根 发表于 2022-6-21 14:31
unpack 是解包完整 镜像,而不是 rootfs.img

在 firefly 的官方云盘中,可供下载的关于 debian 10 的文件包内容如下:

AIO-RV1126(1109)-JD4\Debian10\debian10_2021_0429_1902\debian10\



而我在通过 RK_Dev_Tool 进行刷机时,实际上是先将上述包与路径 AIO-RV1126(1109)-JD4\Buildroot\AIO-RV1126_RV1109-JD4_IPC_2021_1206_1919\ 下的固件包先进行了合并,然后再整体刷入主板的,所以最终的刷入主板的固件包是这样:


请问我应该如何根据上述文件内容来生成 firefly-rk3399-linux-repack工具 所需要的 update.img 文件呢?



作者: 板蓝根    时间: 2022-6-21 18:27
不明白你的需求 。

你如果要跑 unpack 解包的话,如你的第二张图,所有固件都解包好了呀,不需要再解包。如果你要生成  update.img 应该是要打包才对,但是你打包  update.img 的目的为了  解包?
作者: music1913    时间: 2022-6-21 19:26
本帖最后由 music1913 于 2022-6-21 20:27 编辑
板蓝根 发表于 2022-6-21 18:27
不明白你的需求 。

你如果要跑 unpack 解包的话,如你的第二张图,所有固件都解包好了呀,不需要再解包 ...

是这样的,我收到 firefly 的 CORE-1126-JD4主板后,根据官方文档,依以下的步骤,给主板安装好了 官方Debian10 系统:


======================安装官方Debian10======================================
在 firefly 的官方云盘中,可供下载的关于 debian 10 的文件包内容如下:

AIO-RV1126(1109)-JD4\Debian10\debian10_2021_0429_1902\debian10\



而我在通过 RK_Dev_Tool 进行刷机时,实际上是先将上述包与路径 AIO-RV1126(1109)-JD4\Buildroot\AIO-RV1126_RV1109-JD4_IPC_2021_1206_1919\ 下的固件包先进行了合并,然后再整体刷入主板的,所以最终的刷入主板的固件包是这样:

========================安装官方Debian10=================================================


现在,在正常运行的 官方Debian10 系统中,我安装好了私有的应用程序(包括Python包,Python程序,各类配置文件等等),现在希望将 此时的 定制Debian10 系统重新打包成一个固包,以方便分发给其它人,以批量安装到(通过 RK_Dev_Tool)到其它板子中。



我现在已经将现在安装完我自己程序的定制Debian10 系统 已经export出来了(1个7G大小的文件名为Firefly_ext4_202206170232.img的文件),请帮忙解释一下,在我的需求下, unpack 和 repack 都是针对什么文件进行呢?

作者: 板蓝根    时间: 2022-6-22 14:17
repack 指把图片中的文件 ,打包成一个完整 update.img , unpack 指把 update.img  解包成图片这些文件。  无论是哪种方式 rkdev tool 都可以进行 烧写
作者: 板蓝根    时间: 2022-6-22 14:18
你导出的只是 rootfs.img ,也 就是 debian10文件系统
作者: music1913    时间: 2022-6-22 15:22
板蓝根 发表于 2022-6-22 14:18
你导出的只是 rootfs.img ,也 就是 debian10文件系统

重新开了一个问题,还请帮忙: https://dev.t-firefly.com/thread-123755-1-1.html
作者: music1913    时间: 2022-6-27 09:29
板蓝根 发表于 2022-6-22 14:18
你导出的只是 rootfs.img ,也 就是 debian10文件系统

还请帮忙看下新帖子:https://dev.t-firefly.com/thread-123755-1-1.html   还请帮忙提供一下详细的步骤,关于如何打包 rv1126 jd4 上的debain 10的重新打包和刷机方法呢
作者: music1913    时间: 2022-6-27 09:44
lilin 发表于 2022-3-29 19:09
感谢回复,用您的方法导出镜像,并烧写后
1、rootfs分区大小是 0x00400000块,为2GB,我的镜像只有1.1 ...

请教:
并烧写后

具体是如何进行的呢?
我拿到板子的最初始,是通过写入以下的官方Debian10固件(多个)文件:




进入板子的Debian10后,我安装了一些我自己的应用程序等,再导出后得到一个 Firefly_ext4_202206240234.img 的文件,而接下来如何分发和再次刷入此新打包的文件到其它板子上呢?





欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1