【全志T113-S3_100ask】3-自动烧录系统脚本

背景

在Ubuntu下进行了镜像img的制作,需要向sd卡进行镜像的烧录,但是过程繁琐。 一是将带系统的sd卡插进电脑,因为存在多个分区,一次性弹出多个窗口。

二是需要将img移动到window下,然后通过 Win32DiskImager.exe 进行烧写。 三是在烧录前经常提示拒绝访问。 我通常的解决办法是到磁盘管理器将sd卡复原 但是这数量有点多啊,每次烧录都复原太麻烦了吧。 官方提供的 PhoenixCard.exe 有恢复卡的选项,但是每次都要点击两次才能完全恢复。 四是烧写完还会给我打开若干个窗口。。。。。

总上所述,既然镜像系统在linux下,为什么不通过Ubuntu向sd卡烧录系统呢?于是研究了linux下的dd命令。

编写烧写脚本

1、查看U盘挂载在哪

root@znh-ubuntu:~# fdisk -l
......
Disk /dev/sdc:29.7 GiB,31914983424 字节,62333952 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
磁盘标识符:EAEF2A25-B105-4441-BF9F-A904F3B16E16

设备         起点    末尾   扇区  大小 类型
/dev/sdc1   35392   39487   4096    2M Linux 文件系统
/dev/sdc2   39488   39743    256  128K Linux 文件系统
/dev/sdc3   39744   39999    256  128K Linux 文件系统
/dev/sdc4   40000  105535  65536   32M Linux 文件系统
/dev/sdc5  105536  629823 524288  256M Linux 文件系统
/dev/sdc6  629824 1154111 524288  256M Linux 文件系统

结论:u盘挂载在 /dev/sdc下

2、格式化前先取消挂载

sudo umount /dev/sdc*

3、格式化(合并)分区

sudo mkfs.vfat /dev/sdc -I

4、烧写系统 替换自己的 img 路径

sudo dd if=/disk/buildroot-100ask_t113-pro/buildroot/output/images/100ask-t113-pro_sdcard.img of=/dev/sdc bs=4M status=progress

一键脚本

writeImage.sh

#/bin/sh
echo "执行一键烧写系统脚本"

echo "取消分区挂载"
sudo umount /dev/sdc*

echo "格式化分区"
sudo mkfs.vfat /dev/sdc -I

echo "烧写系统"
echo "path = /disk/buildroot-100ask_t113-pro/buildroot/output/images/100ask-t113-pro_sdcard.img"
sudo dd if=/disk/buildroot-100ask_t113-pro/buildroot/output/images/100ask-t113-pro_sdcard.img of=/dev/sdc bs=4M status=progress

echo "结束烧录"

效果:

root@znh-ubuntu:~# ./writeImage.sh
执行一键烧写系统脚本
取消分区挂载
umount: /dev/sdc: not mounted.
umount: /dev/sdc1: not mounted.
umount: /dev/sdc2: not mounted.
umount: /dev/sdc3: not mounted.
umount: /dev/sdc4: not mounted.
umount: /dev/sdc5: not mounted.
umount: /dev/sdc6: not mounted.
格式化分区
mkfs.fat 4.1 (2017-01-24)
attribute "partition" not found
烧写系统
path = /disk/buildroot-100ask_t113-pro/buildroot/output/images/100ask-t113-pro_sdcard.img
553648128 bytes (554 MB, 528 MiB) copied, 1 s, 552 MB/s
记录了140+1 的读入
记录了140+1 的写出
590925824 bytes (591 MB, 564 MiB) copied, 68.5244 s, 8.6 MB/s
结束烧录
root@znh-ubuntu:~#

但是不会输出dd烧写过程的j进度,有知道的大佬欢迎留言。

经验分享 程序员 微信小程序 职场和发展