VirtualBox(1) Lubuntu 19.10 にVirtualBox をインストール


## はじめに

Lubuntu 19.10 に、VirtualBox（仮想化ソフトウェア）をインストールしました。

Haiku (Haiku R1/Beta 1) のISO ファイルは UEFI ブートイメージでした。BIOS ブートしか出来ない自分のマシンでは立ち上がりません。

USB メモリにインストールするのでなく、代わりに仮想マシンにインストールすることにしました。リアルな速度は体験できませんが、動作の確認ができます。


## 仮想化ソフトウェアについて

現在使っている OS（ホストOS: 今回は、Lubuntu 19.10）に、アプリとしてインストールします。そのアプリのウィンドウの中に仮想のパソコン（仮想マシン）を作り、そこに他の OS（ゲストOS: 今回は、Haiku）をインストールします。すると、その OSを立ち上げて使うことが出来ます。

利点は、通常業務はそのままで、簡単に他のOS を試したり、その削除が出来ることです。開発環境としてだけでなく、現在使っているOS の最新バージョンを実際に触って確認したりできます。

また、今回のようにBIOS ブートしか出来ないマシンで、UEFI ブートのiso イメージであっても、立ち上がる可能性が高くなります。それは仮想マシンが標準的なハードウェア（パソコン）を実現しているからです。

ただし、2つのOS を動かすわけですから、それなりにメモリの搭載が必要です。それを設定で分けて使うことになります。設定のしかたでパーフォマンスが変わります。


---
### VMware Workstation Player

仮想化ソフトウェアには、老舗の「[VMware Workstation Player](https://www.vmware.com/jp/products/workstation-player.html) 」があります。こちらは個人利用で非商用利用なら無料です（会社や組織で使うなら有料です）。

[Vagrant](https://www.vagrantup.com/)（設定ファイルに基づいて、仮想マシンの設定を自動実施してくれるツール）の記事をよく見かけます。Vagrant は組織で使ってこそ活きる（多くのパソコンを誤りなく同じ環境にできたりする）ツールです。

組織で使うと有料になるVMware と、組織で使っても無料のVirtualBox と、（お金の話だけではないだろうけど）選択肢があるわけです。また、有料なら他にも仮想化ソフトウェアはたくさんあります。


---
#### 最新の「VMware Workstation 15.5.0 Player」を使ってみました。

１. [VMware Workstation ダウンロード](https://my.vmware.com/jp/web/vmware/free#desktop_end_user_computing/vmware_workstation_player/15_0)

２. インストール:

```
$ sudo sh VMware-Player-15.5.0-14665864.x86_64.bundle
```
３. インストール完了したら起動します。
ライセンスに同意を2つして、「非営利目的で使用」にチェック、Pro 版の紹介に「Skip this Version」をクリック。

→起動しました。



---
### VirtualBox

「VirtualBox」([Oracle VM VirtualBox](https://www.oracle.com/technetwork/jp/server-storage/virtualbox/overview/index.html) ) はオープンソースで無料で使えます。Ubuntu などにはリポジトリが登録されており、すぐにインストール出来ます。
ちなみに、Lubuntu 19.10 だと最新のバージョンになりました。

[VirtualBox Wiki]
(https://ja.wikipedia.org/wiki/VirtualBox) から抜粋

#### 特徴:

- VirtualBox (Oracle VM VirtualBox) は、x86 仮想化ソフトウェア・パッケージの一つで、現在の開発は米国 **オラクル** 社が行っています。

- バージョン 4.0 以降よりVirtualBox 本体がGPL ライセンスとなったために、（ライセンス外になる）プロプライエタリ・ソフトウェアによる機能を標準で実装できなくなりました。それを補う形で **「VirtualBox Extension Package」** と呼ばれる機能拡張プラグインが Oracle から提供（PUEL ライセンス）されています。

- CD やDVD ドライブとしてISO イメージが使用できます。ISO イメージをCD-R やDVD-RW といった物理メディアに焼き込む必要（手間）がありません。また、実際の物理的ディスクを仮想マシンから直接マウントすることも可能です。

- 初期値が16MB（最大 128MB まで指定可）であるVRAM を搭載するVESA カードをグラフィック機能として提供。ゲストOS としてWindows、MacOS、Linux あるいはSolaris を使用する場合、**「VirtualBox Guest Additions」** にて提供される追加のグラフィック・ドライバにより、描画性能の向上と機能の追加が可能です。

- ハードディスクドライブは、「仮想ディスク・イメージ (Virtual Disk Images)」として、ホストOS のシステムファイル（**vdi**  形式=拡張子 .vdi）として格納されます。他の仮想化ソフトウェアで使われている、vmdk 形式 (VMware)、vhd 形式 (Microsoft Virtual PC)、hdd 形式 (Parallels)、QED (QMENU)、QCOW (QMENU) などの仮想ディスクイメージなども制限はありますが接続出来ます。
→VMware などからVirtualBox への移行がしやくすなります。（参考 2）

参考 :

１. [ちょっとわかりづらいOracle VM VirtualBoxのライセンス](http://replication.hatenablog.com/entry/20110207/1297005506) より抜粋:

→Extention Pack は、VirtualBox 本体と違い、オープンソースではないため、ライセンスとしては「PUEL」で提供されています。 「PUEL」は、個人使用、教育的使用、もしくは評価目的で使用することのみが許可されます。

ちなみに、「PUEL」の個人利用というのは許可の幅が広く、企業で普段使用しているパソコンにインストールして個人で利用することも、個人でビジネスに利用することもできるようです。

２. [VMwareのイメージをVirtualBoxに移行した時の作業メモ]
(https://www.ideaxidea.com/archives/2013/07/vmware_2_virtualbox.html)


---
#### VirtualBox とVMware との違いは: 

（個人的な感想）

設定の仕方とか使い勝手は同じ「仮想化ソフトウェア」ということもあり、VirtualBox と似たようなものです。どちらも、ホストOS からはひとつのウィンドウ（アプリ）です。

違いは、そのウィンドウ内のゲストOS が固まった場合の動きでした。

- VMware Player では、（たまたまかもしれないけど）キーボードやマウスが効かなくなり、ウィンドウ枠だけでなく、ホストOS まで操作できなくなりました。しかたなく、強制的に電源オフしました。

- VirtualBox の場合は、ウィンドウの中は固まっているけど、そのウィンドウ枠の操作は出来ました。なので、ウィンドウを閉じたり、ゲストOS をリセットすることが出来て、ホストOS のシステムに影響しませんでした。（たまたまかもしれないけど）個人的にはこの差は大きいです。


---
## Lubuntu 19.10 に VirtualBox をインストール

#### リポジトリのバージョンを確認:

Lubuntu 19.10 で確認:

```
$ apt list virtualbox
一覧表示... 完了
virtualbox/eoan,now 6.0.14-dfsg-1 amd64
```

→ダウンロードサイトの [Download VirtualBox](https://www.virtualbox.org/wiki/Downloads) と同じバージョン(6.0.14) でした。最新なので、これなら apt を使って楽にインストール出来ます。


Lubuntu 19.04 で確認:

```
$ apt list virtualbox
一覧表示... 完了
virtualbox/disco 6.0.6-dfsg-1 amd64
```

→メジャーバージョンは 6.0 です。マイナーバージョンは最新ではありませんが問題ないでしょう。最新が欲しかったら、ダウンロードするか、リポジトリを登録してインストールするか、もしくは、Lubuntu 19.10 をインストール。


---
#### VirtualBox のインストール

```
$ sudo apt update
$ sudo apt install virtualbox

提案パッケージ:
  binutils-doc menu debian-keyring g++-multilib g++-9-multilib gcc-9-doc libstdc++6-9-dbg
  gcc-multilib autoconf automake libtool flex bison gdb gcc-doc gcc-9-multilib gcc-9-locales
  libgcc1-dbg libgomp1-dbg libitm1-dbg libatomic1-dbg libasan5-dbg liblsan0-dbg libtsan0-dbg
  libubsan1-dbg libquadmath0-dbg glibc-doc bzr libstdc++-9-doc make-doc vde2
  virtualbox-guest-additions-iso
以下のパッケージが新たにインストールされます:
  binutils binutils-common binutils-x86-64-linux-gnu build-essential dkms dpkg-dev fakeroot g++ g++-9
  gcc gcc-9 libalgorithm-diff-perl libalgorithm-diff-xs-perl libalgorithm-merge-perl libasan5
  libatomic1 libbinutils libc-dev-bin libc6-dev libcc1-0 libdpkg-perl libfakeroot
  libfile-fcntllock-perl libgcc-9-dev libgsoap-2.8.75 libitm1 liblsan0 libqt5opengl5 libquadmath0
  libstdc++-9-dev libtsan0 libubsan1 libvncserver1 linux-libc-dev make manpages-dev virtualbox
  virtualbox-dkms virtualbox-qt
:
Loading new virtualbox-6.0.14 DKMS files...
Building for 5.3.0-19-generic
Building initial module for 5.3.0-19-generic
Done.
:
DKMS: install completed.
virtualbox (6.0.14-dfsg-1) を設定しています ...
:
virtualbox-qt (6.0.14-dfsg-1) を設定しています ...
:
```

→ベータ版のときと違い、たくさんのパッケージがインストールされました。ベータ版にはそれだけ余分なパッケージが入っていたということかな。

→virtualbox に必要なカーネルモジュールをコンパイルするためにDKMS が必要です。
VirtualBox の GUI はvirtualbox-qt で提供。というわけで、どちらも一緒に入りました。


#### VirtualBox Extension Package のインストール

ライセンス絡みで抜いてあるプロプライエタリ・ソフトウェアによる機能を補完します。

```
$ sudo apt install virtualbox-ext-pack

virtualbox-ext-pack を設定しています
Oracle reserves all rights not expressly granted in this license.
（オラクルは、このライセンスで明示的に付与されていないすべての権利を留保します。）
<了解>

→Tab キーで <了解> を選んで、Enter

virtualbox-ext-pack を設定しています
Do you accept the terms of the VirtualBox PUEL license ?
（VirtualBox PUELライセンスの条件に同意しますか？）
<はい> <いいえ>

→Tab キーで <はい> を選んで、Enter

Successfully installed "Oracle VM VirtualBox Extension Pack".
```

→インストール中にインターネットから、エクステンションパック（拡張パック）がダウンロードされます。そして、VirtualBox の機能を拡張してくれます。

拡張される機能:

- USB2.0 ホストコントローラ（EHCI)
- USB3.0 ホストコントローラ（xHCI）
- リモートデスクトップ機能（VRDP)
- ホストのウェブカメラパススルー機能
- Intel PXE boot ROM
- Linux ホストにおけるPCI パススルーの実験的サポート
- ディスクイメージのAES 暗号化

参考:

 [エクステンションパックの導入]
(https://vboxmania.net/%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%86%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%91%E3%83%83%E3%82%AF%E3%81%AE%E5%B0%8E%E5%85%A5/)



#### VirtualBox Guest Additions.iso のインストール

```
$ sudo apt install virtualbox-guest-additions-iso

以下のパッケージが新たにインストールされます:
  virtualbox-guest-additions-iso
```

→このパッケージは、VirtualBox Guest Additions.iso イメージを提供します。iso なので、インストール時のダウンロードに時間がかかりました。

ゲストOS（ごと）に、このiso をマウントして、インストールすることで機能が有効になります。OS の機能はそれぞれ違うわけで、ゲストOS によってはやり方が違ったり、インストールできないOS もあります。（後述）


---
#### インストールされたかの確認:

```
$ apt list virtualbox
一覧表示... 完了
virtualbox/eoan,now 6.0.14-dfsg-1 amd64 [インストール済み]

$ apt list virtualbox-ext-pack
一覧表示... 完了
virtualbox-ext-pack/eoan,now 6.0.14-1 all [インストール済み]

$ apt list virtualbox-guest-additions-iso
一覧表示... 完了
virtualbox-guest-additions-iso/eoan,now 6.0.14-1~build1 all [インストール済み]
```


---
#### VirtualBox Extension Package が有効になったかの確認:

再起動してから確認

```
$ vboxmanage list extpacks
Extension Packs: 2
Pack no. 0:   Oracle VM VirtualBox Extension Pack
Version:      6.0.14
Revision:     133895
Edition:      
Description:  USB 2.0 and USB 3.0 Host Controller, Host Webcam, VirtualBox RDP, PXE ROM, Disk Encryption, NVMe.
VRDE Module:  VBoxVRDP
Usable:       true 
Why unusable: 

Pack no. 1:   VNC
Version:      6.0.14
Revision:     132055
Edition:      
Description:  VNC plugin module
VRDE Module:  VBoxVNC
Usable:       true 
Why unusable: 
```
→2つのパックが有効になっていました。


---
#### VirtualBox が起動するかの確認:

メニュー→システムツール→VirtualBox 

→「Oracle VM VirtualBox マネージャー」が開きました。

「ようこそ VirtualBox へ!」表示。

![vb-welcome.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/489751/2be3377e-8d46-a124-071c-535ca9f35982.jpeg)
ヘルプ→VirtualBox について→VirtualBox 6.0
VirtualBox バージョン 6.0.14_Ubuntu r132055(Qt5.12.4)

ここまでで、VirtualBox が起動できるようになりました。


---
VirtualBox へのゲストOS のインストールは、別の投稿にしました。

下記は、ゲストOS を作成してから、ゲストOS にインストールする拡張機能（virtualbox-guest-additions-iso でのインストール）の話です。VirtualBox に作成するゲストOS ごとにやり方が違うので、ここに書きました。

---
### VirtualBox Guest Additions について

Guest Additions は、VM（仮想マシン）上のゲストOS にインストールするVirtualBox の追加コンポーネントです。ビデオ性能の向上、共有フォルダ、クリップボード共有等の機能があり、VirtualBox の使い勝手を向上させます。

例えば、インストール後は任意の解像度に変更できます。 


---
「VirtualBox Guest Additions」は、ゲストOS をインストールした後に（任意で）インストールします。

それぞれのバージョン用の VirtualBox Guest Additions.iso イメージが提供されており、VirtualBox と同じバージョンにするのが無難です。

---
#### ゲストOS が、Haiku R1/Beta1 の場合:

参考:

[VirtualBox Guest Additions のインストール方法]
(https://discuss.haiku-os.org/t/how-to-install-virtualbox-guest-additions/3421) より抜粋:

VirtualBox Guest Additions のインストールはできませんでしたが、その機能は補うことができました。

１. ゲスト選択(Haiku) →設定 →システム →ポイントデバイス: 「USBタブレット」に変更による「マウス統合」。

２. カスタムVESA 解像度によるフルスクリーン。

ホストOS にて、
$ VBoxManage setextradata "VM name" "CustomVideoMode1" "1400x1050x16" 

３. ftp terminal コマンドおよびWindows IIS マネージャーを介した共有フォルダ。

↓ やり方はここに書かれています：

[Virtualizing Haiku in VirtualBox（VirtualBoxでのHaikuの仮想化）]
(https://www.haiku-os.org/guides/virtualizing/virtualbox)

ゲストOS として、Haiku をインストールする手順が書かれています。

結論:

* Haiku では、VirtualBox Guest Additions のインストールはできませんが、設定を変えることで、機能を補えます。


---
#### ゲストOS が、Ubuntu 16.04 の場合:

参考:

[Ubuntu 16.04: VirtualBox上のUbuntu 16.04にGuest Additionsをインストールする]
(https://www.hiroom2.com/2016/05/07/virtualbox%E4%B8%8A%E3%81%AEubuntu-16-04%E3%81%ABguest-additions%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B/) より抜粋:

下記のゲストについての説明です。

- Ubuntu 16.04 ゲスト

「Guest Additions」はVM 上のゲストOS にインストールします。Linux の場合は準仮想化ドライバをビルドして組み込む必要があります。ここではUbuntu 16.04 上に組み込む手順を記載します。 

インストール手順:

１. 前準備:

Ubuntu 16.04 をVirtualBox にインストールして下さい。
VirtualBox を最新版にアップデートしてください。


２. Ubuntu 16.04 のVM を起動してログインします。


３. カーネルヘッダのインストール:

準仮想化ドライバをビルドする為、カーネルヘッダが必要になります。

Ubuntu 16.04の場合はデフォルトでインストールされていると思います。「DKMS」をインストールしておくと自動で入るので安心です。

Ubuntu 系 (Ubuntu、Linux Mint) の場合:

```
$ apt list linux-headers-generic

なければ、
$ sudo apt-get install linux-headers-generic
```

Debian 系 (Debian、MX Linux、Sparky) の場合:

```
$ uname -r
4.19.0-6-amd64
$ apt list linux-headers-4.19.0-6-amd64

なければ、
$ sudo apt install linux-headers-4.19.0-6-amd64
```

４. Guest Additionsのマウント

ウィンドウメニューからGuest Additions のCD イメージを挿入します。

Devices → Insert Guest Additions CD image

自動マウントされた場合は /media/USER_NAME/VBOXADDITIONS_VERSION/ にマウントされます。 

自動マウントされない場合は手動でCD ドライブをマウントしてください。

```
$ sudo mount -t iso9660 /dev/sr0 /mnt
```

５. Guest Additions のビルドとインストール

- 自動マウントされた場合は「Run」を押すことでビルドとインストールができます。
「Run」を押した後、sudo 実行のためのパスワードを入力します。 
「Press Return to close this window…」が表示されれば完了です。 

- 端末からビルドとインストールを実行する場合は、Guest Additions のマウントポイントに移動して、root 権限でインストールスクリプトを実行します。

$ cd /media/hiroom2/VBOXADDITIONS_5.0.20_106931/

$ sudo ./VBoxLinuxAdditions.run


６. ビルドが失敗する場合:

Guest Additions の準仮想化ドライバのコードとカーネル間のインターフェースの整合性が合わない場合にビルドが失敗します（例えば Guest Additions が使うカーネルの関数がなくなった場合等）。

これはLinux カーネル外にあるドライバの宿命です。

VirtualBox 側もカーネルのアップデートに合わせてドライバのコードをアップデートしてくれるはずなので、最新版のVirtualBox で試して見て下さい。

それでもビルドが失敗する場合はあきらめるか、/usr/src/vboxguest-VERSION/のコードを直すしかありません。



７. カーネルアップデート後に Guest Additions が動かない場合:

現在の Guest Additions は、DKMSをサポートしている為、カーネルバージョンが変わった場合に自動でリビルドしてくれるはずです。

DKMSがサポートされていないディストリの場合は手動でリビルドする必要があります。
リビルドが失敗するようならば、先ほどと同様に最新版の VirtualBox を試すか、ソースコードの修正が必要になります。



８. 動作確認 

ビルドとインストールが成功したら、Ubuntu 16.04を再起動します。
vbox というプレフィックスがつくドライバが動いているかを確認します。

```
$ lsmod | grep vbox
vboxsf                 45056  0
vboxvideo              49152  2
ttm                    98304  1 vboxvideo
drm_kms_helper        139264  1 vboxvideo
drm                   360448  5 ttm,drm_kms_helper,vboxvideo
syscopyarea            16384  2 drm_kms_helper,vboxvideo
sysfillrect            16384  2 drm_kms_helper,vboxvideo
sysimgblt              16384  2 drm_kms_helper,vboxvideo
vboxguest             282624  8 vboxsf,vboxvideo
```

ディスプレイで設定できる解像度が増えるというより、
VM ウィンドウの大きさを変えれば、それに追従して自動で任意の解像度に変更されるようになりました。

参考:MX Linux 19 （Devian 系）の場合はこれだけでした。

```
$ lsmod | grep vbox
vboxguest             348160  5
```

---
#### ゲストOS が、Windows Server 2016 、CentOS 7.6 の場合:

参考:

[Guest Additionsのインストール]
(https://vboxmania.net/guest-additions%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/) より抜粋:

下記のゲストについての説明です。

- Windows Server 2016 ゲスト

- CentOS 7.6 ゲスト


---
#### ゲストOS が、MacOS の場合:

→現在、MacOS ゲストに Guest Additions をインストールすることはできません。


---
#### あとがき

試したいOS があるときは、いつもはライブUSB メモリ（低速、4GB〜8GB）を作成して立ち上げ、別に準備したUSB メモリ（高速、32GB〜128GB）にインストールしていました。

VirtualBox は開発環境で使うものと思っていましたが、
今回、ライブUSB メモリで立ち上がらなかったので、苦肉の策としてVirtualBox を使いました。開発環境以外での使い方もあることを学びました。

そして、ライブ用のISO ファイルをそのまま使えるのが利点です。物理的なライブ用のUSB メモリが要りません。CD-ROM ドライブも要りません。そして、作成する手間もなくなりました。

ディストリビューションによってはUSB 作成に使うアプリを替えないと失敗することもありましたが、それもなくなりました。

今回の作業は、Haiku のインストールの前段階になります。
その後、ゲストOS として、Haiku (Haiku R1/Beta 1) をインストールする予定です。



（[次の投稿に続く]
(https://qiita.com/FuRuYa7/items/954e8aab926ab99ec95e)）


---

今までの**投稿一覧**は 「[ここ](https://qiita.com/FuRuYa7/items/f82312cd7670408dfa8b#%E6%8A%95%E7%A8%BF%E4%B8%80%E8%A6%A7) 」


-