我正在尝试将 FreeBSD 安装克隆到新硬盘驱动器上,需要挂载它,然后找到挂载点才能继续进行克隆过程。
我要克隆到的内部驱动器当前具有 Windows 10 安装和我想要克隆的不太优化的 FreeBSD 安装。
我很高兴为 FreeBSD 使用当前的 UFS 分区方案。
我将从一个实时的 FreeBSD USB 记忆棒启动,以便运行适当的命令。我遇到的问题是我要从中克隆的磁盘是使用 ZFS 分区的,我无法弄清楚如何挂载它以及如何找到挂载点。该磁盘使用 USB-SATA 适配器连接到我的计算机。
我将假设您的“源”安装完全在 ZFS 上,并且直接从 ZFS 池引导。
由于您要在两种不同的文件系统类型之间进行克隆,因此您可能需要使用类似的工具
rsync
来完成此操作。您将在一个挂载点挂载源层次结构(您的 ZFS 池),并在不同的挂载点挂载目标层次结构(一个或多个 UFS 文件系统)。最后,您将使用rsync
将源层次结构复制到目标。从阅读
zpool
手册页开始。zpool
有许多子命令,每个子命令都有自己的手册页。对于初学者,请注意以下zpool import
命令:并参考
man zpool-import
:请注意,参数是可选的。您可能不需要它们。明智的做法是从 USB 记忆棒启动来完成这项工作。从 USB 记忆棒启动后,
zpool import
将显示可供您使用的池。首先验证您的源 ZFS 池,我将tank
在本示例中引用它。挂载“外部”ZFS 池时要小心——与挂载它们的系统的操作没有直接关系的池。很容易无意中将外部 ZFS 池或文件系统挂载到正在运行的系统文件系统的顶部,如果不重新启动,该操作可能不可逆。
一旦您确定您的源 ZFS 池可供您使用,您就可以挂载源 (ZFS) 和目标 (UFS) 文件系统并开始了。
挂载源 ZFS 文件系统
再次来自
man zpool-import
:zpool import -R /mnt tank
允许您将池的整个 ZFS 层次结构tank
挂载在不同的挂载点下,在本例中为/mnt
. 将源池也保持为只读可能是个好主意。命令将以只读模式挂载您的源池,
/mnt
然后列出存在的各个 ZFS 文件系统以及已挂载的文件系统。您可能会看到以下消息:如果发生这种情况,那么正如它所说,只需将
-f
选项添加到您的zpool import
命令中:这就是你的源代码树。
挂载目标文件系统
我将
/mnt.new
用作您的目标文件系统的挂载点,您说它可能是 UFS。请注意,如果您将使用非 ZFS 文件系统作为/mnt.new
结构,则需要在您将使用的每个磁盘分区( 、 等)上运行“newfs/dev/ada0p1
”/dev/ada0p2
。与往常一样,请确保您知道哪个设备是哪个设备,并且确保它们是正确的。使用 使文件系统保持原始状态后
newfs
,挂载将成为您的/
文件系统的分区,/mnt.new
并创建任何目录,作为您的 UFS 层次结构的下一级挂载点。然后挂载下一级磁盘分区,每个分区都挂载在正确的位置。例如,如果您的新 UFS 文件系统根目录是 /dev/ada0p1,/usr
在 /dev/ada0p2上,/usr/home
在 /dev/ada0p3 上,那么您需要:请注意,在完成对
/mnt.new
挂载点的克隆后,您同样需要编辑/mnt.new/etc/fstab
并确保它正确挂载包含文件系统的磁盘分区。这是基本的 UFS 文件系统管理,所以我不会更详细地介绍。
将您的源层次结构 Rsync 到目标
一旦您将源 ZFS 树安装在
/mnt
并安装在目标 UFS 树下,/mnt.new
您就可以简单地将文件从一个复制到另一个。rsync
是一个很好的工具。尾部的斜线
/mnt/
很重要,包含在/mnt.new/
“团结一致”中。给定的命令将在复制时列出每个文件名。如果您不想看到该详细信息,请v
从命令中省略 。复制文件后,您仍然需要进行一些手动更改。如前所述,您将需要检查
/mnt.new/etc/fstab
并进行所需的任何更改,以确保您的 UFS 文件系统在新系统启动时正确挂载。您还应该查看/mnt.new/etc/rc.conf
以注释掉类似的行zfs_enable='yes'
以及类似的条目/mnt.new/boot/loader.conf
。卸载源和目标层次结构并重新启动
当您认为新系统已准备好尝试时,请导出您的源 ZFS 池:
并从以下位置卸载您的 UFS 设备
/mnt.new
:现在您可以交叉手指并重新启动到 UFS 驱动器。将 USB 记忆棒放在手边,以便在您的 UFS 磁盘在第一次尝试时无法启动时进行故障排除。