FreeBSDインストールを新しいハードドライブに複製しようとしているが複製プロセスを続行するには、それをインストールしてからマウントポイントを見つけなければなりません。
複製しようとしている内部ドライブには、現在Windows 10がインストールされており、複製する最適化の少ないFreeBSDインストールがあります。
FreeBSDの現在のUFSパーティションスキームを使用してうれしいです。
適切なコマンドを実行するためにライブFreeBSD USBスティックから起動します。私が経験している問題は、複製しようとしているディスクがZFSを使用して分割されていることを示しています。ディスクはUSB-SATAアダプタを使用してマイコンピュータに接続されます。
答え1
私は「ソース」インストールが純粋にZFSにあり、ZFSプールから直接起動すると仮定します。
rsync
2つの異なるファイルシステムタイプを複製しているため、同様のツールを使用してこれを実行できます。あるマウントポイントにソースレイヤー(ZFSプール)をマウントし、別のマウントポイントにターゲットレイヤー(1つ以上のUFSファイルシステム)をマウントします。最後に、をrsync
使用してソース階層をターゲットにコピーします。
まず、マニュアルページをお読みくださいzpool
。 zpool
多くのサブコマンドがあり、それぞれ独自のマニュアルページがあります。まず、次のzpool import
コマンドを参照してください。
zpool-import(8)
Make disks containing ZFS storage pools available for use on the
system.
そして、以下を参照してくださいman zpool-import
:
zpool import [-D] [-d dir|device]…
Lists pools available to import.
パラメーターはオプションです。おそらく必要ありません。これを行うには、USBスティックから起動することをお勧めします。 USBドライブから起動すると、zpool import
利用可能なプールが表示されます。まずtank
、この例で参照するソースZFSプールを確認してください。
# zpool import
pool: tank
id: 11588110742206048524
state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:
tank ONLINE
gpt/zfs-57SCK7S0FVLC ONLINE
gpt/zfs-57SCK7S1FVLC ONLINE
「外部」ZFSプールをマウントするときは注意してください。これらのプールは、マウントされたシステムの動作に直接関連しません。実行中のシステムのファイルシステム上に外部ZFSプールまたはファイルシステムを誤ってマウントしやすく、再起動しないと操作を元に戻すことはできません。
ソースZFSプールが利用可能であることが確認されたら、ソース(ZFS)ファイルとターゲット(UFS)ファイルシステムをマウントして起動できます。
ソースZFSファイルシステムのマウント
Re man zpool-import
:
-R root
Sets the cachefile property to none and the altroot
property to root.
zpool import -R /mnt tank
他のマウントポイントの下にプールのZFSレイヤ全体をマウントできます。tank
この場合、/mnt
ソースプールも読み取り専用にすることをお勧めします。注文する
# zpool import -o readonly=on -R /mnt tank
# zfs list -r tank
# zfs mount
ソースプールは読み取り専用モードでマウントされ、/mnt
存在してマウントされた各ZFSファイルシステムが一覧表示されます。次のメッセージが表示されることがあります。
cannot import 'tank': pool was previously in use from another system.
Last accessed by <unknown> (hostid=0) at Tue Apr 19 03:29:13 2022
The pool can be imported, use 'zpool import -f' to import the pool.
これが発生した場合は、指示どおりにコマンド-f
にオプションを追加するだけですzpool import
。
# zpool import -f -o readonly=on -R /mnt tank
これがソースツリーです。
ターゲットファイルシステムのマウント
私はターゲットファイルシステムのマウントポイントを使います/mnt.new
。あなたが言うファイルシステムはおそらくUFSでしょう。 ZFS以外のファイルシステムを構造体として使用する場合は、使用する/mnt.new
各ディスクパーティション(など)で「newfs /dev/ada0p1
」を実行する必要があります/dev/ada0p2
。いつものように、とても確信していますどのデバイスがどのデバイスで、設定が正しいかがわかります。
Leave the file system pristine を使用したら、その下のnewfs
パーティションをファイルシステムとしてマウントし、UFS レイヤーで次のレベルのマウントポイントとして必要なディレクトリを作成します。次に、次のレベルのディスクパーティションをマウントし、各パーティションを正しい場所にマウントします。たとえば、新しい UFS ファイルシステムが /dev/ada0p1 にルートを持ち、/dev/ada0p2 および /dev/ada0p3 を含む場合は、次のようにします。/
/mnt.new
/usr
/usr/home
mkdir /mnt.new
mount /dev/ada0p1 /mnt.new
mkdir /mnt.new/usr
mount /dev/ada0p2 /mnt.new/usr
mkdir /mnt.new/usr/home
mount /dev/ada0p3 /mnt.new/usr/home
/mnt.new
マウントポイントに複製したら、/mnt.new/etc/fstab
ファイルシステムを含むディスクパーティションを正しくマウントして編集する必要があることに注意してください。
これは基本的なUFSファイルシステム管理なので、これ以上詳しく説明しません。
ソース階層をターゲットに再同期します。
ソースZFSツリーがマウントされ、ターゲット/mnt
UFSツリーがマウントされたら、ある/mnt.new
ツリーから別のツリーにファイルをコピーするだけです。 rsync
素晴らしいツールです。
# rsync -HAXav /mnt/ /mnt.new/
末尾のスラッシュは/mnt/
重要であり、/mnt.new/
「unity」に含まれます。指定されたコマンドは、コピーされた各ファイル名をリストします。この詳細を見たくない場合は、v
コマンドから省略してください。
ファイルをコピーした後も、いくつかの手動変更が必要です。前述のように、/mnt.new/etc/fstab
新しいシステムの起動時にUFSファイルシステムが正しくインストールされていることを確認し、必要な変更を加える必要があります。また、同様の行に似たアイテムを/mnt.new/etc/rc.conf
コメントアウトする必要があります。zfs_enable='yes'
/mnt.new/boot/loader.conf
ソース階層とターゲット階層をアンロードして再起動します。
新しいシステムを試す準備が整ったと思われる場合は、ソースZFSプールをエクスポートします。
zpool export tank
次に、UFSデバイスをマウント解除します/mnt.new
。
umount /mnt.new/usr/home
umount /mnt.new/usr
umount /mnt.new
これでUFSドライブを祈って再起動できます。 UFSディスクが最初の試みで起動に失敗した場合は、問題を解決するためにUSBスティックを近くに置いてください。