開発環境を新しいUbuntuで作り直すついでにVagrantのbase boxを作ってみました。タイトルの通り、素のUbuntu Server 13.04にGuest Additonをインストールして、いらんやつを色々消してサイズを小さくしたものです。なんと驚きの約300MBまで小さくなりました。Vagrantがインストールされている状態で、

$ vagrant box add ubuntu1304 http://muratayusuke.com/vagrant/boxes/ubuntu_server_13.04_amd64.box

ってやるとboxが追加されるので、

$ vagrant init ubuntu1304
$ vagrant up

でこのboxを元にした新しいVMが立ち上がります。Vagrantについてはこの辺をご覧ください。
Vagrantで簡単仮想マシン構築

これにlubuntu-desktopを入れて普通にデスクトップマシンとして使ってますが、余計なものが入ってないのでよく使うツールを色々入れてもVMのサイズが1GBぐらいしかなくてかなりいい感じです。(普通にUbuntu Desktopを入れるとあっという間に10GB近くなる)

SPONSERD LINK

base boxの作り方

ここから自分用のメモを兼ねてbox作成手順を書いていきます。下記の参考サイトから部分部分使って作りました。

参考サイト:
Creating Debian Squeeze Box for Vagrant
VirtualBoxのGuest AdditionsをUbuntu Serverにインストールする方法
Vagrant のベースBOX作成手順 (Scientific Linux 6.1)

まずは普通にUbuntu Serverをインストールするためのディスクイメージをダウンロード
Download Ubuntu Server

そしてVirtual Boxから新規VMを作成して、先ほどのディスクイメージからUbuntu Serverをインストール。インストール時の設定ではopenssh serverだけ追加で入れた気がします。ログインユーザは後で消すので適当につけてください。

インストールできたらVMを再起動して、VM上のコンソールで下記のコマンドを叩いていきます。

# rootになる
$ sudo su

# 事前準備
$ apt-get update
$ apt-get upgrade
$ apt-get install build-essential module-assistant
$ m-a prepare

# guest additionのインストール
$ mount /dev/dvd /mnt
$ apt-get install xserver-xorg xserver-xorg-core
$ sh /mnt/VBoxLinuxAdditions.run

# vagrantユーザにパスワードなしでsudoできる権限をつける
$ visudo
  # add "vagrant ALL=(ALL) NOPASSWD: ALL" after "root    ALL=(ALL) ALL "

# vagrantユーザの作成
$ adduser vagrant
  # パスワードはvagrant
$ mkdir /home/vagrant/.ssh
$ chmod 700 /home/vagrant/.ssh
$ cd /home/vagrant/.ssh
$ curl 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub' > authorized_keys
$ chown -R vagrant:vagrant /home/vagrant/.ssh

# boxサイズ圧縮のために不要ファイルを削除
$ rm -rf /usr/share/doc
$ rm -rf /usr/src/vboxguest*
$ rm -rf /usr/src/virtualbox-ose-guest*
$ rm -rf /usr/src/linux-headers*
$ find /var/cache -type f -exec rm -rf {} \;
$ rm -rf /usr/share/locale/{af,am,ar,as,ast,az,bal,be,bg,bn,bn_IN,br,bs,byn,ca,cr,cs,csb,cy,da,de,de_AT,dz,el,en_AU,en_CA,eo,es,et,et_EE,eu,fa,fi,fo,fr,fur,ga,gez,gl,gu,haw,he,hi,hr,hu,hy,id,is,it,ka,kk,km,kn,ko,kok,ku,ky,lg,lt,lv,mg,mi,mk,ml,mn,mr,ms,mt,nb,ne,nl,nn,no,nso,oc,or,pa,pl,ps,pt,pt_BR,qu,ro,ru,rw,si,sk,sl,so,sq,sr,sr*latin,sv,sw,ta,te,th,ti,tig,tk,tl,tr,tt,ur,urd,ve,vi,wa,wal,wo,xh,zh,zh_HK,zh_CN,zh_TW,zu}
$ dd if=/dev/zero of=/EMPTY bs=1M
$ rm /EMPTY

# 再起動してvagrantユーザでログイン
$ shutdown -r now

# 一時的に作ったログインユーザの削除
$ deluser hoge

# 全部終わったらシャットダウン
$ shutdown -h now

これでboxの元になるVMができたので、ホストOS側のターミナルでboxを作ります。

$ vagrant package --base ubuntu1304
  # ubuntu1304のところは、最初にVirtual Boxで作ったVMの名前を入れてください

するとカレントディレクトリにpackage.boxという名前でbase boxができているので、後は煮るなり焼くなり。