作成開始 : 令和8年(2026年)02月02日(月) 最終更新 : 令和8年(2026年)02月22日(日)

 Q4OS  で VirtualBox を使ってみた。


以前 PPPoE で自宅サーバーを公開していた頃、ホストが FreeBSD で VirtualBoxをインストールし、ゲストに FreeBSD や FreeNAS をインストールして、Webサーバーやメールサーバー、LAN内DNSサーバー、ファイルサーバー等を稼働させて便利に使っていました。
フレッツ光 クロスに切り替えたことでPPPoEでの自宅サーバーができなくなったことから、VirtualBoxの利用を断念していました。
しかし、Cloudflare(クラウドフレア)を利用することで自宅サーバー公開できたので、また VirtualBox を使ってみたくなりました。

FreeBSDだとPorts からインストールできたのですが、q4os のパッケージにはありませんでした。
そこで、Oracleのサイトからダウンロードして使ってみることにしました。
ホストOSは、q4os 64bit です。

1.ダウンロード
VirtualBox 公式サイトから ダウンロード しました。
今回 VirtualBox をインストールする OS は、q4os(Debian13 ベース)なので、virtualbox-7.2_7.2.4-170995~Debian~bookworm_amd64.deb をダウンロードしました。

2.インストール
ターミナルを開き、
takaq@q4os-nf70y:~$ sudo apt install ./virtualbox-7.2_7.2.4-170995~Debian~bookworm_amd64.deb
を実行します。

Application -> アプリケーション ->  Accessories -> システム に登録されます。

実行すると。



続いて VirtualBox Extension Pack をインストールします。

https://www.virtualbox.org/wiki/Downloads

Oracle VirtualBox マネージャ ->  ファイル -> ツール -> 機能拡張 -> インストール でダウンロードしたファイル(Oracle_VirtualBox_Extension_Pack-7.2.6.vbox-extpack)を指定しま す。

ライセンスを最後まで読み、[同意します]をクリックします。

必要に応じてログインユーザのパスワードを入力します。
これで機能拡張の一覧に表示されます。

そして、該当のユーザを vboxgroup に追加します。
これをしないと VBoxManage を実行する時に GUIの「Oracle VirtualBox マネージャー」を動かさないとうまくいきません。
takaq@q4os-nf70y:~$ sudo usermod -aG vboxusers $USER

takaq@q4os-nf70y:~$ groups $USER

takaq : takaq adm cdrom floppy sudo audio dip video plugdev users systemd-journal lpadmin bluetooth netdev scanner vboxsf vboxusers

追加されましたね。

新規イントールして仮想マシンを作成します。


    ↑
こんな感じでできます。

3.virtualbox host os 連動 自動起動/終了
サーバー用途でホストOSのメンテとかで毎度ゲストOSを手で終了させたり、起動させたりは結構面倒です。
そこで、ホスト OS の起動/終了にゲスト OS (VM)の起動/停止を連動させることにします。
FreeBSDの時は実現させたのですが、Linuxはまた勝手が違うようなので実験してみました。

https://www.virtualbox.org/manual/ch08.html
(コマンド集です)

以下の作業は、ホストOS上のターミナルで実行します。(SSHとかで接続だとうまくいきません)

(1)まず、VM開始/終了するためにVMのUUIDを調べます。
takaq@q4os-nf70y:~$ VBoxManage list vms
takaq@q4os-nf70y:~$ "q4os-32" {deec85d4-0014-4723-a362-b4be8d5e0e3d}

UUIDは{ }の中の部分です。
(2)VMを開始
--type headless はウィンドウ(GUI)非表示で起動です。
takaq@q4os-nf70y:~$ VBoxManage startvm deec85d4-0014-4723-a362-b4be8d5e0e3d --type headless
Waiting for VM "deec85d4-0014-4723-a362-b4be8d5e0e3d" to power on...
VM "deec85d4-0014-4723-a362-b4be8d5e0e3d" has been successfully started.


    ↑
こーんな感じです。起動しましたね。
(3)VM 終了
takaq@q4os-nf70y:~$ VBoxManage controlvm deec85d4-0014-4723-a362-b4be8d5e0e3d poweroff
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

うん、これでVMが終了します。
(4)VM起動/終了サービス用のディレクトリを作成
何でも良いですが、とりあえず ~VMService としました。

takaq@q4os-nf70y:~$  mkdir VMService
takaq@q4os-nf70y:~$cd VMService
(5)VMサービス開始用のシェルを作成、実行権限付与
takaq@q4os-nf70y:~VMService$ vi vmstart.sh

----------------- ここから ----------------------------
# !/bin/sh
sleep 20
VMID_Q4OS32="deec85d4-0014-4723-a362-b4be8d5e0e3d"
VBoxManage startvm $VMID_Q4OS32 --type headless
----------------- ここまで ----------------------------

takaq@q4os-nf70y:~VMService$  chmod +x vmstart.sh

takaq@q4os-nf70y:~VMService$  sh vmstart.sh で起動確認をしておきます。
(6)VMサービス終了用のシェルを作成、実行権限付与
takaq@q4os-nf70y:~VMService$  vi vmstop.sh

----------------- ここから ----------------------------
# !/bin/sh

VMID_Q4OS32="deec85d4-0014-4723-a362-b4be8d5e0e3d"
VBoxManage controlvm $VMID_Q4OS32 poweroff

sleep 10
----------------- ここまで ----------------------------

takaq@q4os-nf70y:~VMService$  chmod +x vmstop.sh

takaq@q4os-nf70y:~VMService$ sh vmstop.sh で終了確認しときます。
(7)サービス登録
Debian(および現代的なLinuxディストリビューション)で、サービスを一般ユーザー権限で実行・管理する には、systemd のユーザーインスタンス機能を使用す るのが最適です。これにより、root権限(sudo)を使わずに、ユーザー自身の権限でサービスを起動、停止、有効化できます。
・・・とのことなので、一般ユーザで実行させることにします。(システムのサービス登録、設定、実行がうまくいかな かったので👩)
・・・ですが、一般ユーザでのサービス登録・設定・実行及び VirtualBox独自の登録・設定・実行もうまくいかないどころか、Oracle VirtualBox マネージャーからVM起動したらエラー出て起動できなくなってしまいました。
調べて何とか起動できるようにしました。
もうスキル不足なのでサービスでの実行は諦めました。
(8)サービス以外の方法で自動起動
Konqueor -> ホーム -> .trinity (表示 -> 隠しファイルを表示) -> Autostart -> 新規作成 -> アプリケーションへのリンク で VMService/vmstart.sh をリンクします。
そして、OS再起動したら無事に自動で VM が実行中になりました。
めでたし、めでたし👏

自動終了は方法が無いので、ホストOSを shutdown もしくは restart する前に VMを電源OFFするアプリケーションへのリンク(VMService/vmstop.sh) をデスクトップにショートカットとして作成しました。

ホストOSを shutdown もしくは restart する時は、このショートカットをタブルクリックして VM の電源をOFFにする運用をします。
4.その後
しばらくの間、ゲストOS(q4os 32bit)がもっと高速かつスムーズに動作できないか色々とチューニングしましたが、ホストOSが以下のスペックではあかんようです。


CPU : インテル® Core™2 Duo プロセッサー T7250(2GHz)
周波数 : 2GHz
メモリ : 4GB
SSD : 480GB (ずっと前にもらった 2.5インチ SSD)
CPU遅いし、メモリ少ない😥
なので、ゲストOS(q4os 32bit)は諦め、以前エクスポートして保存していたのをインポートして使うことにしました。
(1)dns12 -> 古いバージョンのFreeBSD、インターネットのDNSキャッシュ・サーバー、LAN内のDNS、DHCPサーバー
(2)q4os -> 古いバージョンのq4os 32bit、https://www2.takaq-mynet.org/ として稼働
(3)FreeNAS -> 古いバージョンのFreeNAS、LAN内のsmb共有として使用

■起動スクリプト

VMのUUIDは、VBoxManage list vms で調査
dns12 は最初に起動して欲しいので一番に記述
# !/bin/sh
sleep 5
VMID_DNS12="6000d209-0b42-4262-90fe-7a090cb21fdd"
VMID_Q4OS="57fa7fb1-f6f8-404f-8a27-f8138bedb2f2"
VMID_FREENAS="d336e791-77f9-4d50-af9b-ba3abfb6714c"
VBoxManage startvm $VMID_DNS12 --type headless
VBoxManage startvm $VMID_Q4OS --type headless
VBoxManage startvm $VMID_FREENAS --type headless

Konqueor -> ホーム -> .trinity (表示 -> 隠しファイルを表示) -> Autostart -> 新規作成 -> アプリケーションへのリンク で VMService/vmstart.sh をリンクします。
これにより、OS起動時にVMが自動起動します。

■終了スクリプト
# !/bin/sh
VMID_DNS12="6000d209-0b42-4262-90fe-7a090cb21fdd"
VMID_Q4OS="57fa7fb1-f6f8-404f-8a27-f8138bedb2f2"
VMID_FREENAS="d336e791-77f9-4d50-af9b-ba3abfb6714c"

VBoxManage controlvm $VMID_FREENAS poweroff
VBoxManage controlvm $VMID_Q4OS poweroff
VBoxManage controlvm $VMID_DNS12 poweroff
デスクトップに VMService/vmstop.sh をリンクしたショートカットを作成
OSシャットダウンもしくはリブート前にダブルクリックで電源OFFになります。



5.メモ
■ゲストOS(q4os 32bit)にTigerVncサーバーをインストールしてリモート操作しようとしました。
インストールした直後にリモートPCから接続してみたところ、使用に耐えないくらい遅かったです。
とても使えないくらい。画面表示に5〜6分かかるし、表示してもキーボードやマウス入力がついてこれなかったです。
検索してみたら、仮想マシンのネットワークをディフォルト「intel PRO/1000 MT デスクトップ (82540 EM)」から「準仮想ネットワーク(virtio-net)」にしたら劇的に早くなりました。
これなら使えます。😎

VirtualBox の virtio(準仮想化)・Intel・PCnet のアダプターでパフォーマンスを比較してみる  What I Know 〜ワッタイナ
    ↑
参考にしました。

■GUIの画面表示がとても遅くもたついて、残像みたくなり数分またないと次の操作ができない状況でした。
特にパッケージマネージャが激遅でした。

VirtualBox Guest Additionsをインストールしていたので、3Dアクセラレーションを有効にし、ビデオメモリを 128MB にしたら結構使えるようになりました。


前のページへ戻る
サイトトップへ