挂载图像

挂载图像

我有一个在 1TB HD 上安装 FreeBSD 的 img(用 dd 制作)。

这次我需要使用较小的磁盘(500GB),当然,如果我尝试仅恢复相同的映像,它将无法工作,但即使我尝试手动调整分区表和 MBR,我的系统也无法启动。

我做了什么:

DDing,我直接去了软盘为了调整MBR结束扇区,然后我使用分手了将分区缩小到正确的边界。

根据我的计算,考虑到分区从扇区 2048 开始,对于 500GB 磁盘,将结束扇区设置为 976771120(总共 976773168)是正确的。

那么新的分区就是2048 -> 976771120,新的MBR也使用这个逻辑。事实上,我可以到达 FreeBSD 启动管理器第一阶段,但随后我陷入了启动提示符(错误 66)。也许我不知道接下来的引导加载程序阶段是如何工作的,可能修复分区方案和 MBR 来使 FreeBSD 引导还不够吗?可能有一些提前读取的conf文件也需要修复?不是我的主要操作系统,所以我正在尝试/错误过程中。谢谢

编辑:添加输出,抱歉图片,但我唯一的选择。不记得真实数据真的很少(<2GB)。

第一个磁盘,500GB 方案(不工作)。第二个磁盘,1TB原始方案(工作)。

我已经可以接受这个并继续我的工作,但我认为了解出了什么问题仍然很有趣。 现在的情况

答案1

首先,您需要一个备份副本,以防出现问题。无论您使用的文件系统是什么,您都需要工具。

首先,您需要一个程序,它可以逻辑地缩小您使用的文件系统中的分区。我之前用 ntfs 和 ext3 做过几次这样的事情,但每个文件系统的想法都是一样的。

我假设您的映像是分区 ( sda1.img) 的映像,如果它是整个磁盘 ( sda.img),则仅“提取”分区或将(整个映像)它放在物理磁盘 (1TB+) 上并对其进行处理。稍后您将把您的工作复制到新的 500GB 磁盘上。原因是您的调整大小程序可能不支持偏移分区,整个磁盘的映像就是这种情况。

your old disk (sda):
+--------+----------------+---...
| mbr... | sda1 (system)  | sda2...
+--------+----------------+---...

1.使用ntfsresize//缩小分区文件系统((在物理磁盘上)/ (在映像中))。这将调整(分区)映像中文件系统的大小tune2fswhatever-fs-resizer/dev/sda1sda1.img

2. 在新的 (500GB) 磁盘 ( ) 上创建新的分区表,/dev/sdb该分区表可以适合调整大小的系统分区以及一些额外的兆​​字节,以便文件系统适合新分区 ( /dev/sdb1)。用fdisk/cfdisk/(g)parted/whatever-you-like那个。记得设为/dev/sdb1可启动。

从技术上讲,人们可以准确计算出您需要多少,但不用担心 - 您的调整器应该能够调整文件系统的大小(在/dev/sdb1)以填充整个分区(稍后再说)。

3. 将调整后的大小复制sda1.img到新目的地/dev/sdb1(使用ddcat什至$ cat sda1.img > /dev/sdb1:)

4. 格式化其他分区/dev/sdb2|3|4...以满足您的需要。

5. 享受你的工作。

答案2

我会用老式的方式解决它。

newfs /dev/ada1s1
mount /dev/ada1s1 /mnt
cd /mnt
dump -0a -f - /dev/ada0s1 | restore -rf -
gpart bootcode -b /boot/mbr -p /boot/boot1 ada1

这将创建一个新的文件系统,安装它并进入目标目录,因为恢复需要在那里进行。它使用经典备份工具(对于 UFS 来说永远不会失败)复制整个文件系统。最后一个命令写入引导代码。

免责声明:请务必验证命令,因为如果某些参数错误,后果当然是毁灭性的!!您需要了解这里正在做什么。

答案3

这对我来说似乎有点受虐狂。

就我个人而言,我会做一个dd备份。然后我会缩小它并确保它在尝试移动它之前工作(收缩->重新启动->检查->最终 dd)。

我假设您的数据少于 500 GB。但您不知道它在磁盘上的结构如何。

那么你曾经使用过sfdiskparted修改过分区吗?但是你做了什么来保护文件系统呢?对分区的简单更改不会对文件系统中的数据进行重新排序,也不会管理被截断的文件系统的布局。

所以你缺少的是处理你的文件系统。在 FreeBSD 上,您通常会使用 UFS 或 ZFS。对于 UFS 你应该看看成长(8)(看在 FreeBSD 上调整 UFS /root 分区的大小)。如果您使用 ZFS,一切都是完全不同的,因为它是卷管理器和文件系统的组合!

因此,为了能够回答您的直接问题,我们需要大量附加信息。然而,关于如何获取数据的隐含问题要容易得多。在新磁盘上设置裸露且可引导的 FreeBSD 安装。然后复制数据。

挂载图像

当您拥有磁盘的 dd 映像后,您可以安装它。要么在不同的系统上执行此操作,要么使用便携式 USB 磁盘/网络驱动器。

/dev/ada0因此,如果您拥有as的完整原始副本ada0.dd- 那么您可以将该映像用作虚拟内存磁盘:

# mdconfig -a -t vnode -u 0 -f /home/realpclaudio/ada0.dd

这将为我们提供/dev/md0您的完整磁盘。

然后你可以检查一切看起来都很好。

# fdisk /dev/md0

这应该看起来与您的旧磁盘完全相同。然后我们可以开始查看数据,但这取决于您的文件系统。

超高速文件系统

我们将UFS文件系统挂载到磁盘上。

# mount -t ufs -o ro /dev/md0s1a /mnt

这很可能是第一个片的根文件系统。如果您还有更多切片,也可以安装它们。

# mount -t ufs -o ro /dev/md0s1e /mnt/var
# mount -t ufs -o ro /dev/md0s1g /mnt/home

ZFS

如果您使用 ZFS,则可以使用 ZFS 工具管理磁盘(请参阅zpool管理

# zpool import -o altroot=/mnt mypool
# zfs list

相关内容