简介
仍然强调所有的测试都是来自树莓派3B+, 并使用手头上的绿联读卡器进行测试;
实现方案:
- 如 《树莓派镜像安装 + 设置 + 镜像批量化操作 - USB boot (二)》中所写, 可以使用树莓派USB挂载方式, 编写自动化脚本, 当有对应的设备出现的时候,格式化 + 烧写镜像;
- windows上监控读卡器设备
- 遍历系统设备, 选择读卡器设备, 并定时获取设备信息;
- 当设备有了大小之后, 开始启动自动烧写流程;
- 烧写流程为 ( 格式化成fat32 + 烧写镜像 + 弹出磁盘)
- 回到2), 继续监听读卡器
本文选用方案 2, 详细细节正在验证中…
使用到的一些指令与代码段
格式化
Windows系统磁盘操作指令
用于清除SD Card中存在的多个分区,格式化前做准备
1. "diskpart":此命令启动DiskPart实用程序,允许您管理磁盘、分区和卷。
2. "select disk "+nr:此命令选择由变量"nr"指定的磁盘。"+nr"可能是用于磁盘编号的占位符,您需要将其替换为实际的磁盘编号。
3. "clean":此命令从所选磁盘中移除所有分区和卷,有效地清理磁盘并准备进行进一步操作。
4. "create partition primary":此命令在所选磁盘上创建一个新的主分区。主分区是用于存储数据或安装操作系统的基本分区。
5. "select partition 1":此命令选择所选磁盘上的第一个分区。数字"1"代表分区号,如果需要,您可以更改它以选择不同的分区。
6. "set id=0e":此命令将所选分区的分区ID设置为"0e"。"0e" ID通常用于FAT32文件系统分区。
7. "assign":此命令将下一个可用的驱动器字母分配给所选分区。这样可以使用分配的驱动器字母访问该分区。
这些命令一起执行磁盘清理、分区创建和配置操作。
使用windows指令去掉多余的分区
正则表达式过滤出设备号
std::regex windriveregex("\\\\\\\\.\\\\PHYSICALDRIVE([0-9]+)", std::regex_constants::icase);
/* _device: \\.\PhysicalDrive2; nr : 2 */
std::regex_match(_device.constData(), m, windriveregex);
QByteArray nr = QByteArray::fromStdString(m[1]);
qDebug() << "Formatting Windows drive #" << nr << "(" << _device << ")";
QProcess proc;
QByteArray diskpartCmds =
"select disk "+nr+"\r\n"
"clean\r\n"
"create partition primary\r\n"
"select partition 1\r\n"
"set id=0e\r\n"
"assign\r\n";
proc.start("diskpart", QStringList());
proc.waitForStarted();
proc.write(diskpartCmds);
proc.closeWriteChannel();
proc.waitForFinished();
fat32格式化工具
在网上下载一些可以终端执行的fat32格式化工具, 并进行进程调用, 如下
下载后fat32format.exe -y F: # 其中F:是盘符即可对SD Card或磁盘进行格式化成fat32的格式了
fat32format工具文章来源:https://www.toymoban.com/news/detail-620257.html
其他
树莓派镜像安装 + 设置 + 镜像批量化操作-无需显示器(一)
树莓派镜像安装 + 设置 + 镜像批量化操作 - USB boot (二)文章来源地址https://www.toymoban.com/news/detail-620257.html
到了这里,关于树莓派镜像安装 + 设置 + 镜像批量化操作 - 自动化烧写SD Card (三)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!