Mac OSX VirtualBox上のWindows 10がなんだか邪魔になってきた
長年Windowsで開発をしてきたにも関わらず、メインの仕事がWindows EXEからiOSアプリに変わってきたこともあり、最近はもっぱらMacを使っております。
Windowsが必要なシーンもあるにはあるのですが、時間とともに減少の一途を辿っております。
そんなこともあり、すっかり日陰の存在なってしまったWindows 10をMacの外に追い出したい!と思い、今回Ubuntuサーバのほうに移動させ、必要な時にRDPで接続して利用することといたしました。
私の所有しているWindowsのライセンスはWindows XPからWindows 7を経て、バージョンアップで引き継がれてきたもので、今主流となっている64bitではなく32bitです。
移動元・移動先マシン
移動元 | |
---|---|
Mac Book Pro | 13-inch, 2018, Four Thunderbolt 3 Ports |
CPU | Core i7 2.7GHz クアッドコア |
メモリ | 16GB 2133MHz LPDDR3 |
ストレージ | 1TB SSD |
OS | Mac OSX 10.15 Catalina |
移動先 | |
---|---|
BOXNUC6CAYH | インテル® NUC キット NUC6CAYH |
CPU | Celeron® J3455 1.50 GHz クアッドコア |
メモリ | 8GB 1600MHz DDR3L |
ストレージ | 1TB SSD |
OS | Ubuntu 20.04.2 LTS |
ディスク容量は同じですが、CPUがかなり遅いですね。
元々Linuxサーバ用途で購入したので、まぁ良い方ではないかと思います。
動作速度は大幅に落ちると思いますが、使用頻度がさがっていく一方のWindows 10なのでまぁいいでしょう。
UbuntuにVirtualBoxをインストール
UbuntuにVirtualBoxをインストールします。
色々とググってみたところ、以下のサイトに親切な説明がありましたので、参考にさせていただきました。ありがとうございます。
Ubuntu 20.04にVirtualBox 6.1をインストールする方法 - Tutorial Crawler
rootユーザにsuして、コマンドを以下の順番で打ちました。
$ apt update && apt upgrade
$ wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
$ wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -
$ add-apt-repository "deb http://download.virtualbox.org/virtualbox/debian focal contrib"
$ apt update
$ apt install virtualbox-6.1
aptリポジトリの構成でVirtualBoxがインストールできるようにして、インストールするという流れです。
無事にインストールができたら動作状況を確認します。
$ systemctl status vboxdrv
● vboxdrv.service - VirtualBox Linux kernel module
Loaded: loaded (/usr/lib/virtualbox/vboxdrv.sh; enabled; vendor preset: enabled)
Active: active (exited) since Thu 2021-04-22 17:38:07 JST; 15min ago
Tasks: 0 (limit: 9268)
Memory: 0B
CGroup: /system.slice/vboxdrv.service
Apr 22 17:38:07 home systemd[1]: Starting VirtualBox Linux kernel module...
Apr 22 17:38:07 home vboxdrv.sh[3051450]: vboxdrv.sh: Starting VirtualBox services.
Apr 22 17:38:07 home vboxdrv.sh[3051483]: VirtualBox services started.
Apr 22 17:38:07 home systemd[1]: Started VirtualBox Linux kernel module.
無事にインストールされ動作しているようです。
VirtualBoxのバージョンを確認します。
$ VBoxManage --version
6.1.20r143896
バージョンは6.1.20でした。
この時点でのMac版VirtualBoxのバージョンが6.1.18だったので、Linux版のほうが進んでいるんですね。
Extension Packをインストールしておきましょう。
$ wget https://download.virtualbox.org/virtualbox/6.1.20/Oracle_VM_VirtualBox_Extension_Pack-6.1.20.vbox-extpack
$ VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-6.1.20.vbox-extpack
ゲストマシンを動作させるユーザをVirtualBoxのグループに追加します。
$ usermod -aG vboxusers Linuxユーザ名
これでUbuntu側のインストール作業は完了です。
Mac OSX VirtualMachine上のWindowsでの作業
MacのVirtualBoxでの作業に入ります。
Mac OSX VirtualBox上のWindowsのネットワーク設定はNATになっていることを前提に話を進めます。
最近のMac Book ProはEtherポートが付いていないので、ご家庭でのご使用でもEtherではなくオンボードのwifiをご利用されている方が圧倒的に多いと思いますが、VirtualBoxはいつのまにか、wifiアダプタへのBridge設定がうまく動かなくなってしまっています。そういうこともあるので、NAT前提で話をさせていただきます。
実は私のLinuxサーバもwifiでネットに接続されているので、移行先もNATのままで話を進めます。
まずはWindows 10を起動してRDP接続を有効にします。やり方はググれば出てきます。
ちなみにWindows 10 HomeはデフォルトではRDPを使えません。使うために特別なソフトウェアをインストールするみたいですが、私はやったことがありません。
続いてMacのターミナルで以下のコマンドを打ってください。
$ VBoxManage controlvm "VM名またはVM-UUID" natpf1 "rdp,tcp,,33389,,3389"
これは"Windows 10"というゲストOSの3389ポートへのプロキシとして、ホストOSの33389番を利用しますよ、という意味です。
この段階でMac OSX用のMicrosift Remote Desktopでローカルホストの33389番に接続を試してみてください。
「Microsoft Remote Desktop」をMac App Storeで
Windowsのリモートデスクトップが表示されればOKです。
Windowsをシャットダウンしてください。
Windows 10をエクスポートする
いよいよWindows 10をエクスポートします。
エクスポートする前に一つだけ確認してください。
それはVirtualBoxの3Dアクセラレーションをオフにすることです。
これをやり忘れると、ウインドウシステムの無いマシンにインポートされ、ヘッドレス起動をされたWindows 10にRDPで接続しても画面が真っ黒になってしまいます。
3DアクセラレーションをオフにしたらWindows 10をエクスポートします。
仮想アプライアンスのエクスポート というメニューを選んでエクスポートしてください。
最初に出てきた画面はだいたいこうなると思うのですが、そのままのオプション選択でOKです。
そのまま続きボタンを押していけばエクスポートが始まります。
時間がかかるのでのんびり待ちましょう。
UbuntuでWindows 10をインポート
UbuntuにWindows 10を移動させます。
まずは先程エクスポートしたovaファイルをUbuntuにコピーしてください。
コピーが完了したら、VirtualBoxでWIndows 10を動作させるユーザとしてSSHやtelnet等でログインしてください。
先程rootの作業でusermodしたあのユーザです。
$ VBoxManage import エクスポートファイルのパス --dry-run
で表示される値を一通りチェックしてください。
よろしければ、
$ VBoxManage import エクスポートファイルのパス
としてインポートしてください。
これも時間がかかりますので、のんびりお待ち下さい。
Windows 10を起動してRDP接続
無事にインポートが済んだらWindows 10のVM起動してみましょう。
$ VBoxManage startvm "VM名またはVM-UUID" --type headless
これでMac OSのMicorsoft Remote Desktopから
UbuntuサーバのIPアドレス:33389
で接続ができると思います。
Micorsoft Remote DesktopのDisplayのColor quality設定はHigh(32-bit)からMedium(16-bit)に変更することをお勧めします。
無事に接続ができたら、このままLinuxサーバのターミナルからGuest Additionを当ててやってください。
$ VBoxManage guestcontrol "VM名またはVM-UUID" updateguestadditions --source /usr/share/virtualbox/VBoxGuestAdditions.iso --verbose
Guest Additionが無事に当たったら、RDPの画面からシャットダウンを選んでください。
VMパラメータの変更
Mac Book Pro 13-inchとBOXNUC6CAYHのパフォーマンスの差、さらにRDP接続もあって動作がかなり遅いです。
少々遅いのは覚悟していましたが、それでも少しは早くしたいです。
CPU数変更
$ VBoxManage modifyvm "VM名またはVM-UUID" --cpus 2
CPU数を2つにしました。Mac Book Pro上では1つで十分に速かったのですが、BOXNUC6CAYHでは遅いので2つにしました。
グラフィックスドライバ変更
$ VBoxManage modifyvm "VM名またはVM-UUID" --graphicscontroller vboxvga
Mac上ではVBoxSVGAを使っていたのですが、LinuxではVBoxVGAに変更しました。VBoxVGAのほうが良いということがググって出てきましたので、個人的感想としては変化は感じられませんでした。
H/Wアクセラレータoff
$ VBoxManage modifyvm "VM名またはVM-UUID" --hwvirtex off
$ VBoxManage modifyvm "VM名またはVM-UUID" --vtxvpid off
これもネット上での情報でH/Wアクセラレータもオフにしたほうが速くなる、とあったので設定してみました。
若干速くなった気もしますが、気のせいかもしれません。
ドラッグ&ドロップとクリップボードの無効化
$ VBoxManage modifyvm "VM名またはVM-UUID" --clipboard-mode disabled
$ VBoxManage modifyvm "VM名またはVM-UUID" --draganddrop disabled
RDP接続なので、VirtualBoxを介したドラッグ&ドロップやクリップボードは使いません。
メモリ
32-bit Windowsは実メモリを3.5GBまでしか認識できません。
従いまして、RAMサイズはMacで使用していた時の3584MBままにしています。
Windows Updateの問題
Windows Updateの中にはシステム更新を完了させるために、OSのリブートをするものがあります。
VirtualBoxはOSが勝手にシャットダウンをしたものはエラーが発生したとみなして、Windows Updateの更新が失敗してしまいます。
解決策として、そのようなタイプのWindows Updateはユーザが必ず再起動やシャットダウンを行えば良いのですが、こちらはWindows側の設定で自動再起動を止めないとなりません。
Windows 10 Proの場合はローカルグループポリシーエディターで設定を行います。
「ここに入力して検索」入力ボックスに"gpedit.msc"と打てば出てきます。
ローカルグループポリシーエディターで「ローカルコンピューターポリシー」→「管理用テンプレート」→「Windowsコンポーネント」→「Windows Update」を開いてください。
その中の以下の2つを編集にしてください。
「自動更新を構成する」
で、有効ラジオボタンをチェックし、自動更新の構成は「自動ダウンロードしインストールを通知」を選択
「スケジュールされた自動更新のインストールで、ログオンしているユーザーがいる場合には自動的に再起動しない」
で、有効ラジオボタンをチェックする
おそらくこれで、ユーザがログインしていない時にWindowsが勝手に再起動するのは防止できると思います。
最後に
そんなに使わなくなったWindows 10ですが、90GB以上の領域をMacのSSDから奪っていました。これが自分がいつも使うマシンのSSDから消えたのが、ほんの僅かですが心地よいです。
Ubuntuサーバに移したWindows 10のVMはVBoxManageのexportコマンドを使って、月に1度のバックアップをとるようにしました。現在のWindowsの使用状況でしたら、それで十分な気がします。
バックアップが取られたら、通知する仕組みをつくって、USB HDDにエクスポートファイルをコピーするようにしています。
月1度の作業なので、そんなに苦痛にはならないと思っております。
分かりづらい点や、間違っている部分などがありましたら、コメントでお寄せくださいませ。