なんとかなるさね

マイコンをネタにブログを始めてみました


Win/Linuxクロス開発 | WindowsからVMware Player上のUbuntuのコマンドを実行 (VIX編) 

ウェブで調べ物をしていて、VMware VIXというソフトウェアを使うと、自作プログラム(C/VBS/PERL等)から
VMware PlayerやVMwarePlayer上のゲストOSを制御出来ることを知りました。そこで、ちょっと好奇心から
インストール(VMwareのウェブサイトからインストーラをダウンロードして実行)して、試してみました。

VMware VIXの主目的は、VMware PlayerやVMwarePlayer上のゲストOSを制御するAPIを提供し、ユーザに
C/VBS/PERL等でカスタムアプリケーションを開発して貰うことだと思いますが、インストールされたものの
中に、VMware PlayerやVMwarePlayer上のゲストOSをWindowsのバッチファイルから制御するプログラム
(vmrun.exe)も同梱されていました。vmrun.exeには幾つかの機能がありますが、その中には、以下のような
機能がありました。(ちなみに、vmrun -?でUsageが表示されます。)

VMware Player自体を制御するもの(抜粋)

* 起動(通常起動/レジューム起動)

vmrun start "<vmxファイル名>"

* 通常終了

vmrun stop "<vmxファイル名>" soft

* サスペンド終了

vmrun suspend "<vmxファイル名>"

* リブート

vmrun reset "<vmxファイル名>" soft

* 一時停止

vmrun pause "<vmxファイル名>"

* 一時停止解除

vmrun unpause "<vmxファイル名>"

VMwarePlayer上のゲストOSを制御するもの(抜粋)

* ファイル一覧の取得

vmrun -gu <ユーザ名> -gp <パスワード> listDirectoryInGuest "<vmxファイル名>" <取得フォルダ名>

* プロセス一覧の取得

vmrun -gu <ユーザ名> -gp <パスワード> listProcessesInGuest "<vmxファイル名>"

* コマンドの実行 (ゲストOSで実行されたコマンドの画面出力はvmrunでは表示されないようです)

vmrun -gu <ユーザ名> -gp <パスワード> runProgramInGuest "<vmxファイル名>" <コマンドライン>

* ホストOS→ゲストOSのファイルコピー

vmrun -gu <ユーザ名> -gp <パスワード> CopyFileFromHostToGuest "<vmxファイル名>" <ホストOS側ファイル名> <ゲストOS側ファイル名>

* ゲストOS→ホストOSのファイルコピー

vmrun -gu <ユーザ名> -gp <パスワード> CopyFileFromGuestToHost "<vmxファイル名>" <ゲストOS側ファイル名> <ホストOS側ファイル名>

実行例



なお、3.1.6のVMware PlayerとペアになるVMware VIX 1.9.6のインストールフォルダの内容は、以下の通り
でした。



追記 : メモ

以前のエントリでも書いたのですが、私のパソコンのCPUの都合により、3.1.6という古いVMware Playerと
この古いVMware Playerに同梱されているVMware ToolsとUbuntu 12.04のOpen VM Toolsを組み合わせて
使用しています。ところが、この3つの組み合わせではVMware VIXが動作しませんでした。そこで、今回は、
3.1.6のVMware PlayerとUbuntu 12.04のOpen VM Toolsの2つだけの組み合わせに変更して、試しました。
ですので、組み合わせる手順が以前のエントリで書いた手順から以下の手順に変わっています。(残念ながら、
こちらの組み合わせでは、VMware Playerのユニティモードが動作しません。さらに、WindowsとVMware
Player上のUbuntuとの間のコピペも動作しません。多分、新しいVMware Playerであれば、同梱のVMware
Toolsと組み合わせて使用するだけで、問題なく動作するだろうと思っています。)

(0) Open VM ToolsもVMware Player同梱VMware Toolsも念の為アンインストールしてリブート

sudo apt-get autoremove dkms fakeroot libdumbnet1 libgtkmm-2.4-1c2a open-vm-dkms open-vm-toolbox open-vm-tools zerofree
sudo /usr/bin/vmware-uninstall-tools.pl
sudo rm -rf /usr/lib/vmware-tools/
sudo rm -rf /etc/vmware-tools/
sudo rm -rf /usr/share/doc/vmware-tools/
sudo shutdown -r now

(1) sudo apt-get --no-install-recommends install open-vm-dkmsでカーネルドライバのみインストール

sudo apt-get --no-install-recommends install open-vm-dkms

(2) sudo apt-get install open-vm-toolsでユーザランドアプリケーションもインストール

sudo apt-get install open-vm-tools

(3) VMware Toolsコマンドで時刻同期機能の有効化とスクリプト実行機能の無効化を行う

sudo vmware-toolbox-cmd timesync enable
sudo vmware-toolbox-cmd script power disable
sudo vmware-toolbox-cmd script resume disable
sudo vmware-toolbox-cmd script suspend disable
sudo vmware-toolbox-cmd script shutdown disable

(4) sudo shutdown -r nowでUbuntuをリブートする

sudo shutdown -r now

追記 : メモ

参考にさせて頂いたブログ

vmrun コマンド メモ(更新)
http://bibourokumikan.blog.fc2.com/blog-entry-31.html

Windows XPにVIX APIをインストールし、ESXとVMWareの情報を取得する
http://symfoware.blog68.fc2.com/blog-entry-647.html

VMWare Server 2で,WindowsからLinuxをOSごと自動操作
http://d.hatena.ne.jp/language_and_engineering/20100514/p1/

追記 : 雑感

私のパソコンの年代物のCPUでは、Ubuntu側でコマンドの実行が始まるまで暫く時間が掛かるのが難点です。
(私のパソコンのCPUは、AMD Athlon 1.2GHzというCPUです。)

追記 : 雑感

x86 UbuntuにQEMUのLinux ARMユーザランドエミュレーション機能がインストールしてあれば、x86 Linux
バイナリを実行するのと同じように、vmrun.exeでx86 Ubuntu上のARM Linuxバイナリも実行出来てしまう?

追記 : メモ

Ubuntu側のGDBSERVERをWindows側から起動するのにも使えそうです。

関連記事

2014/03/18   blog-entry-432   category: Pleiades & CrossGCC

go page top