旧系统在重装之前备份到了 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
|
全流程截图
3. 解除挂载#
使用完毕之后,按顺序解除两个挂载即可。
1
2
|
sudo umount ~/boot
sudo losetup -d /dev/loop0
|