首先,我将首先解释我是如何遇到问题的,这将帮助我了解我需要什么。
几个月前,我的笔记本电脑硬盘坏了。我无法快速更换,但第二天我需要那台笔记本电脑,所以我所能做的就是从路由器上拆下 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
选项。