Archlinux の Vagrant Box (VirtualBox) を一から作る

目的

作業

仮想マシンの作成

Virtualbox仮想マシンを作成する。

  • 名前は vagrant-archlinux
  • メモリは 256MB
  • ディスクは VDI で約 40GB
  • 接続には NAT

ArchLinux のインストール

ここからイメージを落としてくる。 マウントし、起動。

  • パーティションは分けない。 swap もめんどいからなし
  • ホスト名は vagrant-archlinux
  • /etc/localtime/usr/share/zoneinfo/UTC
  • passwd: vagrant
  • その他 Installation guide - ArchWiki に書かれている普通の手順を踏む

ここで再起動し、ハードディスクから起動し直す

  • ネットワークは dhcpcd で設定
  • # useradd -m -G wheel -s /bin/bash vagrant; passwd vagrant する。パスワードはvagrant
  • sudo を設定する
    • %wheel ALL=(ALL) NOPASSWD: ALL を uncomment
    • Defaults env_keep += "SSH_AUTH_SOCK" という行を加える
  • ここを見つつ、 virtualbox-guest-utils をインストールする
  • ruby, rubygems, puppet, openssh をインストールする。 sudo gem install chef する。
  • ssh鍵を https://raw.githubusercontent.com/mitchellh/vagrant/master/keys/vagrant.pub からコピーし、 /home/vagrant/.ssh/authorized_keys に置く。 chmod 700 /home/vagrant/.ssh をついでにする。
  • /etc/ssh/sshd_configUseDNS no を追記する
  • sshd を立てる

マシンを終了する。

box の作成

$ vagrant package --base vagrant-archlinux

仮想マシンの名前を使って package を実行する。

この時点で、 .box のサイズは 545M だった。 大きすぎるので、 WEB の情報も参考にサイズを減らすことを試した。

サイズを縮める

  • パッケージのキャッシュを削除する。 pacman -Scc
  • gem install chef に必要だった gcc と make を削除。 pacman -Rs gcc make
  • ディスクの空き部分をゼロで埋める? dd if=/dev/zero of=/empty bs=1M; rm /empty

結果

サイズは 288M になった。

縮める前に比べれば予想以上に減った。ここまで減ったのはゼロで埋めたのが大きいのかも? もしかしたら既存の http://www.vagrantbox.es/ のものもゼロで埋めるだけで減るかも??

一番初めの考えではもっと小さくなると思っていたけれど、最終的には 300M 程度になった。 virtualbox-guest-utils の依存で xorg 系のパッケージが軒並み入ったりしてそれが容量を増やしているような印象を受けたけど、正直分からない。

参考