不开源开发板定制固件方法

针对一些底层和内核SDK不开源,只提供镜像的开发板,日常学习需要自定义固件的话(比如修改启动参数和脚本,运行自己的程序等等),这里提供Linux下一个类似windows ghost克隆镜像的方法,仅供学习交流使用

首先看下磁盘上的所有分区的尺寸和布局情况,运行命令:

# fdisk -u -l

结果如下(-u,让start和end中数字的单位是512字节,也就是一个sector扇区的大小):

这里使用命令:

# dd if=/dev/sdb > /home/xxx.img

就可以直接备份整个SD卡,但如果SD卡有16G,备份出来的也会有16G,就算用gzip压缩也会太大,所以就要根据实际情况去备份镜像,像这边/dev/sdb5分区虽然有3.4G,但是未使用,所以优化下,使用下列命令重新备份(count=/dev/sdb4的End数+1):

# dd bs=512 count=750080 if=/dev/sdb of=/home/xxx.img

 注:如果/dev/sdb5有部分使用,可以先用df --block-size=512来看使用多少,加到count上即可

 新备份的镜像只有366MB,如果觉得还是太大,推荐加入gzip参数压缩,详细方法:

# dd bs=512 count=840032 if=/dev/sdb | gzip -9 > /home/xxx.img.gz

实测直接在板卡上进行镜像克隆也是成功的,但是耗时较长。OK,镜像备份好了,如何烧写到SD卡呢?——可以使用Win32DiskImager(或balenaEtcher)工具(网上可以直接免费下载)

 烧录到SD卡再放到板卡上就可以正常启动加载,到这里就结束了。

=========================================================================

进阶:

  •  恢复镜像
# dd if=xxx.img of=/dev/sda of=/dev/mmcblk0
  • 恢复压缩镜像
# gzip -c -d xxx.img.gz | dd of=/dev/mmcblk0
  • 查看进度
# watch -n 5 killall -USR1 dd #另开一个终端执行

使用watch查看进度后原进程会多了如下打印(默认无打印):

 有需要可自行提取相关字段做成百分比进度条展示。

常见问题

1.从4G SD卡备份的镜像恢复到更大的SD卡中,可见空间也只有原来4G的大小:

解决方案1)通过parted命令来调整磁盘空间:

其中#resizepart 5 -1表示将第5个分区充满剩余的空间

如果遇到Warning: Partition /dev/sdb5 is being used. Are you sure you want to continue?先umount卸载再操作

2)使用resize2fs扩大文件系统:

# resize2fs /dev/sdb

注:resize2fs只适用于ext2/ext3/ext4 文件系统;

如果是xfs格式的,所以需要使用xfs_growfs命令;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值