Oracle VM VirtualBox で仮想マシンを使う
- Authors
- Name
- ごとれん
- X
- @ren510dev
目次
- 目次
- はじめに
- サーバ仮想化技術
- 仮想化方式
- ホスト型仮想化方式
- ハイパバイザ型仮想化方式
- 仮想サーバ向け OS
- Linux ディストリビューション
- OS 系統と派生
- 代表的なディストリビューション
- Oracle VM VirtualBox
- Extension Pack
- 仮想マシンの構築
- 前提
- 1. VirtualBox の設定
- 2. ISO イメージの準備
- 3. 仮想マシンの設定
- 4. Ubuntu Server 24.04 インストール
- 5. GUI 環境の整備
- 6. 構成確認
- 7. キーボード切り替え
- 8. ネットワーク設定
- 9. SSH 接続設定
- まとめ
- 参考・引用
はじめに
ハードウェアリソースを最大限に活用し、柔軟かつ効率的なシステムの運用を実現するために「仮想化技術」は必要不可欠となっています。
今回のブログでは、仮想化技術の基本的な仕組みや必要性、メリットに触れ、Oracle VM VirtualBox を使って実際に仮想マシンを構築してみたいと思います。
サーバ仮想化技術

サーバ仮想化技術とは、1 台のコンピュータ上に仮想的に複数のコンピュータ(仮想マシン)を動作させる技術です。 サーバ仮想化技術を用いることで、複数の OS を同時に利用したり、CPU やメモリ等のハードウェアリソースを有効に活用したりすることができます。
通常、物理コンピュータの上で直接アプリケーションを稼働させると、コンピュートリソースが余剰になり、本来の性能を最大限に活用することができない場合があります。
仮想マシンでは、1 台の物理マシンの中に複数の仮想サーバを立ち上げ、それぞれに異なるアプリケーションを割り当てます。 これにより、1 台の物理マシンで複数の処理を同時にアクティベート可能になり、コンピュートリソースの効率的な活用が実現されます。
仮想マシンには以下のような特徴があり、近年では多くの企業や開発環境で一般的に採用されています。
- コスト削減
物理的なサーバ台数を削減できるため、機器の購入費用、保守点検、電力消費、人件費等を抑えることができます。
- 管理効率の向上
1 つの物理マシンで複数の仮想サーバを稼働できるため、運用管理の手間を軽減できます。
- 迅速なサーバ展開
物理機器を調達することなく、新しい仮想サーバをすぐに用意できるため、ビジネスのスピードに柔軟に対応できます。
- 複数の OS の利用
異なる OS 環境を一台のハードウェアで並行して利用できるため、開発・テスト等に役立ちます。
- 注意点
大量の仮想マシンを構築する際には、十分なハードウェア資源が必要になります。
また、コンピュートリソースが限られている場合、仮想マシンの動作が遅くなったり、アプリケーションの性能に直接的な影響を及ぼしたりする可能性があります。
仮想化方式
仮想マシンは、構造の観点で「ホスト型」と「ハイパバイザ型」に大別されます。
ホスト型仮想化方式

ホスト型仮想化方式では、既存の OS 上に仮想化ソフトウェアをインストールし、その上で仮想マシンを構築します。 ここで、仮想マシンの基盤となる OS を「ホスト OS」と呼び、ホスト OS にインストールして稼働する OS を「ゲスト OS」と呼びます。
例えば、macOS 上に VirtualBox をインストールし、その上で Ubuntu を動作させる場合、macOS がホスト OS、Ubuntu がゲスト OS となります。
ホスト型仮想化は、既存のマシンを使って手軽に仮想サーバを利用することができます。
一方で、ゲスト OS からハードウェアへアクセスする際にホスト OS を経由するため、処理速度がやや劣るというデメリットもあります。
代表的なホスト型仮想化ソフトウェアには以下の製品があります。
中でも、VirtualBox は広く利用されており、公式サイト からプラットフォームに応じたソフトウェアや拡張機能パック(Extension Pack)を容易に追加することができます。
ハイパバイザ型仮想化方式

ハイパバイザ型仮想化方式では、ハイパバイザ(Hypervisor)と呼ばれる仮想化ソフトウェアをサーバに直接インストールして仮想マシンを構築します。
ハイパバイザは、CPU・メモリ・ストレージといった物理的なハードウェアを抽象化し、それぞれの仮想マシンに割り当てます。 これにより、各仮想マシンは独立したコンピュータのように動作し、ハードウェアのリソースを直接制御できるため、パフォーマンス面で優れています。
代表的なハイパバイザ型仮想化ソフトウェアには以下の製品があります。
仮想サーバ向け OS

仮想サーバの多くは、次のような利点から Linux が採用される傾向にあります。
- 無償で利用可能(オープンソース)
商用 OS(Windows Server)に比べてライセンス費用がかかりません。 大規模なインフラを構築する際にコスト削減に繋がります。
- 安定性・高い信頼性
サーバ等、長期間稼働し続けるシステムに最適です。 Linux はサーバ用途として設計・運用されることが多く、高い可用性があります。
- カスタマイズ性が高い
必要な機能だけをインストールし、軽量かつ高速に動作させることが可能です。 仮想マシン環境ではリソースを制限されることが多く、軽量な Linux は相性が良いとされています。
- CLI での管理が便利
GUI を必要とせず、リモートから軽量に管理ができるため、クラウドや仮想環境に最適です。
- 豊富なサーバ向けソフトウェアとサポート
Apache/Nginx 等の Web サーバや MySQL/PostgreSQL 等のデータベースサーバ等、多くのソフトウェアが Linux 環境を前提に構築されています。
Linux ディストリビューション
Linux ディストリビューション(Linux Distribution)とは、Linux カーネルに加えて、ソフトウェアやツール、設定ファイル等をパッケージ化したものです。
Linux そのものは カーネルを指し示す名称 です。 カーネルとは、ハードウェア制御やファイル、リソース等の管理を行う OS の最もコア(核)な機能を提供するソフトウェアです。
もともと Linux は、Linus Torvalds によってカーネルのみが開発されていましたが、カーネルのみではコンピュータを便利に使うことはできません。 そのため、Linux カーネルに、ファイル管理ツール、ネットワーク設定、GUI、パッケージ管理システムといった多くのソフトウェアをあらかじめ組み込んで、一つの完成された OS として配布されるようになりました。
OS 系統と派生
OS
├── MS-DOS
│ └── Windows
│ └── {XP, Vista, 7, 8, 8.1, 10}
├── Multics
│ └── Unix 系 (UNICS → Unix)
│ ├── SystemV 系
│ └── Linux 系 (GNU/Linux)
│ ├── [Android]
│ ├── Debian 系「.deb(Debian)」=== {lenny, squeeze, wheezy, jessie, stretch, buster}
│ │ ├── Debian GNU/Linux
│ │ │ ├── Raspbian
│ │ │ ├── Kali Linux
│ │ │ └── Ubuntu
│ │ │ ├── Linux mint
│ │ │ ├── elementary OS
│ │ │ └── Zorin OS
│ ├── RedHat 系「.rpm(RedHat Package Manager)」
│ │ ├── Fedora
│ │ │ └── RedHat Enterprise Linux
│ │ │ ├── Asianux
│ │ │ ├── CentOS
│ │ │ └── Scientific Linux
│ │ ├── RedHawk Linux
│ │ ├── Oracle Linux
│ │ └── Vine Linux
│ ├── Slackware 系
│ │ ├── Slackware
│ │ │ ├── Plamo Linux
│ │ │ ├── Puppy Linux
│ │ │ └── Salix OS
│ │ └── openSUSE
│ └── 独立系
│ ├── Arch Linux
│ └── Gentoo Linux
└── BSD 系
└── Darwin
└── macOS (Mac OS X[2001~] → OS X[2012~] → macOS[2016~]) === {Yosemite, El Capitan, Sierra, High Sierra, Mojave, Catalina}
└── [iOS]
├── [iPadOS]
├── [watchOS]
└── [tvOS]
代表的なディストリビューション
GNU/Linux には多くのディストリビューションが存在し、代表的なものに「Debian」「RedHat」「Slackware」があり、さらに派生系 OS が登場しています。
Debian 派生
RedHat 派生
Slackware 派生
独立派生
Oracle VM VirtualBox
Oracle VM VirtualBox は、x86 ならびに AMD64/Intel64 にかかる仮想化ソフトウェアパッケージの一つです。 当初はドイツの Innotek により開発されていましたが、現在では Oracle が提供元となっています。
Extension Pack
VirtualBox には、拡張機能パッケージ(Oracle VM VirtualBox Extension Pack)が用意されており、VirtualBox 本体だけでは利用できない高度な機能を利用することができます。
Extension Pack では、主に商用利用にも対応するための追加の機能群を提供する拡張モジュールが提供されています。
- USB 2.0 / USB 3.0 デバイスのサポート(EHCI / xHCI コントローラ)
ホストマシンに接続された USB デバイス(プリンタ、USB メモリ、スマホ等)をゲスト OS から利用することができます。 デフォルトでは USB 1.1 のみ利用可能ですが、Extension Pack をインストールすることで USB 2.0 や 3.0 が利用可能になります。
- リモートデスクトップ機能(VRDP:VirtualBox Remote Desktop Protocol)
VirtualBox 上で動作している仮想マシンにリモート PC から RDP 経由で接続できます。 これにより、仮想マシンに直接ログインせずに、別の端末から管理できます。
- ホスト側の Web カメラ パススルー機能
ホストマシンに接続された Web カメラをゲスト OS にパススルーして使用できます。
例:Ubuntu で Zoom や Skype を使う際に、ホストのカメラが使えるようになる。
- ディスク暗号化機能(仮想ディスクの AES-128 / AES-256 暗号化)
仮想マシンの仮想ディスクファイル(VDI 等)を暗号化できます。
- PXE Boot(Intel NIC)のサポート
仮想マシンの PXE(Preboot eXecution Environment)ブートが可能になります。 これにより、ネットワーク経由で OS をインストールすることができます。
仮想マシンの構築
今回は、実際に VirtualBox で仮想マシンを扱ってみたいと思います。 ゲスト OS には、昨今主流の Ubuntu を導入します。
Ubuntu は Debian をベースとした派生ディストリビューションです。
バージョン | コードネーム | EOL | Debian | Debian コードネーム |
---|---|---|---|---|
24.04 LTS | Noble Numbat | 2029-04 | 13 | Trixie |
22.04 LTS | Jammy Jellyfish | 2027-04 | 11 | Bullseye |
20.04 LTS | Focal Fossa | 2025-04 | 10 | Buster |
18.04 LTS | Bionic Beaver | 2023-04 | 10 | Buster |
16.04 LTS | Xenial Xerus | 2021-04 | 9 | jessie |
14.04 LTS | Trusty Tahr | 2019-04 | 8 | Jessie |
Ubuntu の LTS(Long Term Support)版は通常 5 年間の長期的なサポートが施されます。
前提
- CPU:Apple M2 Max(ARM64)
- HostOS:macOS Sequoia 15.3.2
- RAM(Unified):64GB
- CPU:12-core / 12-thread
- Disk:1TB
- GuestOS:Ubuntu Server 24.04 64bit
- VirtualBox:Version 7.1.6 r167084 Qt6.5.3
1. VirtualBox の設定
まず、VirtualBox を公式の ダウンロードページ もしくは Homebrew 等でインストールします。
$ brew install --cask virtualbox
Extension Pack を使用する場合は、VirtualBox と同じバージョンをインストールします。
VirtualBox は以下で確認することができます。
VirtualBox > About VirtualBox

この例では、バージョン 7.1.6
です。
先ほどと同じ ダウンロードページ から Extension Pack をインストールします。

VirtualBox の「ツール」から「インストール」ボタンを押下して Extension Pack を追加します。



VirtualBox と同じバージョンの Extension Pack が追加されていることを確認します。
2. ISO イメージの準備
仮想マシンにインストールする OS の ISO(International Organization for Standardization)イメージをダウンロードします。 ISO イメージとは、CD や DVD 等の光学ディスクに記録されたデータを 1 つのファイルに複製したものです。
通常の物理マシンに OS をインストールするのと同様に、VirtualBox でも ISO イメージから OS を焼きます。
今回はホストマシンとして macOS Apple Silicon を使用しますが、Ubuntu Desktop の ARM64 版は用意されていないため、まず Ubuntu Server をインストールし、後から Desktop 化するようにします。

ubuntu-24.04.02-live-server-arm64.iso
のような ISO 形式のファイルがダウンロードされます。
3. 仮想マシンの設定
VirtualBox の『新規(N)』から仮想マシンを追加・構築します。

ISO イメージに先ほどダウンロードした ubuntu-24.04.02-live-server-arm64.iso
を指定します。 後の設定はそのままでも構いません。

ユーザ名、パスワード、ホスト名を指定します。

ホストマシンのスペックに必要に応じて、仮想マシンに割り当てるコンピュートリソースを指定します。
今回は、RAM 8GB(8192 MiB)/ vCPU 4 コアとしました。

ストレージには、既存のハードディスクを追加したり、新規に作成したりすることができます。
今回は 25.00GB 分の VDI(VirtualBox Disk Image)を割り当てました。

最後に設定を確認します。
一般

システム
OS の起動順序を "ハードディスク → 光学ディスク" としておきます。 ハードディスクを優先することで OS インストール後は、自動的に 仮想 HDD から起動するようになります。(VDI のみで仮想マシンを保存できる)

ディスプレイ
ビデオメモリ(GPU)メモリを設定します。 特に、デスクトップを使用する場合はビデオメモリが低いと GUI 操作が重くなりがちなので、最大の 128MB まで割り当てておきます。
また、今回は VirtualBox を使用するので、高解像度モニタに対応可能なグラフィックコントローラ(仮想 GPU ビデオアダプタ)として VMSVGA(VMware Super VGA)を使用します。

ストレージ
永続ストレージ(VDI)と OS イメージ(ISO)が設定されていることを確認します。

オーディオ

ネットワーク
デフォルトでは、NAT(後述)でネットワーク接続を利用できます。

シリアルポート

USB

共有フォルダ

ユーザインターフェース

一通り、設定の確認ができたら起動します。

4. Ubuntu Server 24.04 インストール
Ubuntu が起動すると、以下のような画面が表示されるため、「Try or Install Ubuntu Server」からインストールしていきます。


インストールが完了すると、指定したユーザで Ubuntu(仮想マシン)にログインできます。

### Debian バージョン確認
$ cat /etc/debian_version
### Ubuntu バージョン確認
$ cat /etc/os-release

5. GUI 環境の整備
続いて、Ubuntu Sever を Desktop 化します。
※ コマンドラインのみで Ubuntu Server を利用する場合はこの手順は必要ありません。
- パッケージのインストール
$ sudo apt update && sudo apt upgrade -y
$ sudo apt install -y ubuntu-desktop

- 再起動
$ sudo reboot
- ログイン
再起動後、再度ログインすると、以下のような画面が起動して GUI で操作できるようになります。


- 解像度の変更
デフォルトの画面サイズで操作がしずら場合は、使用しているディスプレイに合わせて解像度を変更できます。
Settings > Displays > Resolution

6. 構成確認
ホストマシンでは、以下のコマンドで仮想マシンの一覧と状態を確認することもできます。
### 仮想マシンリスト
$ VBoxManage list vms
"Ubuntu 24.04" {37c9f073-13a1-436c-89f2-866b6d11e783}
### 仮想マシンの詳細
$ VBoxManage showvminfo 37c9f073-13a1-436c-89f2-866b6d11e783
Name: Ubuntu 24.04
Encryption: disabled
Groups: /
Platform Architecture: ARM
Guest OS: Ubuntu (ARM 64-bit)
UUID: 37c9f073-13a1-436c-89f2-866b6d11e783
(省略)
先ほど設定したコンピュートリソースが適切に割り当てられているか確認します。
### RAM
$ free -h
### ストレージ
$ df -h

Ubuntu Desktop の場合は、「Disk Usage Analyzer」で視覚的にストレージ使用量等を確認することもできます。

7. キーボード切り替え
Mozc をインストールすると、日本語入力を利用できます。 Mozc は、Google が開発した日本語 IME の一つで、OSS として公開されています。
- パッケージのインストール
$ sudo apt update && sudo apt upgrade -y
$ sudo apt install -y ibus-mozc mozc-utils-gui
- 再起動
$ sudo reboot
- キーボードに追加
Mozc をキーボード切り替えに追加します。
Keyboard > Input Sources

- 日本語入力の追加
Input モードに "Hiragana" を選択します。

- ショートカット切り替え
日本語と英語入力切り替えのキーボードショートキー(例:Ctrl [^] + Space [_]
)を設定します。
Keyboard > Keyboard Shortcuts > View and Customize Shortcuts > Typing

8. ネットワーク設定
NAT
2: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:16:64:e8 brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s8
valid_lft 86153sec preferred_lft 86153sec
inet6 fd00::29d3:38e6:e944:545a/64 scope global temporary dynamic
valid_lft 86154sec preferred_lft 14154sec
inet6 fd00::a00:27ff:fe16:64e8/64 scope global dynamic mngtmpaddr
valid_lft 86154sec preferred_lft 14154sec
inet6 fe80::a00:27ff:fe16:64e8/64 scope link
VirtualBox のデフォルトのネットワーク構成は「NAT」となっています。

NAT では、ホストマシンに割り当てた IP アドレスで NAT してインターネットに接続します。 つまり、ホストマシンが所属するネットワークからは仮想マシンの IP アドレスを確認することができません。
このため、仮想マシンからインターネットに接続できますが、ホストマシンが所属するネットワーク上の他のホストマシンから仮想マシンへ通信を開始することはできず、仮想マシン間でも疎通を取ることはできません。
ブリッジアダプタ
3: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:77:1f:96 brd ff:ff:ff:ff:ff:ff
inet 192.168.68.109/24 brd 192.168.68.255 scope global dynamic noprefixroute enp0s9
valid_lft 6955sec preferred_lft 6955sec
inet6 240b:10:3023:e800:94d1:ef94:f59:ba4c/64 scope global temporary dynamic
valid_lft 298sec preferred_lft 298sec
inet6 240b:10:3023:e800:598f:6ff0:ad68:dfc8/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 298sec preferred_lft 298sec
inet6 fe80::1839:519d:ac3:7a26/64 scope link noprefixroute
valid_lft forever preferred_lft forever
ホストマシンと仮想マシンを同一ネットワークに所属させる場合は、「ブリッジアダプタ」を使用します。

ブリッジアダプタは、ホストマシンに追加された仮想 NIC を L2 レベルでブリッジしてネットワークへ接続します。
28: vmenet0: <UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500 status UP
link/ether 62:51:c4:8d:f9:fa brd ff:ff:ff:ff:ff:ff
29: bridge100: <UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 status UP
link/ether 5e:e9:1e:08:cc:64 brd ff:ff:ff:ff:ff:ff
つまり、ホストマシンが所属するネットワークと同じ帯域の IP アドレスを仮想マシンにも付与することができます。
これにより、仮想マシンからネットワークに接続するだけでなく、ホストマシンと仮想マシンの双方向通信も可能になります。
ただし、仮想マシンに割り当てられる IP アドレスは DHCP で払い出されるため、仮想マシン、もしくはルータ側で IP アドレスを固定しない限り、IP アドレスが変更される可能性があります。


### ICMP
$ ping -c 3 192.168.68.109
PING 192.168.68.109 (192.168.68.109): 56 data bytes
64 bytes from 192.168.68.109: icmp_seq=0 ttl=64 time=0.468 ms
64 bytes from 192.168.68.109: icmp_seq=1 ttl=64 time=0.488 ms
64 bytes from 192.168.68.109: icmp_seq=2 ttl=64 time=0.493 ms
--- 192.168.68.109 ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.468/0.483/0.493/0.011 ms
### ARP
$ arp -na | grep 192.168.68.109
? (192.168.68.109) at 08:00:27:77:1f:96 on en9 ifscope [ethernet]
この例では、ホストマシンが所属する 192.168.68.0/24 ネットワークの他のマシンから仮想マシンへ ICMP 疎通を取ることが確認できます。
また、ARP 応答を確認すると 192.168.68.109 に仮想マシンの MAC アドレス(08:00:27:77:1f:96
)がマッピングされていることが分かります。
9. SSH 接続設定
OpenSSH を設定して、仮想マシンへの SSH 接続ができるようにします。
- パッケージのインストール
$ sudo apt update && sudo apt upgrade -y
$ sudo apt install -y openssh-server
- openssh-server のステータスを確認
$ sudo systemctl status ssh
SSH デーモン(sshd)がアクティブになっていることを確認します。

- SSH キーの登録
接続元ホストで SSH キーを作成して、仮想マシンに登録します。
### ed25519 で SSH キーを生成
$ cd ~/.ssh
$ ssh-keygen -t ed25519
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/ren510dev/.ssh/id_ed25519): virtual-box_id_rsa
Enter passphrase (empty for no passphrase):
### 公開鍵をコピー
$ cat ~/.ssh/virtual-box_id_rsa.pub | pbcopy
### 公開鍵を登録
$ sudo chmod 700 -R ~/.ssh
$ sudo chmod 600 ~/.ssh/authorized_keys
$ sudo vim ~/.ssh/authorized_keys
- SSH Config の設定
仮想マシンと同一ネットワーク上に接続元ホストが存在する場合、.local
を使用して IP アドレスを解決・取得することができます。
### [仮想マシンホスト名.local] で IP アドレスを取得
$ ping -c 3 VirtualBox-Ubuntu.local
PING virtualbox-ubuntu.local (192.168.68.109): 56 data bytes
64 bytes from 192.168.68.109: icmp_seq=0 ttl=64 time=0.853 ms
64 bytes from 192.168.68.109: icmp_seq=1 ttl=64 time=0.461 ms
64 bytes from 192.168.68.109: icmp_seq=2 ttl=64 time=0.463 ms
--- virtualbox-ubuntu.local ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.461/0.592/0.853/0.184 ms
この例では、VirtualBox-Ubuntu.local
というホスト名が 192.168.68.109 に解決されていることが分かります。
接続元ホストに以下を設定します。
$ sudo vim ~/.ssh/config
Host vbox-ubuntu ## エイリアス名
HostName VirtualBox-Ubuntu.local ## ホスト名
User ren510dev ## ユーザ名
Port 22 ## SSH ポート(デフォルト 22番)
IdentityFile ~/.ssh/virtual-box_id_rsa ## 秘密鍵
IdentitiesOnly yes
- SSH 接続
公開鍵暗号方式による証明書認証で仮想マシンに SSH 接続します。
$ ssh vbox-ubuntu

まとめ
今回のブログでは、仮想化技術の基本的な仕組みや必要性、メリットについて紹介しました。
また、Oracle VM VirtualBox を使って実際に仮想マシンを構築し、Ubuntu をインストールして使用してみました。
サーバ仮想化を実現するツールは他にもたくさんあるので、気になるものが出てきたら随時触ってみたいと思います。
参考・引用
- Mac の VirtualBox に作ったゲスト OS にブリッジアダプターを設定する
- VirtualBox で有線 Ethernet を使う方法
- Virtualbox 上の ubuntu の解像度(画面サイズ)変更方法
- Ubuntu 18.04 で解像度が見つからなくなったときの対処
- US キーボード配列で日本語入力できるようにする
- Ubuntu18.04 にて、US キーボードを用いて英数字と日本語(ひらがな)の切り替えを行なう方法
- VirtualBox において、ホスト OS とゲスト OS(Ubuntu)間の共有フォルダを作成する方法
- VirtualBox トラブルシューティング
- Mac 上の Virtual Box の Ubuntu に SSH でアクセスし X 転送する
- ネットワーク・インターフェースの有効化/無効化
- ネットワークの仕組みや設定方法を解説
- Ubuntu Server 24.04 を VirtualBox にインストール