Mac版VirtualboxでWindows XPを動かしてます。

現在10GBのディスクを16GBにしたい。

% VBoxManage modifyhd windows_xp_ie6-disk1.vmdk --resize 16000
0%...
Progress state: VBOX_E_NOT_SUPPORTED
VBoxManage: error: Resize hard disk operation for this format is not implemented yet!

not implemented yet・・・だと・・・?

新しいディスクを作って中身をコピーならできるので新しいディスク(今度は.vdi)を作成。

% VBoxManage clonehd windows_xp_ie6-disk1.vmdk NewHardDisk1.vdi --existing
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Clone hard disk created in format 'VDI'. UUID: 0e01a2f9-eeb4-44a1-8a87-1ec508afbf9b

やったね。

Windows XPのプライマリパーティションを拡張する

これだけではWindows上に未割り当て領域が増えるだけなので「ディスクの管理」から拡張しようとしましたが、Windows XPではプライマリパーティションは拡張できない。(多分最近のWindowsはできる)

EaseUS Partition Master Homeというフリーソフトで簡単に出来ました。便利。

仮想化ソフト上だとバックアップして試すのが簡単なので安心してできますね。

以前、VirtualBox 3系から4系に移行しても問題無く使えたと書いたけど問題あった。VirtualBoxの3系から持ってきたイメージで下記のような警告が出るようになった。

VirtualBox VM

無視して使ったが下記のようなエラーが出てスナップショットからの再開が出来ない。(スナップショットを破棄して普通に起動すれば動く)

VirtualBox

これはあの警告のせいだと思い、指示通りにOracle VM VirtualBox Extension Packをダウンロードしてインストールした。しかし直らない。仕方ないので下記のようにUSB 2.0を無効にしたら直った。

windows_xp_ie6 - ポート

本格的に使うにはちょっと早いのかもしらん。

% vagrant up
Vagrant has detected that you have VirtualBox version 3.2.12 installed!
Vagrant requires that you use at least VirtualBox version 4.0. Please install
a more recent version of VirtualBox to continue.

The Vagrant 0.6.x series supports VirtualBox 3.2, so if you're stuck with that
version, then please use the 0.6.x series of Vagrant.

Any earlier versions of VirtualBox are completely unsupported. Please upgrade.

VirtualBox 3.2系から4系へは自動アップデートが行われないので手動でアップデートする必要がある。忌々しい東京三菱UFJ銀行(法人版)とIE6の為に確保してあるWindows XP無印はアップデートしても問題無く動きました。

Macで動くアプリを作るのに真っさらなMac環境が必要だったのでVirtualboxでMacが動かないか格闘中。

mac_os_x_10_6 [実行中]

"Still waiting for root device"とひたすら出続けるだけで上手く行きませんな。ググッても出てくるのはWindowsでMacを動かそう系ばっかりなのでやり方が違うのかも?

他のソフトだったら動いたりするんですかね?

herokuのpg_dump.sqlしかバックアップが無い状態からDBを復旧させるため、適当なpostgres環境が必要になったんですが、$ brew install postgresql はv9.0とか未来的な感じが面倒そうだったので簡単にVirtualBoxの仮想環境が作れるという噂のVagrantを使ってみました。

Vagrant - Welcome

Vagrant - Welcome

Vagrantとは?

VirtualBoxの仮想環境をCUIから操作するツールです。数回コマンドを叩くだけで環境が作れるのでとても便利。rubyで書かれたシンプルな設定ファイルを元に面倒な仮想環境構築を自動化してくれます。

VM自体はVagrantfileという設定ファイルで設定し、VMの中身はchefで設定するという感じです。僕はchef使ったこと無いので今回はVM作成したあとはsshで入ってpostgresをインストールしちゃいました。それだけでもOSのCDイメージ落としてきて、インストールして・・・って面倒だったのが簡単になったし、バックグラウンド動作してくれるし、環境がキモくなったらすぐ削除して作り直せるのが精神衛生上良いですね。

Ubuntu 10.04 (Lucid Lynx) 環境を作る

$ gem install vagrant
$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box
$ vagrant box list
lucid32

OSイメージをダウンロードするので結構時間かかります。lucid32ってのがbox名です。

$ mkdir env
$ cd env
$ vagrant init lucid32
create Vagrantfile
$ ls
Vagrantfile

適当なディレクトリを作ってvagrant initでVagrantfileを作ります。RakefileとかCapfileとかGemfileとかあるので分かると思いますが、このディレクトリで実行するvagrantコマンドがこの設定ファイルを参照します。

# Vagrantfile
Vagrant::Config.run do |config|
config.vm.box = "lucid32"
end
$ vagrant up

vagrant upで同ディレクトリのVagrantfileを元にVMイメージを作ってバックグラウンドで起動します。(2回目からは単に起動します)

$ vagrant ssh
Warning: Permanently added '[localhost]:2222' (RSA) to the list of known hosts.
Linux vagrantup 2.6.32-24-generic-pae #39-Ubuntu SMP Wed Jul 28 07:39:26 UTC 2010 i686 GNU/Linux
Ubuntu 10.04.1 LTS

Welcome to Ubuntu!
* Documentation: https://help.ubuntu.com/
Last login: Wed Aug 11 17:42:46 2010

vagrant sshでVMにvagrantユーザーでsshで接続します。(デフォルトではlocalhost:2222をVMの22にforwardします)

sudoできるので後は普通のubuntuです。通常、設定はchefでやるみたいです。

忙しい人のためのVagrant

これだけだと何がどうなってるのか解かり辛いのでもう一個環境を作ってみます。

$ mkdir env2
$ cd env2
$ vagrant init lucid32
$ vagrant up

この状態でVirtualBoxの設定画面を見てます。

Oracle VM VirtualBox

ちゃんと2個のVMが実行中です。何にも設定してないですが実際はどうなってるんでしょう?vagrant haltでVMを停止して設定を見てみます。

仮想メディアマネージャ

$ tree ~/Library/VirtualBox/HardDisks
/Users/komagata/Library/VirtualBox/HardDisks
├── lucid.vmdk
├── lucid_1.vmdk
└── windows_xp_ie6.vmdk

HDDイメージはそれぞれ別々に作ってくれています。

% tree ~/.vagrant 
/Users/komagata/.vagrant
├── boxes
│   └── lucid32
│   ├── Vagrantfile
│   ├── box.mf
│   ├── box.ovf
│   └── lucid.vmdk
├── logs
└── tmp

box(CDイメージとVMのデフォルト設定)の方は共通です。

$ vagrant destroy
$ cd ..
$ rm -rf env2
$ ls ~/Library/VirtualBox/HardDisks
lucid.vmdk windows_xp_ie6.vmdk

vagrant destroyで綺麗に消えるので気軽に作成・削除が出来ます。

作りがシンプルで気に入ってしまいました。当初の目的だったpostgresはデータを救い出したあと要らないのでVMごと消してしまいました。そのぐらい気軽に環境が作れるところがいいですね。