VMware WorkStation からエクスポートした(と思われる)CentOS7 の vmdk ファイル(ディスクイメージ)を、VirtualBox for Windows にインポートした時の自分用メモです。執筆時のバージョンは、Oracle VM VirtualBox 6.0.8 r1 です。
VMに割り当てるIPの確保
今回、Vagrant+VirtualBox で動作中の他の VM と同じセグメント(Vagrant の private_network で追加したもの)に固定 IP を使って接続するつもりなので、まずはそのセグメントの CIDR アドレスを調べます。他の VM が使っているセグメントは、VirtualBox マネージャーを使って調べられます(まぁ、Vagrantfile 見れという話ではありますが)。
アダプター2は『ホストオンリーアダプター、’VirtualBox Host-Only Ethernet Adapter #2’』であることがわかりました。次に、ホストマシンのコマンドプロンプトもしくは PowerShell で ipconfig を叩きます。
これにより、この環境では当該セグメントの CIDR は 192.168.56.0/24 であることがわかります。その中でホストマシンが .1 を使いますので、ゲストに 2 から順に割り当てることにします。今回は .33 を割り当てます。ホスト名は適当に newvm とします。
エディタで c:/windows/system32/drivers/etc/hosts
を開き、以下を追加します。
192.168.56.33 newvm
以上で準備完了です。
VMの作成
VirtualBox マネージャーから新規に仮想マシンを作成します。
CentOS7 をインポートするので、タイプ:Linux、バージョン:Other Linux(64-bit) としました。メモリは適当に 2GB、ハードディスクは「追加しない」とします。これで[作成]すると、以下のようなエントリが追加されます。ネットワークはデフォルトで 「アダプター1:(NAT)」が追加されます。
次に、[設定]>[ネットワーク]>アダプター2を定義します。名前のところはデフォルトで新しいアダプターを割り当てようとするので、最初に調べた[VirtualBox Host-Only Ethernet Adapter #2’] に変更します。これで同じ他の仮想マシンと同じセグメントに所属することになります。
次に VMDK ファイルを取り込みます。
- [設定]>[ストレージ]>[新しいストレージコントローラを追加]>[SCSIコントローラーを追加]
- [コントローラー:SCSI]>[ハードディスクの追加]
- [既存のディスクを選択]
- [追加]
- インポートしたい VMDK ファイルを選んで[開く]
もしエラーになった場合は[詳細]をクリックします。「with UUID … already exists.」 は、同じ VMDK ファイルをその VirtualBox 上で2回以上使いまわそうとすると発生します。
メディアの追加に成功した場合は以下のようになるので、このVMDKをクリックして[選択]します。
以下のようになるので[OK]で閉じます。
仮想マシンの起動
ここまでできたら仮想マシンを[起動]します。VirtualBox のコンソールが表示されますが、この画面ではマウスもコピペもできないのでやや苦行モードとなります。この画面から別のウィンドウにフォーカスを移すには右の[Ctrl]ボタンを押してください。
ブートが終わったら root でログインします(パスワードは VMDK を作った人に聞いてください)。
以下、VMDK の元イメージでは、あまり他システムへの展開の考慮がなされていないものとします。ただし、最低でも VMDK をエクスポートする前に VMware Tools をアンインストールしておかないと、ネットワーク周りで余計なトラブルになるそうです。
キーボードの調整
キーボードから ‘(‘ や ‘)’ を押してみて、想定どおりに入らない場合はキーボードが英語モードになっているので jp109 に変更します。
# localectl
System Locale: LANG=ja_JP.UTF-8
VC Keymap: us
X11 Layout: us, jp
X11 Variant: ,
# localectl set-keymap jp106
# localectl
System Locale: LANG=ja_JP.UTF-8
VC Keymap: jp106
X11 Layout: jp
X11 Model: jp106
X11 Options: terminate:ctrl_alt_bksp
ここでいったんリブートします。
ネットワークの設定
再度 root で入って、ネットワークの設定を確認します。
筆者の環境ではこのようになりました。NIC は enp0s3 と enp0s8 というデバイス名で認識しています。接続名(CONNECTION)は日本語で作成されているようで文字化けしています。
SSH で入れさえすれば後はどうとでもなるのですが、ここでは単純にするために接続名は eth0, eth1 に変更し、さらに eth1 に固定 IP を振ることとします。
# nmcli con show > $$.txt
# ls
3958.txt # この数字はプロセスIDなので環境毎に変わります
# cat 3958.txt
NAME UUID TYPE DEVICE
■ ■ ■ 1 {ユニーク文字列1} ethernet enps03
ensXX {ユニーク文字列2} ethernet --
■ ■ ■ 2 {ユニーク文字列3} ethernet --
# vi 3958.txt # 以下のように修正
# (前の環境の忘れ形見と思われる ensXX も、合わせて削除します。)
# cat 3958.txt
nmcli con delete {ユニーク文字列1}
nmcli con delete {ユニーク文字列2}
nmcli con delete {ユニーク文字列3}
nmcli con add type eth ifname enps03 con-name eth0
nmcli con add type eth ifname enps08 con-name eth1
# sh 3958.txt
# nmcli dev
DEVICE TYPE STATE CONNECTION
enp0s3 ethernet connected eth0
ens0s8 ethernet connecting (getting IP configuration) eth1
lo loopback unmanaged
これでだいぶ見やすくなりました。次は IP アドレスを設定します。
# nmcli con mod eth1 ipv4.method manual ipv4.addresses 192.168.56.33/24 connection.autoconnect yes
# reboot
再度ログインして確認すると、ようやく固定 IP が割り当てられました。ここまで来たら適当なアカウントを作成して、ホストマシンや他の VM から SSH で入れるようになると思います。