CentOS 6.6 x86_64 minimalのVagrant boxを作る
1年ほど前にCentOS 6.5 x86_64 minimalのVagrant boxを作った。今回はその方法を元にCentOS 6.6 x86_64 minimalのVagrant boxを作る。
前回とは以下の点が違う。
- 本家のドキュメントに従い、以下の設定を行った。
- OSインストール前に、仮想マシンのオーティオとUSBを無効化した。
- root、vagrantのパスワードを
vagrant
に統一した。
- yumリポジトリの登録は、RepoForgeのみにした。
作成環境は以下。
- Mac OS X Yosemite (10.10.3)
- VirtualBox 4.3.26
- Vagrant 1.7.2
ISOのダウンロード
Download - CentOS WikiからCentOS-6.6-x86_64-minimal.isoをダウンロード。
仮想マシンの新規作成
VirtualBox上で仮想マシンを作成する。
- 仮想マシン名はcentos66。
- TypeはLinux。バージョンはRed Hat (64bit)。
- メモリは512MB。ファイルタイプはVDI、可変サイズにして、容量を8GBにした。
- ネットワークアダプタは、アダプター1のみでNATが割り当てられていることを確認。
仮想マシンの設定変更
OSをインストールする前に、オーディオとUSBを無効化する。
- VirtualBoxマネージャーを起動し、左側から作成した仮想マシンを選択する。
- 右側に表示された仮想マシンの詳細からオーディオを無効化する。
- オーディオをクリックし、設定画面を開く。
- オーディオ有効化のチェックをはずす。
- 同様にUSBを無効化する。
- USBをクリックし、設定画面を開く。
- UBSコントローラを有効化のチェックをはずす。
OSインストール
作成した仮想マシンの設定で、ストレージのCD/DVDの項目の対象ドライブにダウンロードしたISOを指定し、仮想マシンを起動してOSをインストール。
- 日本語環境を構築。
- 英語キーボードを使っているのでキーボードはusを選択。
- ハードディスクでドライブエラーのWarningが表示されるので、Re-initializeを選択。
- Time ZoneはAsia/Tokyo。
- rootのパスワードを設定。
- 本家のドキュメントに従い、
vagrant
にした。
- 本家のドキュメントに従い、
- Partitioning TypeでUse entire driveを選択してパーティションを作成。
- Package Installationが完了するのを待つ。
インストール完了後、再起動してルートユーザでログイン。
eth0の有効化
OS起動時にネットワークカードが認識されるように設定を変更する。
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
...
# これをyesにする。
ONBOOT=yes
OSを一度再起動して認識されるか確認する。
# shutdown -r now
再起動後に
# ifconfig
eth0の項目があればOK。
ホスト側(Mac)からsshでログインする
今後の作業のために、一時的にMacのターミナルからsshでログインできるようにする。
以下は、VirtualBoxの仮想マシンの設定変更。
- 仮想マシンの設定を開く。
- ネットワークのアダプター1(NAT)を選択し、「高度」の内容を展開。
- 下部に表示される「ポートフォワーディング」ボタンを押してメニューを表示。
- 項目を新規追加。ホストポートに2222、ゲストポートに22を入力。他はそのままにしてOKボタンを押す。
- 設定画面のOKボタンを押す。
設定が完了したら、Macのターミナルを開いてsshでログインする。
$ ssh localhost -p 2222 -l root
これでログインできればOK。
yumリポジトリの登録
Repoforgeを登録。該当rpmパッケージのインストールのみ。
# curl -L -O http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
# yum install rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
Vagrantユーザの作成と設定
ユーザ作成
# useradd -m vagrant
# passwd vagrant
パスワードは本家のドキュメントに従い、vagrant
にした。
sshの設定
vagrant ssh
で必要な公開鍵を登録する。
# mkdir /home/vagrant/.ssh
# chmod 700 /home/vagrant/.ssh
# cd /home/vagrant/.ssh
# curl -k -L -o authorized_keys 'https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub'
# chmod 600 /home/vagrant/.ssh/authorized_keys
# chown -R vagrant.vagrant /home/vagrant/.ssh
sudoの設定
vagrant up
コマンドで内部的にsudo
コマンドを使用するので、TTYなしでsudoコマンドを実行できるようにし(1)、vagrantユーザがsudo
コマンドをパスワードなしで使用できる(2)ように設定する。
# visudo
...
# (1) TTYなしでも実行できるようにする
# Defaults requiretty
...
# (2) vagrantユーザがsudoコマンドをパスワードなしで実行できるようにする
vagrant ALL=(ALL) NOPASSWD: ALL
vagrantユーザになって確認する。
# su - vagrant
$ sudo ls /root
rpmパッケージのインストール
インストール済パッケージを更新。
# yum update
kernelのアップデートが含まれていたので、ここでOSを再起動。
開発環境として必要なパッケージとVirtualBox Guest Additionsに必要なパッケージをインストール。
# LANG=C yum groupinstall "Development tools"
# yum install man man-pages man-pages-overrides man-pages-ja
gitは既存のバージョンが古いので、Repoforgeのgitに入れ替えた。
# yum remove git-1.7.1-3.el6_4.1.x86_64 perl-Git-1.7.1-3.el6_4.1.noarch
# yum --enablerepo=rpmforge-extras install git
selinuxの無効化
開発環境なのでselinuxは無効化。
# vi /etc/sysconfig/selinux
# disabledに変更
SELINUX=disabled
iptablesの無効化
こちらも同様の理由で無効化。
# service iptables stop
# service ip6tables stop
自動起動しないようにする。
# chkconfig iptables off
# chkconfig ip6tables off
VirtualBox Guest Additionsのインストール
まず、仮想マシン(VirtualBox VM)のメニューのDevicesからInsert Guest Additions CD image …を選択する。
そして、それをマウントしてCD内のコマンドを実行する。
# mkdir /media/cdrom
# mount -r /dev/cdrom /media/cdrom
# sh /media/cdrom/VBoxLinuxAdditions.run
# umount /media/cdrom
最後に、仮想マシン(VirtualBox VM)のメニューのDevicesからCD/DVD Devicesを選択し、Remove disk from virtual driveを選択してGuest Additions CD imageを取り出す。
udevのルールの削除
boxのOS起動時にネットワークデバイスのエラーが起きるのを避けるため、udevのルールを削除する。
# rm -f /etc/udev/rules.d/70-persistent-net.rules
# rm -rf /dev/.udev/
# rm -f /lib/udev/rules.d/75-persistent-net-generator.rules
box作成のための最適化
最終的なboxのサイズをできる限り小さくするために簡単な最適化を行う。
yum clean
# yum clean all
フラグメンテーションの解消
box作成時の圧縮効率を上げるため、ゼロ埋めしたファイルを作成し、削除する。
# dd if=/dev/zero of=/EMPTY bs=1M
# rm -f /EMPTY
OS シャットダウン
# shutdown -h now
NATのポートフォワーディング設定の削除
作業をしやすくするために行ったポートフォワーディングの設定を削除する。
- 仮想マシンの設定を開く。
- ネットワークのアダプター1(NAT)を選択し、「高度」の内容を展開。
- 下部に表示される「ポートフォワーディング」ボタンを押してメニューを表示。
- 作成した項目を選択してDelキーを押して削除。その後下部のOKボタンを押す。
- 設定画面のOKボタンを押す。
以上でboxの作成準備が完了。
boxの作成
OS Xのターミナルから、Vagrantコマンドでboxを作成する。
$ vagrant package --base centos66
baseオプションは仮想マシン名を指定する。作成されたboxのサイズは482MBほど。
作成したboxの確認
作成したboxをVagrantに登録する。
$ vagrant box add --name CentOS-6.6-x86_64-minimal-ja-20150510 package.box
$ vagrant box list
CentOS-6.6-x86_64-minimal-ja-20150510 (virtualbox, 0)
Vagrantfileを作成して起動。sshでログインできるか確認する。
$ vagrant init CentOS-6.6-x86_64-minimal-ja-20150510
$ vagrant up
$ vagrant ssh
以上でboxの作成は完了。