ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

VentoyインストーラーをVirtualBox VMで作成するベストプラクティス

Ventoyは複数のOSインストーラーを一つのUSBメモリーなどに書き込んで使えるユーティリティーツールです。 配布されているVentoyのisoイメージを書き込むと複数のOSインストーラーのイメージとして使えるだけでなく、Linuxの場合はtarball版、Windows版の場合はzip版をダウンロードしてVentoy2Diskを使うことで、空のVentoyブートローダーをセットアップできます。

後はそれを各OS環境に接続するとVentoyボリュームとしてストレージマウントされるので、その中にISOイメージを放り込めば、色々なOSのブート用USBメモリーとして使えます。

github.com

問題は私が常用しているのはmacOSなんですよね。VentoyはmacOSには対応していないので、今回はVirtualBoxのVMでVentoyをインストールしようと言う話です。LinuxやWindowsでも同じことはできますが、そもそもネイティブに対応しているから必要は無いです。でも、同じように試せば、それぞれの環境でもVentoyをインストールできると思います。

Ventoyを使うときと使わないときの違い

普通は何らかのイメージ書き込みツールなどを使ってISOイメージをデバイスに書き込んでブートディスクを作成して使うと思います。

その方法だと、たとえば32GBのUSBメモリーデバイスを使って2GBのISOイメージを書き込んだ場合、何も考えずにインストーラーを作成すると30GB分が無駄になってしまいます。Ventoyを使えば、ストレージに空きがある限り、複数のOSのインストーラーをブートできると言うわけです。

Ventoyさえインストールしておけば、あとはそれをPCにつないでマウントされた領域にISOをぶち込むことで、容量の限界まで色々なOSのインストーラーとして使えます。

余談ですがChatGPTに絵を描いてもらいました。日本語はまだまだ難しいみたいですね。今回はあえてそのまま出してます。

macOSには対応していない

残念ながら、VentoyのVentoy2DiskツールはmacOSには対応していません。 しかしVirtualBoxを使えば、VMにUSBメモリーをマウントすることでVentoyのブートUSBを作ることが可能です。

github.com

以前はVirtualBoxの拡張機能パックをインストールしないとUSB 1.1でしかマウントできなかった気がしますが、VirtualBox 7.2.4ではUSB 2.0でマウントできました*1。VirtualBoxはOSSだけど、VirtualBoxの拡張機能パックはOSSじゃなかったのでこれは大歓喜ですね。

USBメモリーはVentoy2Diskツールの実行時にフォーマットされますが、念のためFAT32でフォーマットしておいてください。割と新しいカーネルを実装したLinuxですとExFATもサポートしている場合がありますが、まだまだ少数しかサポートしていない場合も多いためです。

macOSでVirtualBox VMでVentoy2Diskツールを使うまでの流れ

1) まず、VirtualBoxをインストールします

2) 次に仮想マシンを作成します

3) 仮想マシンにLinuxをインストールします。今回はPublic YumからダウンロードしたOracle Linux 9.7を使いました*2。これを使った理由は普通にインストールすると割と新しいカーネルでブートされること、VirtualBoxとの相性、ただそれだけです。新しいカーネルが使えるということは今回のような特別なことをするときに問題が起きにくいと言うメリットもあります。

4) 普通にOracle Linuxをインストールします。OSは最小インストールでも良いですが、ここは好みです。私の場合はOpenSSH Serverとwgetが入っていれば作業可能です。インストール完了後、仮想マシンをシャットダウンします

5) USBの設定を開いて、接続したUSBメモリーを追加します

6) (オプションとして) ネットワーク設定を開き、ネットワークアダプターとして「ブリッジアダプター」の選択します。ssh接続して別の環境から操作したかったから。一台の環境で完結する場合は必要ないです

7) Linux VMを起動します。その後sudo fdisk -lコマンドを実行して、USBメモリーがマウントされていることを確認します。Linux VMを起動すると、macOSからUSBメモリーのボリュームがいなくなっていると思います

8) Ventoy リリースのページから、任意のバージョンの Ventoy tarballをダウンロードします

9) tarballを展開して、Ventoy2Diskツールを実行します。-iオプションの後にUSBメモリーデバイスを指定します。デバイスを間違いませんように...

sudo sh Ventoy2Disk.sh -i /dev/sdb

10) 実行すると、このような感じになります

11) 作業完了したら、作業用のLinux VMをシャットダウンした後にいったんUSBメモリーをVMから取り外し、作業用の環境に接続します。作ったVentoyのブートUSBはどのOSでもマウントできるので、マウント後にディスクにISOイメージを放り込んで、起動したいPCにつなげばマルチOS対応のOSブートUSBとして使えます。これは非常に便利。

*1:使ったUSBメモリーがUSB 2.0規格だったため

*2:わかる人であれば別のOSでも同じような感じで対応可能と思います。Ventoyのコア部分はFAT32で、イメージをコピーするパーティションはexFATになるけど、そっち側は見えていなくても大丈夫なので、大抵の環境では問題ない。ただし書き込む環境ではFAT32とexFATの読み書きができる必要がある

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。