試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

QEMUのGUIフロントエンドQemu Launcherを使ってみる

QEMUは、設定ファイルを使用しない形で、設定のGUIも用意されていない。各種設定や、値の細かい指定*1などには、コマンドライン引数と環境変数が使用される。
膨大なコマンドライン引数については、調べるのも、指定していくのも大変。仮想マシンごとにラッパースクリプトを書くのも一つの方法ではあるのだが、ここでは、Qemu LauncherというGUIフロントエンドを使ってみることにする。

Qemu Launcherについて

その名の通り、QEMUを起動させるGUIフロントエンド。同名のアプリケーションが他にも存在するが、このWindows用のGUIフロントエンドではなく、
http://projects.wanderings.us/qemu_launcher
にあるもの。ほとんどのコマンドラインオプションをサポートしている上、qemu-imgでのイメージ操作も行える。その他、QEMU動作時に各種制御を行うqemuctlも起動させることができるのだが、手元の環境ではqemuctlが動作しなかった*2ため、未確認。
開発は現在も続いていて、次期バージョンも開発中(2007年8月現在)。gettextによるメッセージの国際化にも対応しているが、バージョン1.7.4の時点では、日本語のメッセージカタログファイルは入っていないため、英語での表示となる。

パッケージに関してと手動インストールの手順

DebianUbuntuの場合、「qemu-launcher」というパッケージが用意されているが、Gentoo Linuxにはない。
以下は、手動でインストールする場合の手順。configureスクリプトは存在しないが、Makefileが存在するため、

  1. tar.gzファイルを展開
  2. Makefileの「PREFIX」の値(インストール先)を必要に応じて編集
  3. インストール

という流れ。例としては

$ tar zxf qemu-launcher_1.7.4.tar.gz
$ cd qemu-launcher-1.7.4
(必要に応じてMakefileを編集)
$ make
$ sudo paco -lD make install

のような感じ。
手動で入れる場合、依存パッケージを確認し、事前に入れておく必要がある。Gentoo Linuxでは全てパッケージが用意されている。

起動方法

実行ファイル名のqemu-launcherを指定すればよいのだが、QEMUに渡したい環境変数がある場合、

$ QEMU_AUDIO_DRV=alsa QEMU_AUDIO_DAC_FIXED_FREQ=48000 QEMU_AUDIO_ADC_FIXED_FREQ=48000 qemu-launcher

のように実行させるとよい。

ビープ音について

そのままではビープ音が鳴らせないのだが、下のようにスクリプトを編集すると鳴らせるようにはなる。が、手抜き修正のため、設定として保存させることはできず、常に有効となる。make実行前に修正する場合、qemu-launcher.plに対して行うと、インストールされるスクリプトに反映される。
ちなみに、QEMUのビープ音は、pcspkrモジュールのブザー音ではなく、オーディオデバイス経由で、独特のブザー音が鳴る。そのため、ホストOSのミキサーの設定に応じて音量が変化する。

--- qemu-launcher.orig
+++ qemu-launcher
@@ -1250,7 +1250,7 @@
        )
        {
                push @qcmd_parts, '-soundhw';
-               push @qcmd_parts, $config->{'sndtype'};
+               push @qcmd_parts, 'pcspk,' . $config->{'sndtype'};
        }

        if ( $config->{'fullscreen'} )

使用したバージョン: Qemu Launcher 1.7.4

*1:オーディオの出力の詳細設定など

*2:Gdk-ERROR **: g_thread_init() must be called before gdk_threads_init() at /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux/Gtk2.pm line 62. という感じで動かないが、依存パッケージは全て入っていることを確認している