我在 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
。
其他问题里有描述: