上一篇讲了在板子上用Systemtap 生成火焰图和如何用systemtap调试内核崩溃。
之前讲的过程板子里缺的内容都是通过PC拷贝到板子上的。
今天补充讲一下如何重新制作文件系统和整个升级包。
你会说野火文档里有啊,你说了这句话,那就说明你还不知道“你所不知道的那些细节”。
基本的操作参考野火文档:修改rootfs.img镜像内部的文件 — [野火]嵌入式Linux镜像构建与部署——基于LubanCat-RK系列板卡 文档
先说一下我过程总结的一些问题:
1. 原生的rootfs.img boot.img 容量太小,拷贝不了大文件进去。
2. 如何制作deb包
3. 如何重新分区。
4. 一些怪异问题。
问题归纳解决记录:
1. 原生的rootfs.img boot.img 容量太小,拷贝不了大文件进去。
需要对原来的rootfs.img boot.img扩容
拿rootfs.img为例:
dd if=/dev/zero bs=2M count=1024 >> rootfs.img
sudo losetup -f rootfs.img 挂载 查看
losetup 查看挂载点
sudo e2fsck -f /dev/loop12
sudo resize2fs /dev/loop12
sudo losetup -d /dev/loop12 卸载
=============================
2. 如何制作deb包
在目录 tools/linux/Linux_Pack_Firmware/rockdev/output/Image/rootfs/kerneldeb
sudo dpkg -x linux-headers-5.10.160_5.10.160-2_arm64.deb header
sudo mkdir header/DEBIAN
sudo touch header/DEBIAN/control
sudo vim header/DEBIAN/control
control文件内容:
===========================
Package: linux-header
Version: 1.0
Architecture: arm64
Maintainer: mm
Priority: optional
Description: header
============================
sudo rm linux-headers-5.10.160_5.10.160-2_arm64.deb
sudo dpkg-deb -b -Zxz header linux-headers-5.10.160_5.10.160-2_arm64.deb
注意:ubuntu默认的压缩方式是 zstd, 鲁班猫4解压不了。需要用xz压缩。
3. 如何重新分区。
分区信息在 parameter.txt
CMDLINE: mtdparts=rk29xxnand:0x00002000@0x00004000(uboot),0x00240000@0x00006000(boot:bootable),-@0x00246000(rootfs:grow)
@后面是地址,前面是大小,注意这里就有细节了:uboot明明是4M,怎么才0x2000?(想想这是EMMC,不是norflash哦。是要*512B的哦)
用mkupdate.sh重新制作img。
4. 一些怪异问题。
1) 我明明把我自己的Image替换了boot.img里的Image-5.10.160,怎么烧写完,启动后还是以前的内核?
貌似启动后,linux-image-5.10.160_5.10.160-2_arm64.deb里的Image-5.10.160会替换我的Image。不知道啥原因。第一次启动还是我自己的Image,然后异常启动了一次,就覆盖了。
2) linux-headers-5.10.160_5.10.160-2_arm64.deb,搞了我好久,现象是:/usr/src/linux-headers-5.10.160目录总是没生成。你要注意了,一定是linux-headers-5.10.160_5.10.160-2_arm64.deb没搞好。
我把之前我需要的一些文件拷贝到rootfs.img, boot.img,然后重新生成update.img。
烧写板子,测试了下stap,完美运行成功。
标签:扩容,img,sudo,鲁班,文件系统,5.10,linux,160,rootfs From: https://blog.csdn.net/weixin_44176350/article/details/136880074