VirtulboxからHpyer-vへの仮想ディスク移植
vdi から vhd に変換する
virtualbox で使用している vdi ファイルを Hyper-v で使用できる vhdファイルに変換する
VBoxManage.exe コマンドを使う
VBoxManage.exe clonemedium disk vm.vdi vm.vhd -format VHD
具体的な実行例)
D:\work¥vdi_vhd>"C:\Program Files\Oracle¥VirtualBox¥VBoxManage. exe" clonehd 'vm.vdi vm.vhd -format VHD
しかし以下のエラーが発生
VBoxManage. exe: error: Cannot register the hard disk 'D:\work\vdi_vhd¥vm.vdi' {422a0155-3d3a-4afa-ae07-e43111026000} because a hard disk 'D:\work\vdi_vhd\vm.vdi' with UUID 1422a0155-3d3a-4afa-ae07-e4311f026000] already exists
VBoxManage.exe: error: Details: code E_INVALIDARG (0x80070057). component VirtualBoxWrap, interface IVirtualBox, callee IUnknown
VBoxManage.exe: error: Context: 'OpenMedium (Bstr (pszFilenameOrUuid). raw (), enmDevType, enmAccessMode. fForceNewUuidOnOpen, pMedium. asOut Param ())' at line 191 of file VBoxManageDisk.cpp
問題になっているのは以下のエラー
UUID 1422a0155-3d3a-4afa-ae07-e4311f026000] already exists
UUID が既に存在する。重複しているのでエラーが出た。
UUIDを付けなおす
D:\Ywork\vdi_vhd> "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" -nologo internal commands sethduuid vm.vdi
UUID changed to: 18d48a42-941e-433e-8339-96ff64ed1b85
vdi から vhd に変換
D:\work¥vdi_vhd>"C:\Program Files\Oracle¥VirtualBox¥VBoxManage.exe" clonemedium disk vm.vdi vm.vhd -format VHD
0% 10% 20%... 30%... 40%... 50%... 60%... 70%... 80%... 90%... 100%
Clone medium created in format VHD. UUID: 10721ceb-d542-40d2-b958-22c14034afe8
vhd ができた
移行したい PC で Hyper-v の環境を作る
vhd を移行 PC に移動する
適当なフォルダに vhd ファイルを格納 (コピーペースト)する
例)D:\hpyer-v\vm.vhd
Hpyer-v をインストール
Windows メニュー (画面左下のウィンドウアイコン) > Windows 設定 (ギアアイコン) > アプリ > 画面右の 「プログラム と機能」 > 画面左の 「Windows の機能の有効化または無効化」 > Hyper-v チェック入れる > OK
Hyper-v のインストールが終わるまでしばらく待つ
PC を再起動する
これで hyper-v はインストールできてると思う
Hpyer-v に Vhd を適用する
Hpery-vを起動
Windows メニュー (画面左下のウィンドウアイコン)> Windows 管理ツール (スクロールしていくと下の方にある) > Hyper-V マネージャで Hpyer-v を起動する
新しい仮想マシンとして vhd を登録
Hyper-vの「操作」 > 新規 > 仮想マシン > 開始する前に 「次へ」 > 名前: 適当につける 例)test_vm > 第1世代 > 起動メモ リ: 4096MB > 接続 Default Switch > 仮想ハードディスクの接続 既存の仮想ハードディスクを使用する 場所: D:\hpyer-v\vm.vhd > 完了
※ vm.bhd は先ほど作成したファイル
作成した仮想マシン (vhd) に接続する
仮想マシンを起動する
仮想マシンの欄に名前: でつけた仮想マシン名 test_vm が表示されているので選択する > 右クリック> 起動
自動チェックポイント検出
前の自動チェックポイント test_vm 2023/11/08-14:44:24 にもどしますか? または、 この仮想マシンの最後の状態 1601/01/01 9:00:00 から続行しますか?
「戻す」をクリック。
しかし、戻らないという旨のエラーがでたので。
チェックポイントを作成する
仮想マシンの欄に名前: でつけた仮想マシン名が表示されているので選択する > 右クリック> チェックポイント作成 ⇨ OK
起動する
仮想マシンの欄に名前: test_vm を選択する > 右クリック > 起動 ⇨ OK
接続する
仮想マシンの欄に名前: test_vm を選択する > 右クリック > 接続
⇨ ログイン画面が見れると思う。
ログイン後メッセージが。。
VBoxClient: the virtualbox kernel service is not running.
VirtualBox で使用していた際に Guest Additions のインストールしたため、そのプログラム VBoxClient が残っているので削除する
削除するには、Guest Additions を使いたいので Guest Additions の iso を入手する。バージョンがあるので注意。
Geust Additons のバージョン確認
7.0.20 と確認できた。
$ ls -ld /opt/VBox*
drwxr-xr-x 8 root root 4096 8月 26 17:39 /opt/VBoxGuestAdditions-7.0.20
iso ファイルのダウンロード
wget https://download.virtualbox.org/virtualbox/7.0.2/VBoxGuestAdditions_7.0.2.iso
iso ファイルのマウント
$ sudo mount -t iso9660 -o loop ~/VBoxGuestAdditions_7.0.2.iso /mnt
mount: /mnt: WARNING: source write-protected, mounted read-only.
マウントできたか確認
$ ls /mnt
AUTORUN.INF VBoxDarwinAdditions.pkg VBoxWindowsAdditions-amd64.exe cert
NT3x VBoxDarwinAdditionsUninstall.tool VBoxWindowsAdditions-x86.exe runasroot.sh
OS2 VBoxLinuxAdditions.run VBoxWindowsAdditions.exe windows11-bypass.reg
TRANS.TBL VBoxSolarisAdditions.pkg autorun.sh
アンインストールの実行
$ cd /mnt
$ sudo sh VBoxLinuxAdditions.run uninstall
Verifying archive integrity... 100% MD5 checksums are OK. All good.
Uncompressing VirtualBox 7.0.2 Guest Additions for Linux 100%
VirtualBox Guest Additions installer
Removing installed version 7.0.20 of VirtualBox Guest Additions...
アンインストールされたか確認
VBoxGuestAdditions-7.0.20 ディレクトリがなくなってればOK
$ ls /opt
完了