Joe*_*e A 9 linux filesystems hard-drive ntfs dd
我创建了一个故障驱动器的图像:
dd if=/dev/sde of=/mnt/image001.dd
Run Code Online (Sandbox Code Playgroud)
该驱动器只有两个分区:
Device Boot Start End Blocks Id System
/dev/sde1 * 1 13 102400 7 HPFS/NTFS
/dev/sde2 13 60802 488282112 7 HPFS/NTFS
Run Code Online (Sandbox Code Playgroud)
如何将映像 (image001.dd) 拆分为两个或三个文件(1:MBR;2:分区 1;3:分区 2)以便我可以在其中安装文件系统?
我发现一个对我不起作用的解决方案是使用split创建许多 512K 文件,然后将cat它们重新组合成三个文件(1:512K、2:105M、3:其余的),但我没有磁盘空间。
历史:
我已经将整个映像复制到一个新驱动器,它可以启动并且大部分工作正常。似乎 FS 在旧的故障驱动器dd上已损坏,并复制了损坏的部分(应该如此),然后我将它们写入新驱动器。我的解决方案是挂载我复制的 FS,然后只复制文件(使用rsync或其他东西),这样希望我不会复制坏的位。
更新 1:我试过dd if=/mnt/image001.dd of=/mnt/image001.part1.dd bs=512 count=204800 skip=1但mount抱怨NTFS signature is missing,所以我认为我没有做对。
Sve*_*ven 17
您根本不需要拆分它。
使用parted以获取有关分区表的详细信息:
parted image001.dd
Run Code Online (Sandbox Code Playgroud)
在parted,用命令切换到字节单位u,然后B。之后,发出命令print。
您将获得如下所示的输出(输出来自实际系统,而不是图像):
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 25165824000B
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
2 1048576B 400556031B 399507456B primary ext4 boot
3 400556032B 21165506559B 20764950528B primary ext4
1 21165506560B 25164775423B 3999268864B primary linux-swap(v1)
Run Code Online (Sandbox Code Playgroud)
您可以使用该Start数字作为环回挂载的偏移量:
mount -o loop,ro,offset=400556032 image001.dd /mnt/rescue
Run Code Online (Sandbox Code Playgroud)
将在/mnt/rescue.
kup*_*son 17
简单地使用kpartx工具要好得多。
usage : kpartx [-a|-d|-l] [-v] wholedisk
-a add partition devmappings
-d del partition devmappings
-l list partitions devmappings that would be added by -a
...
Run Code Online (Sandbox Code Playgroud)
例子:
# kpartx -l whole_disk # only listing
loop0p1 : 0 518144 /dev/loop0 2048
loop0p2 : 0 3674112 /dev/loop0 520192
# kpartx -a whole_disk
# file -sL /dev/mapper/loop0p*
/dev/mapper/loop0p1: Linux/i386 swap file (new style), version 1 (4K pages), size 64767 pages, no label, UUID=e4990860-c87d-4850-9e8d-ecb0a0506516
/dev/mapper/loop0p2: SGI XFS filesystem data (blksz 4096, inosz 256, v2 dirs)
Run Code Online (Sandbox Code Playgroud)
此时我可以挂载/dev/mapper/loop0p2.
卸载后调用kpartx -d whole_disk清理。
| 归档时间: |
|
| 查看次数: |
4839 次 |
| 最近记录: |