如何在没有物理驱动器的情况下在 Linux 中创建 USB 闪存“.bin”映像

如何在没有物理驱动器的情况下在 Linux 中创建 USB 闪存“.bin”映像

我在 Linux 中有一些文件,需要将其复制到多个 SD 卡上在 Windows 中定期(不可启动,但具有文件权限、文件系统ext3)。现在的程序是:我将文件复制到 Linux 下的一个闪存驱动器,然后.bin从该驱动器创建一个映像,并将此 .bin 克隆到 Windows 下的其他 USB 驱动器。文件有时会更改,所以我需要再次创建文件。这个想法是在不使用物理驱动器的情况下.bin创建文件。.bin

tag.bz2有没有虚拟创建 USB 驱动器映像的解决方案?或者有没有在 Windows 下从文件刻录 ext3 USB 闪存驱动器的工具?

答案1

显而易见的解决方案是直接在 Linux 中安装映像并进行更改,但有一个小问题。这些介质的分区方式与硬盘类似。解决方案是从映像中安装正确的分区。

检查图像是否确实已分区:

$ file -k OpenELEC-RPi.arm-4.95.1.img
OpenELEC-RPi.arm-4.95.1.img: x86 boot sector; partition 1: ID=0xc, active, starthead 32, startsector 2048, 262145 sectors; partition 2: ID=0x83, starthead 146, startsector 266240, 65537 sectors

处理图像

将映像中的分区映射到循环设备:

$ sudo kpartx -av OpenELEC-RPi.arm-4.95.1.img
add map loop0p1 (252:3): 0 262145 linear /dev/loop0 2048
add map loop0p2 (252:4): 0 65537 linear /dev/loop0 266240

在 Ubuntu 上kpartx默认情况下未安装。请执行sudo apt-get install kpartx

挂载分区:

$ sudo mount /dev/mapper/loop0p1 /mnt/tmp1

现在在目录中进行更改/mnt/tmp1

卸载分区并删除映射:

$ sudo umount /dev/mapper/loop0p1
$ sudo kpartx -dv OpenELEC-RPi.arm-4.95.1.img
del devmap : loop0p2
del devmap : loop0p1
loop deleted : /dev/loop0

其他选择

如果kpartx不可用,您可以使用例如确定分区偏移量fdisk(它也适用于图像,因此您可以在没有物理驱动器的情况下创建图像。)并使用losetup或映射它们mount -o loop,offset=x,甚至新版本losetup(从 util-linux 2.21 开始)可以使用选项直接映射分区--partscan

其他问题里有描述:

相关内容