LoginSignup
1
2

More than 3 years have passed since last update.

Mac VirtualBox上のWindows 10 ProをUbuntu 20.04に移動してヘッドレス起動+RDP

Last updated at Posted at 2021-04-27

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をエクスポートします。
仮想アプライアンスのエクスポート というメニューを選んでエクスポートしてください。
export.png
最初に出てきた画面はだいたいこうなると思うのですが、そのままのオプション選択で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度の作業なので、そんなに苦痛にはならないと思っております。

分かりづらい点や、間違っている部分などがありましたら、コメントでお寄せくださいませ。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2