在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进度,有知道的大佬欢迎留言。