挂载 dd 镜像中的分区
旧系统在重装之前备份到了 dd 镜像,而重装完了之后发现有些文件遗忘在了原先的 EFI 分区。我将在这篇 post 中简单讲述我是怎么将 dd 镜像里的分区挂载到系统并且取回文件的。

旧系统在重装之前备份到了 dd 镜像,而重装完了之后发现有些文件遗忘在了原先的 EFI 分区。我将在这篇 post 中简单讲述我是怎么将 dd 镜像里的分区挂载到系统并且取回文件的。

1. 将 dd 镜像挂载为 loop 设备

我的硬盘镜像文件名为 vagrant.dd,所以我可以使用以下命令将该 dd 镜像挂载为 loop 设备。losetup 命令会自动扫描 dd 镜像中的分区并将其挂载到 /dev/loopX。这里的回显显示所有分区都被挂载到了 /dev/loop0 下。

1
2
$ sudo losetup --partscan --find --show vagrant.dd
/dev/loop0

挂载完成后,我们可以用 lsblk 命令查看新的 loop 设备,加上 -f 开关则可以显示设备的文件系统信息。

1
2
3
4
5
6
$ sudo lsblk -fp /dev/loop0
NAME           FSTYPE      FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINT
/dev/loop0
├─/dev/loop0p1 vfat        FAT32       1396-7EA5
├─/dev/loop0p2 ext2        1.0         c5da8f36-6698-4478-97a8-93101bf44bb8
└─/dev/loop0p3 crypto_LUKS 2           7a3d56b5-20f8-44f2-b1a7-8c858bba342c

2. 挂载文件系统

在挂载完环回设备后,接下来的挂载就和挂载普通文件系统无异了。只需要用 mount 命令将 loop 设备挂载到任意挂载点即可读取。

1
2
3
4
5
$ sudo mount -o ro /dev/loop0p1 ~/boot
$ k ~/boot
total 16
drwxr-xr-x 4 root root 4096 12 Aug    2020   EFI
drwxr-xr-x 2 root root 4096 12 Aug    2020   System Volume Information

screenshot
全流程截图

3. 解除挂载

使用完毕之后,按顺序解除两个挂载即可。

1
2
sudo umount ~/boot
sudo losetup -d /dev/loop0

最后修改于 2021-05-22