如何在Linux上挂载OpenBSD硬盘镜像?

如何在Linux上挂载OpenBSD硬盘镜像?

首先,我将首先解释我是如何遇到问题的,这将帮助我了解我需要什么。

几个月前,我的笔记本电脑硬盘坏了。我无法快速更换,但第二天我需要那台笔记本电脑,所以我所能做的就是从路由器上拆下 2.5 英寸驱动器。路由器实际上是一台 ATX PC,运行 OpenBSD 4.9。现在,因为我需要它驱动器速度很快,我dd在台式电脑上创建了一个映像,将驱动器放入笔记本电脑并安装了 Fedora。

好吧,现在我的笔记本电脑有了一个替换硬盘,在我开始在要返回路由器的硬盘上安装东西之前,我问自己,如何安装我开始时制作的映像。 。

关键是,我可以全新安装最新的 OpenBSD,然后只使用映像中的配置文件等内容。我知道我现在能做的唯一一件事就是简单地将图像写回磁盘dd。这应该可行,但我也想利用这个机会升级系统。

我尝试在制作映像之前挂载 OpenBSD 分区,但它不起作用,而且我的时间很少(这一晚只有几个小时)。我是否应该将映像写回磁盘,然后尝试挂载它,恢复我需要的文件,然后安装最新的 OpenBSD?

答案1

之所以不能只挂载分区是因为你有一个光盘图像不是图像个人分区。您将需要不同分区的偏移量,并在使用循环和偏移选项安装时使用这些偏移量。

在你的情况下,我会播放图像然后升级,但你没有说明如何将 2.5" 连接到台式计算机,或者你现在将如何执行此操作。如果你要使用 USB,则升级假设图像位于内部 SATA 驱动器上,则播放之前的速度可能会更快(但需要更多工作),因为 USB 2.0 与 SATA 的速度存在差异。升级需要更长的时间。图像的播放(无论是否升级)将花费相同的时间。

如果您想在播放之前升级,请使用parted来查找图像的开头。parted hd.img将为您提供分区号、开始和结束的列表。使用启动信息(例如 12345),您可以在磁盘映像中挂载分区:

mount -o loop,ro,offset=12345 hd.img /mnt/tmp

如果您的桌面无法识别分区类型,您可能还需要指定分区类型。然后,您可以使用该信息更新全新安装,重新安装分区,rw清理分区并将内容写回。我唯一不确定的是这是否会混淆 ATX 板的引导加载程序,但是升级恢复到磁盘的系统也会遇到同样的问题。

答案2

这对我有用:

losetup -r -P /dev/loop1 openbsd.dsk

然而losetup(8)来自:

# losetup --version
losetup from util-linux 2.22.2

并有-P选项:

   -P, --partscan
          force kernel to scan partition table on newly created loop device

我可以看到分区 indmesg(1)和 in /proc

# dmesg
...
[43126.359869]  loop1: p4
 p4: <openbsd: p5 p6 p7 p8 p9 p10 p11 >

# grep -e loop1 /proc/partitions
   7        1  419430400 loop1
 259        0  419424988 loop1p4
 259        1     208845 loop1p5
 259        2     265041 loop1p6
 259        3     160650 loop1p7
 259        4    1052240 loop1p8
 259        5    4192960 loop1p9
 259        6     522112 loop1p10
 259        7  413023104 loop1p11

旧版本losetup(8)不支持-P选项。

相关内容