こちらの記事について、内容・翻訳・視点・長さなど、皆様のご意見をお送りください。今後の記事製作の参考にしたいと思います。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
こちらの記事の感想をお聞かせください。
Raspberry Pi財団の人々は、次世代のRaspberry Piコンピュートモジュール、Compute Module 3 (CM3)の開発に熱心に取り組んできました。この次世代のコンピュートモジュールに何を期待できるかを知りたいという声を聞きます。今回は、そうした声に応えたいと思います。
CM3には、StandardとLiteの2つのタイプがあります。
Standardモジュールは、Raspberry Pi 3 Model Bと同じ1.2GHz Broadcom BCM2837 (64ビットクアッドコアARM Cortex A53 CPU、VideoCore IV GPU搭載)採用で、1GB LPDDR2 RAM及び4GB eMMCフラッシュメモリを備えています。既存のコンピュートモジュールとのピン配列互換性があります。
Liteモジュールは、eMMCメモリを備えていません。代わりに、SD/eMMCインターフェイスがこれまで採用されていなかったエッジコネクタピンに配線されており、自分で用意したSDカードやeMMCデバイスを接続できるようになっています。
コンピュートモジュールI/Oボードの最新モデル、CMIO V3も登場しています。このブレークアウトボードのモデルは、「Lite」モジュールタイプをサポートするSDカードソケットを備えていますが、それ以外は従来のCMIOボードと同じ構成です。
Standardモジュールで優れたRaspberry Piの処理能力をフル活用するには、eMMCメモリにOSをフラッシュする必要があります。スペアのRaspberry Piでこの目的を完全に達成できますが、私は標準的なWindows 10搭載パソコンで動作する仮想マシンにLinuxをインストールし、その仮想マシンを使ってコンピュートモジュールをフラッシュすると面白いのではと考えました。ただし、RaspbianのユーザーにLinuxに慣れてもらうため(そして私自身がLinuxを使いたいため)、Raspbianの祖父ともいえるDebianディストリビューションをこの小さいプロジェクトで使用することにしました。この記事を読みながら、作業を進めたい場合は、ご使用のマシンに「小さいインストールイメージ」(ほとんどの64ビットパソコンにはamd64イメージが対応)をダウンロードします。この先、これを使っていきます。
さっそく始める
まず、時間を無駄にしないためにも、輸送中にモジュールが壊れてしまっていないか確認しておきましょう。最も速い方法は、Windows「RPi Boot」ツールを使って、有効性を証明することです。RPi Bootのインストーラはこちらで見つかります。CM-Boot-Installer.exeファイルをダウンロードしたら、これをダブルクリックし、セットアップウィザードが示すデフォルトの設定を使ってインストールします。インストールが完了すると、Windowsスタートメニューの「最近追加されたもの」リストに「RPi Boot」が表示されます。
「RPi Boot」をクリックする前に、モジュールが、スレーブUSB [J4はENの位置(図1の赤い四角でマークされている箇所)]からブートするよう設定されており、図2のように正しい配線で接続されていることを確認してください。USB-micro USBケーブルを使って、パソコンのスペアUSBポートとUSBスレーブコネクタを接続します。CMIO V3ボードにはUSBコネクタが1つしかないため、USBキーボード/マウス、その他のUSB周辺機器をコンピュートモジュールに接続するために、必ず電源付きUSBハブが必要になるので注意してください。さらに、モニターの製造時期によっては、HDMI-DVI-Dアダプタが必要になる場合があります。
USBハブに電源を入れ、CMIOボードに電源を入れて、パソコンでRPi Bootを実行します。すべてが問題なく進んでいる場合は、赤のPWR LEDと緑のACT LEDの両方が点灯し、コマンドプロンプトボックスが開いて、ハンドシェイキングの進行状況に関する情報が表示されます。図3はその画面例です。この画面が消えると、Windowsにより、使用する前に初期化する必要がある新しい大容量ストレージデバイスが検出されたことが通知されます。ここで初期化を実行しないでください。ちゃんと動作するモジュールの入手に成功したとだけ考えて、電源をオフにしてください。
図 1
図 3
ホストUEFIの設定
64ビットパソコンで64ビットの仮想マシンを動作させる場合、BIOS/UEFIファームウェアで仮想化設定が有効になっていることを確認する必要があります。Proヒント: VirtualBoxツールバーの左上にある[New (新規)]をクリックすると、「Create Virtual Machine (仮想マシンを作成)」という新しいウィンドウが開きます。「Version: (バージョン)」というラベルのプルダウンメニューをクリックします。32ビットと64ビットの両方のオプションに対応している場合、UEFIの編集が不要なので、次のセクションに進みます。32ビットオプションのみの場合は、以下の手順を実行します。Windows 10で次のキーを押します。
[Windowsキー] + [i] 設定ウィンドウが開きます。
[更新とセキュリティ]をクリックすると、下の画面が開きます。
[回復]をクリックし、[Advanced start-up (高度なスタートアップ)]下の[今すぐ再起動する]ボタンをクリックします。下のような画面が表示されます。
[トラブルシューティング]を選択します。下のような画面が表示されます。
[詳細オプション]を選択します。
[UEFIファームウェアの設定]を選択します。
再起動ボタンをクリックし、パソコンが指示するキーを押して起動シーケンスを中断します。
UEFI/BIOS設定画面が表示されます。[Virtualization (仮想化)]を探して選択します。
仮想化機能が「Enabled (有効)」に設定されていることを確認します。[F10]キーを押して、設定を保存して終了します。この時点で、64ビット仮想マシンを作成するための準備が完了します。
Debian Linux仮想マシンをインストール
この時点で必要なものは、いずれかの仮想マシン(VM)ソフトウェアです。すべてオープンソースを使用するという精神から、ここではOracleのVM VirtualBoxを使用します。Windowsホスト用のインストーラ(この記事の執筆時点では、バージョン5.1.10)とユーザーマニュアルをダウンロードします。今回の作業には必ずしも必要ではありませんが、併せてVirtualBox Extension Packをダウンロードしておくと役に立つ可能性があります。Extension Packのバージョンナンバーが、VirtualBoxソフトウェアと同じであることを確認してください。
インストーラ(ダウンロードしたVirtualBox-5.1.10-112026-Win.exeファイル)を実行し、インストレーションウィザードに表示されるデフォルトのオプションで設定を行います。これにはUSBやネットワーキングサポートが含まれます。工程中、この時点で、これらが正しく設定されていることを確認できます。
インストールが終了し、VirtualBoxを起動すると、下のようなインターフェイスが表示されます。
この時点で、Linuxディストリビューションをインストールする仮想環境をセットアップするための準備が完了します。[New (新規)]ボタンを再度クリックして、次に進みます。
まずは仮想マシンに名前を付ける必要があります。インストールされているものを厳密に反映した名前を付けることをお勧めします(「MyVirtualMachine」のような名前ではなく)。特に他のオペレーティングシステム用のVMを作成するつもりであれば、そうすることで、6か月後もそれが何であるかを識別できます。
次に、ホストマシンのRAMをどのくらいVMで使用するかを設定します。これにより、必然的にメモリの使用可能量が決定します。VMのためRAMを大目に確保しておくことをお勧めしますが、VMの実行中はこの分のメモリがホストOSで使用できなくなるので、ホストOSで使用するRAMが不足することがないよう確認してください。
ホストと同様、VMにもファイルシステム用のハードディスクが必要ですので、VM用の仮想ハードディスクを作成します。
ダイナミックアロケーションが一般的な方法です。ハードディスクファイルシステムを保持するために作成したファイルで、できるだけ小さい状態から開始し、仮想ディスクにデータを書き込むに従い大きくなっていきます(風船に空気を満たしていくようなもの)。
このウィンドウでは、仮想ディスクの最大サイズを設定します。たった8~10GBで簡単に設定できますが、私の場合は使用できるスペースがあり、今後のプロジェクトでこの仮想マシンを使いたいため、大き目のサイズを設定しています。
これで仮想環境のセットアップが完了です。後はDebianをここにインストールするだけです。作成したばかりの仮想マシンのアイコンをダブルクリックします。
この新しい仮想環境を起動すると、「First Start Wizard」が開き、インストールするものを選択できます。この場合、先にダウンロードしたDebian ISOファイル(先ほどダウンロードしましたよね?)を選択できます。
先に進むと、Debianのインストールに入ります。ほとんどのパートについては、インストール手順は非常に簡単です。設定もデフォルトの設定で十分です。いくつか分かりにくい箇所があるかもしれないので、以下の図にハイライトを付けました。
ディスクパーティショニングの流れ:
ブートローダの流れ:
Debianインストールの微調整
VMのインストールとリブートがすべて完了すると、下のようなウィンドウが表示されます。
おめでとうございます。これでDebian Linux仮想マシンのオーナーの仲間入りです。好みに合うよう、壁紙を変えたり、画面をパーソナライズしたりできます。ただし、インストールを最適なものにするためには、多少の微調整が必要です。
Guest Additions
インストール完了後に最初に行いたいことは、VirtualBox Guest Additionsのインストールです。Guest Additionsは、ホストコンピュータとゲストオペレーティングシステム間の相互運用(現在のウィンドウへのAutomatic VMのリサイズ、ホストとゲスト間でのクリップボードやフォルダの共有、ホストとゲスト間でのシームレスなドラッグアンドドロップといったマウス操作など)を大幅に円滑化します。ユーザーマニュアルの第4章に、Guest Additionsをインストールするメリットが詳しく説明されていますが、ここではGuest Additionsが操作性を向上し、有用であるものとして受け入れておきましょう。
インストールを開始するには、Windowsスタートアイコンに似た、画面左上の[Activities (アクティビティ)]をクリックします。アイコンのサイドメニューが表示されます。使用するのは、「Show Applications (アプリケーションを表示)」の3 x 3のドットです。
ここから右一番下のドットを選択すると、アプリケーションの最後のページが表示されます。
このページから、ターミナルウィンドウを開きます(この画面の表示もカスタマイズできます)。
必要な作業を実行するために、この時点で管理者権限が必要になりますので、プロンプト(インストール時にセットアップしたユーザー名とホスト名が反映されています)で次を入力します。
treadstone@blackbriar:$ su
パスワード:
「su」コマンドでroot権限を取得するため、インストール時に作成したrootパスワードを入力する必要があります。初めてLinuxを使用する場合は、この点に注意してください。Linux環境において、「root」の権限には制限がなく、あらゆる操作を実行できます。例えば、root権限を持つユーザーが、ファイルシステム全体を再帰的に削除するというような、非常に疑わしい操作を実行しようとしている場合でも、Linuxは本当に実行するのかについて確認しません。そのままユーザーのコマンドに従うので、十分な注意が必要です。
プロンプトが、次のようなrootプロンプトに変わります。
root@blackbriar:/home/treadstone#
このプロンプトで、次を入力します。
apt-get install dkms build-essential
この操作により、いくつかの不可欠なコンパイラとカーネルのパッケージがインストールされ、Guest Additionsをサポートするカーネルモジュールを構築できます。
この時点で下準備が完了し、Guest Additions (仮想) CDをマウントできるようになります。これを実行するには、VirtualBoxトップの[Devices (デバイス)]プルダウンメニューで[Insert Guest Additions CD Image…(Guest AdditionsのCDイメージを挿入)]をクリックします。
問題なく実行されると、ウィンドウが開き、「VBOXADDITIONS_yourversion contains software intended to be automatically started. Would you like to run it? (VBOXADDITIONS_yourversionに、自動的に起動されるソフトウェアが含まれています。実行しますか?)」というメッセージが表示されます。この時点で、実行ボタンを押してGuest Additionsをインストールできます。
しかし、終了時に「y」の文字が表示された場合は、この操作ではインストールできない可能性があります。その場合は、プラン「B」を実行します。
ターミナルに戻り(rootとしてログイン)、ディレクトリを次のように変更します。
root@blackbriar:/home/treadstone# cd /media/cdrom
続けて次を入力します。
root@blackbriar:/home/treadstone# ls
下のようなディレクトリのリストが表示されます。
次を入力すると、インストールスクリプトが実行されます。
root@blackbriar:/home/treadstone# sh ./VBoxLinuxAdditions.run
処理が完了すると、下のような内容が出力されます。
これらのGuest Additionsの機能を使用するには、VMの電源を切る必要があります。画面右上コーナーの下矢印をクリックして、電源ボタンを選択します。
VMに再度電源を入れる前に、いくつか調整を行って、新しい仮想Linuxマシンの拡張を図ることができます。VirtualBoxで、仮想マシンを右クリックします。
[Settings…(設定)] -> [General (一般)] -> [Advanced (詳細)]を選択して、ホストとゲスト間で簡単にデータを共有できるよう設定を行うことができます。[Shared Clipboard (共有クリップボード)]と[Drag‘n’Drop (ドラッグ&ドロップ)]を[Bidirectional (双方向)]に設定します。
システムとディスプレイの設定も調整できます。
調整が終了したら、VMに再度電源を入れます。これでLinux仮想マシンが動作するようになります。
Raspberry Piに取り組む前に、再度ターミナルを起動して、さらにパッケージを2つほどインストールしましょう。
1つ目はsudoというパッケージで、個々のコマンドをrootとして実行できるようになります。「su」コマンドでユーザーをrootに切り替えてから、次を入力します。
root@blackbriar:/home/treadstone# apt-get install sudo
この操作により、下のような結果が表示されます。
ここで、「sudo」コマンドを使用できるユーザーのグループに自身を加える必要があります。次のように入力します。
root@blackbriar:/home/treadstone# adduser treadstone sudo
「treadstone」の部分は、自身のユーザー名に差し替えてください。さらに、次を入力して、「sudoers」ファイルに自身を追加します。
root@blackbriar:/home/treadstone# nano /etc/sudoers
nanoエディタで、「%sudo ALL=(ALL:ALL) ALL」と記載されている行が見つかるまでファイルをスクロールダウンします。
この行の下に、次を挿入します。
treadstone ALL=(ALL:ALL)ALL
ここでも「treadstone」の部分を自身のユーザー名に差し替えてください。[Ctrl] + [x]キーを押し、次に[y]キーを押します。最後に[Enter]キーを押して、ファイルを保存して終了します。
ターミナルウィンドウを閉じ、新たに開いて、新しく設定された権限のテストを行います。通常のコマンドプロンプトで、次を入力します。
treadstone@blackbriar:$ sudo ls
ここでパスワードを入力します。
残るはGitのインストールだけです。Gitをインストールすると、GithubからRaspberry Piサポートを受けることができます。次を入力します。
treadstone@blackbriar:$ sudo apt-get install git-core
Gitでは、以下の2つのプライマリ設定を使って、バージョン管理を実施します。
- ユーザー名
- ユーザーの電子メールアドレス
この2つの設定を行うため、次を入力します。
$ git config --global user.name "treadstone"
その後で次を入力します。
$ git config --global user.email treadstone@blackbriar.com
もちろん、ここでも「treadstone」と「treadstone@blackbriar.com」の部分を自身のユーザー名と電子メールアドレスに差し替えます。次を入力すると、正しい情報が入力されているか確認できます。
$ git config --list
下のような出力が表示されます。
ついにメインイベントの準備が完了しました。
Raspberry Pi Compute Module 3の書き込み
最初に行う必要があることは、Raspberry Pi用のUSBブートツールの入手です。USBブートツールは、GitHubからツールのクローンを作成して入手します。
$ sudo git clone --depth=1 https://github.com/raspberrypi/usbboot
クローンが準備できたら、ディレクトリをusbbootディレクトリに変更し、USBライブラリをインストールします。
$ cd usbboot
$ sudo apt-get install libusb-1.0-0-dev
すべて準備が整うと、便利なmakefileを使用して、必要なUSBツールを作成できます。
$ sudo make
Raspbian OSイメージをまだ仮想マシンにダウンロードしていない場合は、この時点で、Debianディストリビューションに付属のFirefoxブラウザを使ってhttps://www.raspberrypi.org/downloads/raspbian/にアクセスし、ダウンロードを行ってください。トータルで4GBしかないので、「Lite」バージョンをダウンロードする必要があります。
ターミナルで、現在のディレクトリにダウンロードをコピーできます。
$ sudo cp ../Downloads/2016-11-25-raspbian-jessie-lite.zip .
上記のファイル名は、ダウンロードしたRaspbianのバージョンのファイル名に変える必要があります。コマンドの最後にドットが付いていることに留意してください。このドットは、コマンドで現在のディレクトリを示しているので、必ず付けてください。
次にイメージを解凍します。
$ sudo unzip 2016-11-25-raspbian-jessie-lite.zip
この段階で、CM3にロードするイメージファイル(拡張子は.img)が準備された状態になります。今後の作業を大幅に楽にするため、最後にもう1つ準備するものがあります。[Activities (アクティビティ)]メニューをクリックして「ファイル」ツール(上から6つ目のアイテム)を開き、/devディレクトリに移動します[左側でコンピュータをクリックし、次に「dev」フォルダをクリック]。ファイルが変更された順にファイルをリストし、ターミナルウィンドウの横にウィンドウを移動します。これでイメージをロードする準備は完了です。QuattroコンピュートモジュールI/Oボードを起動します。
ボードの電源を入れると、おそらくパソコンがUSBに新しい接続があることを認識します。仮想マシンにもこれを認識させるため、下のように、[Devices (デバイス)]メニューで接続を探す必要があります。
プロセス中、この作業を数回行うことになります。これでUSBチップが認識され、rpibootを実行できます。
$ sudo ./rpiboot
これによりブートコード(usbbootcode.bin)が挿入され、この後、[Devices (デバイス)]メニューでUSB接続の次の一覧を探す必要が生じます。
次に、プログラムが.elfファイルを送信します。このファイルにより、再度、[Devices (デバイス)]メニューで新たなUSB接続を探す必要が生じます。
USBディスクがマウントされた名前を確認する必要があります。ここで真価を発揮するのがファイルブラウザです。名前を確認するには、単純に、リストに加わったばかりの新しいデバイスを探します。新しく加わったデバイスを確認するために、手動でスクロールアップする必要があるかもしれません。
通常は、sd(何か)になります。今回はsdbで、必要なのは最初の一覧だけになります。次のコマンドで、イメージをこのディスクにロードします。
$ sudo dd if=2016-11-25-raspbian-jessie-lite.img of=/dev/sdb bs=4MiB
5~10分ほど、ファイルシステムのイメージがロードされるのを待ちます。すべて完了すると、下のようなレポートが返されます。
いよいよ正念場です。
Raspberry Piの電源を切ります。ヘッダJ4のスレーブUSBを無効にし(下図のマークの位置にジャンパ位置を入れ替える)、スレーブマイクロUSBコネクタを取り除きます。
電源を入れます。
ログインプロンプトに至る起動出力が表示されたら、いよいよです!
デフォルトのユーザーログインは「pi」、デフォルトのパスワードは「raspberry」です。
Wi-Fiの追加
今回の最後の作業は、USB Wi-FiアダプタをUSBハブに追加して、Raspberry Pi CM3に通信機能を与えることです。私はRaspberry Piアダプタを使用していますが、他のアダプタでも同様に機能します。
うれしいことに、必要なソフトウェアがすでにファイルシステムに存在するので、手順はかなり簡単です。2つほど構成ファイルを変更するだけです。
まず、参加するネットワークを探してみましょう。コマンドラインに次を入力します。
$ sudo iwlist wlan0 scan
該当するロケールのすべてのWi-Fiネットワークのスクロールリストが提示されます。ネットワークが多過ぎる場合は、ページングツール「more」を使用します。
$ sudo iwlist wlan0 scan ¦ more
スペースバーを使用して、一度に1ページをスクロールダウンします。ネットワークのESSIDを探します。私は、今回の実施例でiPhoneパーソナルホットスポットを使用しているので、私のESSIDは「iPhone」と表示されます。
ここで、この情報とWi-Fiパスワードを、nanoエディタを使用してwpa-supplicantファイルに追加する必要があります。
$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
ファイルの一番下に移動して、次を追加します。
network={
ssid="Your_ESSID_from_earlier"
psk="Your_wifi_password"
}
私のファイルは、次のように表示されます。
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="iPhone”
psk="password"
}
[Ctrl] + [X]キー、[Y]キー、[Enter]キーを順に押すと、これを保存できます。
もう1つやっておきたいことは、DHCPを使ってRaspberry Piをネットワークに参加させることです。これを行うことで、IPアドレスが自動的に割り当てられます。interfacesファイルで次を実行します。
$ sudo nano /etc/network/interfaces
ファイルは次のような表示になります。
# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'
# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d
auto lo
iface lo inet loopback
iface eth0 inet manual
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
次のとおり、行を変更します。
iface wlan0 inet manual
から
iface wlan0 inet dhcp
ここでも、[Ctrl] + [X]キー、[Y]キー、[Enter]キーを順に押して、保存します。
これで設定は完了です。後は、ネットワークインターフェイスをリロードするだけです。
$ sudo service networking reload
次のコマンドで、ネットワークインターフェイスがアップされていることを確認することができます。
$ ifconfig
wlan0の場合、次のような結果が表示されます。
wlan0 Link encap:Ethernet HWaddr 80:1f:02:aa:12:58
inet addr:172.20.10.3 Bcast:172.20.10.15 Mask:255.255.255.240
inet6 addr: fe80: :416b:a810:b9b2:be34/64 Scope:link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:154 errors:0 dropped:173 overruns:0 frame:0
TX packets:65 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:32399 (31.6 KiB) TX bytes:13036 (12.7 KiB)
inet addrに問題がないようであれば、成功です。Googleサーバーをpingすることで、さらに深くテストできます。
$ ping –c10 8.8.8.8
これにより10パケットが送受信され、ネットワークの状態を知るための材料となります。
リモートログイン
コンピュートモジュールをより作業しやすいものにするための最後の作業は、コンピュートモジュールをリモートでログインできるようセットアップすることです。つまり、CMIOボードへの接続に必要なものが電源とWi-Fiアダプタだけになり、他のプロジェクトでキーボードやモニターを再度使用できるようになります。
コマンドラインで次を入力します。
$ sudo raspi-config
これにより、構成ユーティリティが起動します。矢印キーを使って、[Advanced Options (詳細オプション)]に移動して、[Enter]キーを押します。次に「A4 SSH」に移動して、[Enter]キーを押します。「Would you like the SSH server to be enabled? (SSHサーバーを有効化しますか?)」という質問が表示されたら、を選択します。
これで有効化が完了し、ネットワーク上の他のコンピュータからCM3に接続できるようになります。簡単にテストを行うには、WindowsパソコンでPuTTYを使用します。PuTTYを起動したら、[Host Name (or IP address) (ホスト名(IPアドレス))]ボックスにRaspberry PiのIPアドレスを入力するだけで、パソコンのウィンドウからRaspberry Piにログインできます。
Linux仮想マシンから接続する場合は、nmapツールを使用してRaspberry Piを探し、接続できます。
まず、オープンターミナルで仮想マシンにnmapをインストールします。
$ sudo apt install nmap
使用しているサブネットを確認したいので、次のコマンドを使用します。
$ hostname –I
アドレスが表示されます。私の場合は、「172.20.10.15」と表示されました。
この情報を使って、このサブネットに接続されている他のすべてのデバイスを確認できます。
$ nmap -sn 172.20.10.0/24
このコマンドにより、すべてのIPアドレスをpingするpingスキャンが実行され、IPアドレスが応答するかを確認できます。pingに応答する各デバイスについて、ホスト名とIPアドレスが出力されます。
リストのどこかに、次の情報が表示されます。
Nmap scan report for raspberrypi (172.20.10.3)
Host is up (0.0020s latency).
このアドレスを使ってログインを行います。
$ ssh pi@172.20.10.3
タイムアウトした場合は、自身のIPアドレスを再確認します。タイムアウトが発生しなければ、いつでも好きな時に、リモートでRaspberry Piにログインできます。これであなたもRaspberry Pi CM3のジェダイ。冒険の銀河があなたを待っています。フォースと共にあらんことを…
付録A – 仮想マシン
最近のパソコンは、ローエンドの製品であっても、複数のオペレーティングシステムの同時実行に十二分に対応できるコンピューティング能力を備えています。仮想マシンソフトウェアは、オペレーティングシステムをインストールできる環境を作ることで、この能力を活用します。このインストールされたオペレーティングシステムについては、パソコンハードウェアで動作します。実際には、この「ゲスト」オペレーティングシステムは、ハードウェアの応答を模倣するソフトウェアとやり取りしています。つまり、仮想ハードウェア、すなわち仮想マシンとやり取りしていることになります。
仮想マシンソフトウェアを使用することで、Windows 10を実行して起動するパソコンに、Linux、Solaris、Mac OSXをインストールして動作できます。最近のハードウェアではもはや対応していない、DOSやOS/2のような非常に古いオペレーティングシステムでさえも実行できる可能性があります。これは、オペレーティングシステムに対して、あらゆる仮想ハードウェアを提供できるためです。これには、フロッピーディスクドライブのような、使われなくなって久しいハードウェアも含まれます。
仮想マシンは、サンドボックス化された「コンテナ」環境であるため、初代DOS版ポピュラスをプレイできるだけでなく、様々なことに利用できます。ホストコンピュータから切り離されており、意のままに機能を停止・再起動し、保存ポイントまで逆行させて、コピー・共有、又はバックアップして、最初からやり直すことができる環境で、ソフトウェア(例えば、トロイの木馬と疑いがあるもの)をテストすることも可能です。その疑わしいファイルがランサムウェアダウンローダであると判明した場合は、その仮想マシンを単純にごみ箱に入れ、先に保存したものを使用できるので、かなり便利です。