VirtualBoxをCUIで使う

とりあえず、CUIでゲストOSをインストールするまでのメモです。
VirtualBoxはインストールされているのが前提です。
CUIの操作では VBoxManage コマンドを使用します。


以下の例は、Ubuntuをインストールする時のログから作成しています。


環境:
ホストはFreeBSDで、VirtualBoxportsからインストール。
バージョンは 3.2.12。
ゲストの画面表示はVNCを使用する。

仮想HDDの作成

# VBoxManage createhd --filename ubuntu --size 20000 --remember

VM定義の作成/設定

# VBoxManage list ostypes
# VBoxManage createvm --name ubuntu --ostyle Ubuntu --register 
# VBoxManage modifyvm ubuntu --memory 768 --vram 16 --acpi on --ioapic on --hwvirtex on --nestedpaging on -- cpus 1 --boot1 dvd --boo2 disk --nic1 bridged --nictype1 virtio --cableconnected1 on --bridgeadapter1 re0 --macaddress1 auto

list ostypes でOS定義をしらべて、createvm の ostype オプションに指定する。


設定補足:

  • メモリ: 768MB
  • VRAM: 16MB
  • ACPI有効
  • IO APIC有効
  • CPU数: 1
  • HW仮想化支援有効
  • ネステッドページング有効
  • 起動ドライブ1: DVDドライブ
  • 起動ドライブ2: HDD
  • NIC1

VMにHDDをセット

# VBoxManage storagectl ubuntu --name ide --controller PIIX4
# VBoxManage storageattach ubuntu --storagectl ide --port 0 --device 0 --type hdd --medium ubuntu.vdi 

VMにインストールディスクをセット

# VBoxManage openmedium dvd /path/to/installdisc.iso
# VBoxManage storageattach ubuntu --storagectl ide --port 1 --device 0 --type dvddrive --medium /path/to/installdisc.iso

openmedium は 4.0 からは不要らしい。

起動

nohup VBoxHeadless -s ubuntu -n -m 12345

オプションの -n でVNCを有効にし、-mでポートを指定。
VBoxHeadless コマンドで起動する場合は、プロセスがシェルから切り離されないので nohupコマンドで起動する。
VBoxHeadless で起動した場合は、 VBoxManage で設定を変えることは出来ない模様。

VBoxManage startvm ubuntu --type headless

で起動すると、デーモン化されるらしいが、VNCサーバを有効にするオプションは不明。


起動後はリモートからVNCビューワで接続後は、GUIでインストールする場合と同じ。


同じ方法で、Windowsもインストールできることを確認。
ただし、GuestAdditionsをインストールするまではマウスの位置がずれる模様。

ADT plugin がStackOverFlowError

Androidを趣味でいじる毎日ですが、
昨日、突如として、
layout.xmlをひらくと、以下のエラーがでるようになりました。

java.lang.StackOverflowError
at java.util.HashMap.get(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
at com.android.ide.eclipse.adt.internal.editors.layout.configuration.ConfigurationComposite.isTheme(Unknown Source)
・・・(以下繰り返し)

まっさらなeclipseプラグインを入れただけでも同様のエラーがでるという怪現象です。
Android SDKの方がおかしくなってるのかな。。。


追記:
プロジェクトが壊れて(?)ましたorz
原因はよくわからないんですが・・・。
おかしいプロジェクトを取り除けば元通り。

BitLockerとダイナミックディスクの併用はできない?(Windows7)

500GBのディスクが2つあまったので、ダイナミックディスクミラーリングをしてみました。
その上で、BitLockerで暗号化しようと思ったら、「暗号化不可能」とexplorer上で表示されました。
コントロールパネルのBitLockerからも該当のディスクは表示されていません。
※環境は Windows7 x64 Ultimate です。


シンプルボリュームからミラーボリュームまでいろいろ試してみましたが、どれもだめでした(当然ながらRAID-5はやってない)。
ダイナミックディスクにした時点でアウトのようです。


ただ、「見かけ上」出来そうな状態に見えるやり方を発見。
ベーシックディスクのままパーティション作成し、領域の拡張でもう1つのHDDをスパンボリューム化すると、explorer上、BitLockerの状態は「無効」となり、使用できるように表示されます。
当然、BitLockerを実行しようとするとエラーが表示されて出来ません。
めんどくさいので確認してませんが、たぶん、再起動したら「暗号化不可能」ってでるんでしょうね。


ま、BitLocker使って、ミラーリングやりたいならハードウェアRAIDでやれってことでしょう。(できるとはおもうけど、やってないので実際は不明)
今のマザーボードに付属のRAIDコントローラでRAIDは、おまけ機能感があるので、不具合とかハードウェア変えたときの互換性とかが怖くて試す気になりませんが・・・

Ubuntu 9.04 で Core Duo が1コアしか認識されない件

いままでFedoraばっかり使ってたのですが、アップグレードが面倒くさいので(解説みるかぎりメディアにやかないといけない)、常用してるノートのLinuxUbuntuに移行しました。


で、インストールしてみたところ、CPUがどうやら1つしかない。

いろいろぐぐってみても、「kernelを generic にしろ」というのがほとんど。


もとから、generic だったし、

$ uname -a
Linux aqua 2.6.28-13-generic #45-Ubuntu SMP Tue Jun 30 19:49:51 UTC 2009 i686 GNU/Linux

って、SMPになってる。


dmesg には、以下のような出力があって、どうやら1コア放置されてるみたいだった。

[    0.000000] SMP: Allowing 2 CPUs, 1 hotplug CPUs


で、dmesg の出力をじっくりみてたら、

[    0.000000] ACPI: BIOS bug: multiple APIC/MADT found, using 0
[    0.000000] ACPI: If "acpi_apic_instance=2" works better, notify linux-acpi@vger.kernel.org

って、でてたので、起動時のカーネルオプションに acpi_apic_instance=2 って加えてみたら、ちゃんと2コア認識してくれました。

If "acpi_apic_instance=2" works better, notify linux-acpi@vger.kernel.org

ってかかれてるけど、何を連絡したらいいんだろ。


結局、使ってるノート(VAIO VGN-SZ90PS)のBIOSバグってことのよう。すくなくともUbuntuはそう認識してる。


それにしても、CPUがCore Duoっていう(not Core2 Duo)、64bitにも、VTにも対応してないCPUなので、遊べる範囲が狭い・・・

netbeansのフォントを綺麗に表示する

LinuxNetBeans 6.5を自前でインストールしたんですが、フォントにアンチエイリアスがかかってませんでした。

Java6の場合は起動時に
* -Dawt.useSystemAAFontSettings=on
* -Dawt.useSystemAAFontSettings=gasp

http://d.hatena.ne.jp/itiri/20080224/1203856116

を見て、 netbeans-6.5/etc/netbeans.conf の netbeans_default_options に

 -J-Dawt.useSystemAAFontSettings=on

を加えて、起動すると、アンチエイリアスの効いたNetBeansに出会えました。

Rails 2.3 で script/process/spawner なくなるの?

Rails 2.3 がRCになったということで、
英語が読めないので、日本語訳されたリリースノートをみてみたわけですが、

レアだと思うけど、inspector、reaper、spawnerに依存した形式でデプロイしてる方へ。Railsコアにこれらは同梱されていません。必要であればirs_process_scripts pluginを使ってください。

http://webtama.jp/series/railstips/articles/31

・・・もろにレアケースあてはまってます!
fcgi の起動に spawner つかってます。
個人的には mongrel ですが、これまた spawner を使用。


そもそも、いまどき、
 Apache --- reverse proxy ---> lighttpd --- fcgi ---> rails
ってのは古いんでしょうか。
いろいろな事情から変える気がまったくありませんが。
# めんどくさい+スキルの問題


今時、どうやってデプロイするのが流行なんでしょう。
さっそく調べないと!

論文

1月の頭から論文にかかりっきりで、更新できませんでした。
まぁ更新するような話もあまりないんですが。

何を研究していたかですが、
Firefox拡張機能でネットワーク関連についてひたすら調べてたことから予想できますが,
Firefox拡張機能P2Pシステムを作っていました。
FirefoxP2P Webブラウザ化していたと言えばわかりやすいでしょうか。
とりあえずのところ、P2P(適当プロトコル)で通信してブラウザにWebを表示できるようにはなりました。
すぐにフリーズするというまだまだ実用とはほど遠い代物ですが。
あと、実装もハリボテです。 C++つかえばいいところをぜんぶJavaScriptで書いているという・・・。


で、半分挫折して, P2P化したProxyに逃げましたw
Overlay Weaverを利用してProxyサーバを実験で作ってみました。
単体だとおおむね良好に動作します。
研究に使えるPCが数台しかない本末転倒な状況なので、ほんとうにまともに動くかは不明です。
あと、Proxyとしての処理はまだまだなのが課題です。


これらの、残骸、そのうちオープンソースとして公開するつもりです。
まずは汚いコードをどうにかしなくてはいけませんがw


それはさておき、これらを1つの論文にするわけですが。
動かないFirefoxのアドオンがメインで、ある程度まともに動くが後付けなOW製P2P Proxyがサブです。
しかし、逆にすると、新規性も、おもしろ味もまったくなくなってしまうのでそれもできず。
一緒に書くと何とも書きづらい組み合わせです・・・。


方向性を見失った結果がこれだよ!