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

RK3588使用笔记:导出做好的文件系统

一、前言

初始镜像一般都比较空,当费劲八嘞的装了一堆环境之后,得知设备还要在做n套,想想每一套都要无穷的调试配置和在线更新一堆安装包,是不是脑壳痛,所以导出文件系统的功能就有需求了,本文介绍如何导出配置好的文件系统rootfs.img,可用于重新放在源码中打包

二、环境

RK3588(linux5.10.66+debian/ubuntu/麒麟是桌面文件系统)

调试笔记本window10,安装常用工具winscp,xshell,finalshell,secureRTP等等

VMware17+Ubuntu20.04源码开发环境(这里就依赖于各个硬件平台的厂家提供资料了)

三、正文

确保笔记本电脑与目标设备网口连接,确保ssh可正常登录

本地电脑IP:192.168.1.21

目标设备IP:192.168.1.101

将rsync软件拷贝到目标设备/usr/bin路径下,并赋予权限。执行rsync,确保没有问题

(rsync方式不好使,总是环境不匹配,glibc版本不匹配,厂家提供的rsync要求目标机环境为glibc2.33和2.34版本,实际麒麟系统glibc是2.31版本)

大佬可以自行AI或者使用rsync方法,这里我感觉不好用,还是使用通用的压缩包方法

目标设备要有root账户,密码我设置为123

之后打开虚拟机,必须用虚拟机,在window下无法执行一些命令。

确保虚拟机网络能够ping通目标设备IP,虚拟机使用网络桥接模式与笔记本电脑相连

使用命令:

ssh root@192.168.1.101 "tar czf - --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run /" > rootfs.tar.gz

打包时排除更多目录(不可行,会少拷贝一些环境,导致redis功能不正常)

ssh root@192.168.1.101 "tar czf - --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run --exclude=/tmp --exclude=/var/cache --exclude=/var/log /" > rootfs.tar.gz

输入yes,在输入密码123,之后就是漫长的等待,压缩并传输回打包的文件系统信息

ls -lh rootfs.tar.gz  # 查看文件大小(通常几百MB到几GB)

tar -tzf rootfs.tar.gz | head -n 10  # 查看压缩包内容(前10个文件)如果输出正常(如显示 /bin、/etc 等关键目录),则打包成功。

继续制作 update.img

(标黄这些应该放在传输文件之前)

# 创建空白镜像(假设6GB)(这里可以调整看之前的文件系统是占用多少G)

在目标设备中使用df -Th查看大概占用空间

在目标设备上清理无用文件(如缓存、日志):

sudo apt clean          # 清理 apt 缓存

sudo journalctl --vacuum-size=50M  # 限制日志大小

rm -rf /var/log/*.gz   # 删除旧日志

在目标设备上运行以下命令,获取 排除虚拟文件系统后的真实占用

sudo du -shx / 2>/dev/null

最后预留10%~20%空间,我是5.4G,最终申请6.5G

dd if=/dev/zero of=rk3588.img bs=1M count=6500

# 格式化为 ext4

sudo mkfs.ext4 -F -L linuxroot rk3588.img

# 挂载并解压文件系统

mkdir ubuntu-mount

sudo mount rk3588.img ubuntu-mount

sudo tar -xzf rootfs.tar.gz -C ubuntu-mount

# 替换附件文件(如 rc.local、Init.sh)

sudo cp rc.local ubuntu-mount/etc/

sudo cp Init.sh ubuntu-mount/etc/init.d/

sudo chmod +x ubuntu-mount/etc/rc.local ubuntu-mount/etc/init.d/Init.sh

# 卸载并检查镜像

sudo umount ubuntu-mount

sudo e2fsck -p -f rk3588.img  #检查并修复rk3588.img镜像的文件系统

sudo resize2fs -M rk3588.img  #精简rk3588.img镜像文件的大小

完成后,用 ls -lh rk3588.img 查看实际大小

最终生成了一个rk3588.img的文件系统

之后可以放在源码包中,重新整体编译打包成updata.img文件,也可以单独烧录更新文件系统,建议前者方法

相关问题说明:

1、用此方法烧录镜像硬盘挂载点应选择/dev/sda5的方式去切换挂载点,不能使用硬盘UUID了,要不然每一个设备烧录镜像之后都要重新修改fatab硬盘挂载点文件

2、之后不需要的自启程序和服务要关掉,否则会占用内存

3、之后桌面显示还是使用uboot控制,强制显示基本也不接mipi,有的不接edp导致显示异常,镜像固定,通过uboot动态配置灵活一些

四、结语

学习了此方法,节省了很多调试和配置时间,开心!

相关文章:

  • Pytorch 张量操作
  • windowsmacOs安装minio
  • RAG系统实战:当检索为空时,如何实现生成模块的优雅降级(Fallback)?
  • 【JAVA】【疑难杂症解决!】org.springframework.transaction.UnexpectedRollbackException:
  • Mybatis-Plus学习笔记
  • Maven安装与配置完整指南
  • 学习记录706@微信小程序+springboot项目 真机测试 WebSocket错误: {errMsg: Invalid HTTP status.}连接不上
  • MySQL(二)
  • Docker使用官方镜像/国内镜像源(阿里云、华为云 安装 MySQL 5.7
  • 智能文档解析专家
  • AI应用案例(1)——智能工牌和会话质检
  • Crawl4AI:专为AI设计的开源网页爬虫工具,释放大语言模型的潜能
  • 解决Luckysheet在线预览编辑Excel、PDF.....无法在同一个界面创建多个luckysheet实列问题
  • javaweb小项目
  • 贡献法(C++)
  • w2ui 水平滚动移动 虚拟列 数据丢失
  • 建筑长明灯、长流水成难题?楼宇自控系统来破局
  • forms实现贪吃蛇
  • Python打包大模型文件以及使用Docker进行运行镜像
  • 六、Linux系统 DRM调试工具modetest
  • 埃尔多安:愿在土耳其促成俄乌领导人会晤
  • 因存在安全隐患,福特公司召回约27.4万辆SUV
  • 沈阳卫健委通报“健康证”办理乱象:涉事医院已被立案查处
  • 最高降价三成,苹果中国iPhone开启大促销,能拉动多少销量?
  • 澎湃思想周报|欧洲胜利日之思;教育监控与学生隐私权争议
  • 马上评丨为护士减负,不妨破除论文“硬指标”