BatoceraをVirtualBoxで動作させるには

あらゆるレトロゲームが遊べるBatoceraをVirtualBoxで仮想化する方法を紹介します。

Batoceraを通常の手順で仮想化できない理由とは

Batoceraは、レトロゲーム愛好者向けに設計されたLinuxベースのオペレーティングシステムです。無償で50以上のコンソール(ファミコン、プレイステーションなど)をサポートし、実際のゲーム機のように扱えます。そのため、中華ゲーム機のOSにも採用されているようです。
一方、Batoceraは仮想環境で動作させることを想定していません。実際のハードウェアにインストールすることを前提に提供されています。このため、Batoceraの公式ページからダウンロードしたイメージファイルは、そのままではVirtualBoxから読み込むことができません。

VirtualBoxで動かす方法とは

VirtualBoxなどの仮想環境でBatoceraを動作できるようにするためには、通常と異なるひと手間が必要となります。具体的は、ダウンロードしたBatoceraのイメージファイルを、VirtualBoxから読み込めるファイル形式に変換する必要があります。
本記事では、仮想環境でのBatoceraが実用的かどうかはさておいて、とにかく仮想化したいという方向けに、VirtualBoxで仮想化する方法を紹介します。

準備しておくこととは

  1. PC
    本稿ではWindows PCで検証していますが、macOSやLinuxでも同様の手順で実現可能と思われます。ただし未検証です。
  2. VirtualBoxをインストール済みであること
  3. ゲームパッド
    本稿ではLogicool F310を使用しました。

Batoceraをダウンロードしよう

上の画像またはこちらのリンクをクリックして、Batoceraの公式ページに移動します。「Desktop PC, Laptop…」をクリックして、PC版をダウンロードします。
本稿執筆時点でのダウンロードしたファイル名は次の通りです。本記事の以降の記述にもこのファイル名が出てきますが、適宜読み替えてください。

batocera-x86_64-x86_64-38-20231014.img.gz

イメージ形式のファイル(IMG)が圧縮されています。

エクスプローラでファイルを右クリックし、[すべて展開]を選択します。
Windowsのバージョンによっては展開ができないケースがあります。その場合は、7-zipなどで解凍します。

VirtualBoxが読み込めるファイル形式に変換しよう

具体的には、コマンドプロンプトからIMG形式ファイルをVDI形式に変換します。変換には、VirtualBoxから提供されているVBoxManageというコマンドを使用します。

VBoxManageコマンドは、VirtualBoxがインストールされたフォルダに配置されています。デフォルトでは以下の場所になるでしょう。

C:\Program Files\Oracle\VirtualBox

変換する際の、VBoxManageの使い方は以下の通りです。

VBoxManage convertfromraw  <inputfile> <outputfile>

引数のconvertfromrawが変換の指示に当たります。
<inputfile>に読み込むIMGファイルを、<outputfile>に出力するVDIファイル名を指定します。

カレントフォルダにIMGファイルがある場合、以下の通り実行して変換を行います。ファイル名は適宜読み替えてください。

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" convertfromraw batocera-x86_64-x86_64-38-20231014.img batocera-x86_64-x86_64-38-20231014.vdi

以上で変換が完了しました。

ストレージの容量を拡張するには

変換直後のVDIファイルは、ストレージの容量が8GB未満と小さめです。ストレージの容量の拡張は、同じVBoxManageコマンドで可能です。
以下のmodifymediumが拡張の指示に当たります。
–resize=megabytesオプションで拡張したい容量をMBで指定します。

 VBoxManage modifymedium [disk | dvd | floppy] <uuid | filename> [--autoreset=on | off] [--compact]
      [--description=description] [--move=pathname] [--property=name=[value]] [--resize=megabytes | --resizebyte=bytes]
      [--setlocation=pathname] [--type=normal | writethrough | immutable | shareable | readonly | multiattach]

例えば、20GB(20,000MB)に拡張する場合は、以下の通り実行します。

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifymedium "C:\Users\ms\VirtualBox VMs\Batocera\batocera-x86_64-x86_64-38-20231014.vdi" --resize=20000

VirtualBoxのビデオメモリーを256MBに拡張するには

VirtualBoxでは、ビデオメモリー(ビデオRAM)の上限は128MBがデフォルトです。この上限値を256MBに拡張することが可能です。ただし、ビデオメモリーを256MBまで拡張する効果には様々な意見があるようです。
方法は以下の通りです。

 VBoxManage modifyvm <uuid | vmname> [--vram=size-in-MB]

VBoxManage コマンドを modifyvm オプションで起動します。
–vram=size-in-MB オプションで拡張するサイズを指定します。ただし、拡張できる上限が256MBに決まっており、”512″等を指定してもエラーになります。
実際にビデオメモリーを256MBに変更するには、以下の通り実行します。ここで、”Batocera”は仮想マシン名を指定します。

"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" modifyvm "Batocera" --vram=256

VirtualBoxで設定しよう

左ペインから[ツール]を選択し、[新規]アイコンをクリックします。

インストールを「エキスパートモード」で行います。
図の①が[ガイド付きモード]と表示されていれば、エキスパートモードになっています。[エキスパートモード]と表示されている場合は、それを押すことで[エキスパートモード]に切り替わります。切り替えを行うと、それまで入力した値がリセットされてしまうので要注意です。
②は仮想マシンの名称を指定します。
③を[Linux]とします。
④をArch Linux(64-bit)とします。

[ハードウェア]を選択します。
メインメモリーを2GB以上にします。筆者は8GBとしました。
割り当てるプロセッサーの数を指定します。BatoceraでのCPU負荷は高めなので、プロセッサー数は可能な範囲の上限値が望ましいです。論理プロセッサーの数の1/2程度が良いでしょう。筆者は4としました。

[ハードディスク]を選択します。
[すでにある仮想ハードディスクファイルを使用する]を選択し、右端にあるフォルダアイコンをクリックして「ハードディスク選択」画面を開きます。

[追加]アイコンをクリック。

ここで変換後のVDIファイルを選択し、[開く]を押します。

BatoceraのVDIファイルが選択肢に追加されました。容量に注目すると、約20GBに拡張されています。
左下の[選択]を押します。

[完了]をクリック。

以上で、左ペインに新たなBatoceraの仮想マシンが追加されました。

引き続き、設定を施していきます。

画面上の[設定]アイコンを押します。

①左ペインから[ディスプレイ]を選択します。
②ビデオメモリーを最大値にします。上述の手順でビデオメモリーを拡張している場合は256MBまで増やせます。
③筆者は[VMSVGA]としました。
④[3Dアクセラレーションを有効化]にチェックを入れます。
「3Dアクセラレーションを有効化」はゲストOSにGuest Additonsをインストールすると使用できるようになります。性能向上が期待できるとされています。

左ペインから[USB]を選択します。
右端の[+]アイコンをクリックし、一覧からゲームパッドなどのデバイスを選択します。

[OK]をクリックして設定を終了します。

さあ!Batoceraを起動しよう

上の[起動]をクリック。

スプラッシュ・スクリーンです。

起動に成功しました。
特に何も設定せずに、ゲームパッド:Logicool F310は使用可能となりました。
また、PS5の標準コントローラも同様に使用可能でした。

最後に

Batoceraを仮想化するケースはレアケースといえるでしょう。
しかし、Webには仮想化する方法についての記事が散見されます。しかし、VirtualBoxから提供されるツールのバージョンが古いころの記事が多く、そのままではエラーになるため、最新のVirtualBoxで仮想化を実現する方法をまとめてみました。
おそらくBatoceraだけではなく、Lakkaなど他のIMG形式で提供されるディストリビューションにも適用できるのではないかと思われます。