前提
GhostBSD(もちろんFreeBSDでもいいけど)でファイルシステムzfsにしているが、何らかの理由でGhostBSDがまともに起動しなくなってしまったので、zfs対応のNomadBSDをUSBメモリから起動して、GhostBSDからデータを救出するぞ、です。そんな人がどれだけいるか知りませんけど。(あ、でも、以下に書いてある話は、zfsであればOSに依存しない(はずの)話なので、ファイルシステムがzfsな人には役に立つかも。もちろん、自己責任でお願いしますが。)
あと、zfsは暗号化が可能だったような気がしますけど、自宅のデスクトップパソコンにそこまでは、、、ということで暗号化はしてません(、のはず)。
やったこと
GhostBSDがまともに起動しなくなってしまったパソコンのUSBにNomadBSDがインストールされたUSBメモリを差し込んで、NomadBSDを起動、と言うのは当たり前ですね。
次に、とにかく
sudo zpool import
です。sudoという強い権限で何かをimportしそうなので、かなりドキドキしますが、これは以下のようにimport可能なものを表示してくれるだけです。
pool: zroot
id: xxxxxxxxxxxxxxx
state: ONLINE
action: The pool can be imported using its name or numeric identifier.
config:
zroot ONLINE
ada0p10 ONLINE
zrootという名前のpoolがあることが分かります。(idに表示されているxxxxxxxxxxxxxxxでも行けるのかもしれませんが、試したことはありません。)
いきなりsudoは怖いよね、ということでsudoをつけないで
zpool import
だけだと
cannot discover pools: permission denied
と権限が足りなくて怒られます。まあ、ディスク(厳密には「ストレージ」と呼ぶべきでしょうか)のメタな情報を見るわけですからそうなりますよね。
actionに書いてあるように、名前を指定して再度挑戦です。
sudo zpool import -R /mnt zroot
その結果は
cannot import 'zroot': pool was previously in use from another system.
Last accessed by <unknown> (hostid=0) at Tue MMM dd hh:mm:ss yyyy
The pool can be imported, use 'zpool import -f' to import the pool.
よそのシステムで使われていたものっぽいけど大丈夫か、と聞いてきているようです。
GhostBSDで使っていたシステムですから、こうなるのは当然ですね。
強制的にimportすべく、最後の行にあるように"-f"を付けてやってみましょう。
sudo zpool import -R /mnt -f zroot
何も表示されませんでした。成功した模様です。
/mntの下を確認してみましょう。
nomad@NomadBSD$ ls /mnt/usr/home/koizumi/Pictures/
usagi_mod_pal.xcf
usagi-f.xcf
usagi.png
スクリーンショット_2022-12-11_08-33-33.png
あ、見えました。年賀状のためにウサギの画像を何とかしようとして苦労した記録が、、、
ここまで行けば/mnt/usr/home/koizumiがGhostBSDでのホームディレクトリですから、必要なデータだけ取り出すでも、全部バックアップするもやりたい放題(のはず。実はまだやってません1)。
なぜ"-R /mnt"か
"-R /mnt"なしの
sudo zpool import -f zroot
でもマウントには成功します。が、デフォルトでは/(ルート)にマウントしてくれます。ということはNomadBSDの/以下がごっそりGhostBSDの/に置き換わるわけで、NomadBSDとしては大混乱です。たとえばアイコンの情報とかもおかしくなるらしく、徐々に画面が崩れていくというホラーみたいな状況になります。(と、言い切らせてもらいます。はい、実際に体験しましたので。)
ということで、"-R /mnt"を付けることで、GhostBSDのディスクの内容が/mnt以下に来るようにしてNomadBSDの/が破壊されないようにしています。
-
この記事を書いた後のことにはなりますが、ここに書いた方法でGhostBSDのデータを退避してGhostBSDを再インストールしました。が、その時はGhostBSDのGUIが起動しなかっただけだったので、わざわざNomadBSDを持ち出すまでもなくGhostBSD上でデータを逃がせば良かったような、、、 ↩