Vagrant+VirtualBox で CentOS-6.5 のBoxを作るメモ
Vagrant+VirtualBox で CentOS-6.5 のBoxを作るメモ
CentOS-6.5のboxを作ることになったが、6.4のときのメモを参考にした。 6.6の時にもまた参考にするだろうから残しておく。 2014/05/30。
ホスト
- Windows7Pro 64bit
- VirtualBox-4.3.12 r93733
- Vagrant-1.4.3
- Cygwin-1.7.25(32bit)
ゲスト
CentOSインストール
vm作成
適当でいいが、作成するホストOSのリソースに余裕がないので控えめにした。
- Linux / RedHat(64bit)
- 512MB RAM, CPU1個, 8MB VRAM, 40GB HDD(vmdk,可変)
- Audio無効
- eth0=NAT, eth1=host-only
CentOSインストール
CentOS-6.4-x86_64-minimal.iso を仮想CDドライブにセット。 すぐにF12を押してCDROMから起動。
インストーラでTAB押して、kick startの指定。101キーなので注意。
vmlinuz initrd=initrd.img ksdevice=eth0 ks=http://X.X.X.X/ks.cfg
インストールが終わるまで放っておく。 CDチェックをするかどうか問われるようなら、ksの指定に失敗している。
インストールが終わったらOSのISOを外して再起動する。
確認
コンソールからrootでログイン。パスワードはvagrant。 eth1を上げて確認できたら、以降はターミナルから操作する。
VirtualBox側でDHCPを有効にしておくこと。
ifup eth1
ifconfig eth1
sshで接続確認。vagrant/vagrant。IPはeth1。
ssh vagrant@192.168.33.101
non-passでsudoが可能なことを確認
sudo id
yum-fastestmirrorの設定
日本の早いサーバならどこでもいい
sudo sh -c "echo 'prefer=ftp.jaist.ac.jp' >> /etc/yum/pluginconf.d/fastestmirror.conf"
ゲストOSに VirtualBox Guest Additions を入れる
host-guest間の、時刻・ディレクトリ・クリップボードの共有をするためのツール。
インストールに必要なパッケージを追加する 作業はrootでやってしまう。
[vagrant@localhost ~]$ sudo su -
[root@localhost ~]# yum install -y kernel-devel make gcc perl
VirtualBoxのGUI上で、デバイス>GuestAdditionsのCDイメージを挿入。 仮想cdromが設定されるのでマウントしてインストール。
[root@localhost cdrom]# mkdir -p /mnt/cdrom
[root@localhost cdrom]# mount -r /dev/cdrom /mnt/cdrom && cd /mnt/cdrom
[root@localhost cdrom]# ./VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 4.3.12 Guest Additions for Linux............
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
Removing existing VirtualBox non-DKMS kernel modules [ OK ]
Building the VirtualBox Guest Additions kernel modules
Building the main Guest Additions module [ OK ]
Building the shared folder support module [ OK ]
Building the OpenGL support module [ OK ]
Doing non-kernel setup of the Guest Additions [ OK ]
Starting the VirtualBox Guest Additions [ OK ]
Installing the Window System drivers
Could not find the X.Org or XFree86 Window System, skipping.
確認。古いVirtualBoxだと、Xが入っていなくて最後の項目が FAILED になる場合があるが無視してOK。
[root@localhost cdrom]# VBoxControl --version
4.3.12r93733
[root@localhost cdrom]# VBoxService -V
4.3.12r93733
このインストールのために導入したパッケージを削除する。minimalな状態は極力ディスクを空けておきたいため。
[root@localhost ~]# yum -y remove kernel-devel gcc glibc-devel glibc-headers kernel-headers ppl cloog-ppl cpp mpfr libgomp perl-*
[root@localhost ~]# exit
RSA鍵を作っておく
ホストの ~/.vagrant.d/insecure_private_key から公開鍵を作り、ペアで置いておく。
$hostOS$ ssh vagrant@192.168.33.101 "mkdir -m 700 ~/.ssh"
$hostOS$ scp ~/.vagrant.d/insecure_private_key vagrant@192.168.33.101:/home/vagrant/.ssh/id_rsa
gusetOS$ cd ~vagrant/.ssh
guestOS$ chmod 400 id_rsa
guestOS$ ssh-keygen -y -f id_rsa > id_rsa.pub
guestOS$ cat id_rsa.pub > authorized_keys
guestOS$ chmod 644 id_rsa.pub authorized_keys
おまけ
起動画面をtext、待ち時間を2秒にする
cd /boot/grub
sudo cp grub.conf grub.conf.org
sudo sed -i -e "s/^timeout=5$/timeout=2/" grub.conf
sudo sed -i -e "s/rhgb quiet$//" grub.conf
おそうじ
fastestmirror
sudo yum clean all
ネットワーク設定
sudo rm /etc/sysconfig/network-scripts/ifcfg-eth1
sudo rm /etc/udev/rules.d/70-persistent-net.rules
vmdkのおそうじ
ゲストOSでは空きをゼロ埋め。(時間かかる)
[root@localhost ~]# dd if=/dev/zero bs=100MB count=500 of=/0bits || rm -f /0bits
[root@localhost ~]# dd if=/dev/zero bs=100MB count=5 of=/boot/0bits || rm -f /boot/0bits
ゲストOSシャットダウン後、ホストOSからvmdkを deflag & shrink
$ vmware-vdiskmanager.exe -d cent65-64.vmdk
Defragment: 100% done.
Defragmentation completed successfully.
$ vmware-vdiskmanager.exe -k cent65-64.vmdk
Shrink: 100% done.
Shrink completed successfully.
1.78G→1.2Gに。けっこうかさばる。
$ ll *.vmdk
-rwxr-xr-x 1 pen None 1209794560 May 30 13:01 cent65-64.vmdk*
Vagrant boxing
$ mkdir XXX && cd XXX
$ vagrant package --base <VirtualBox上のVM名> --output centos6.5-x86_64_minimal.box
[centos6.4-x86_64_minimal] Clearing any previously set forwarded ports...
[centos6.4-x86_64_minimal] Creating temporary directory for export...
[centos6.4-x86_64_minimal] Exporting VM...
[centos6.4-x86_64_minimal] Compressing package to: C:/vm/vm1/package.box
400MBに。ちなみにshrinkをしないと570MB程だったので、shrinkはした方がよい。
$ ll centos6.5-x86_64_minimal.box
-rwxr-xr-x 1 pen None 402938214 May 30 13:03 centos6.5-x86_64_minimal.box
boxの登録
$ vagrant box add cent65 centos6.5-x86_64_minimal.box
Downloading box from URL: file:C:\cygwin\home\pen\project\box\centos6.5-x86_64_minimal.box
Extracting box...ate: 630M/s, Estimated time remaining: --:--:--)
Successfully added box 'cent65' with provider 'virtualbox'!
Shutdown completed cleanly
$ vagrant box list
cent65 (virtualbox)
付録
今回使ったks
キーボードとTZに日本のものを設定、パッケージはminimalで、vagrantユーザを追加してある。 rootのパスワードはvagrantにしてある。
install
cdrom
lang en_US.UTF-8
keyboard jp106
network --bootproto=dhcp
rootpw vagrant
firewall --enabled --service=ssh
authconfig --enableshadow --passalgo=sha512
#selinux --disabled
timezone --utc Asia/Tokyo
bootloader --location=mbr
#autostep --autoscreenshot
text
skipx
zerombr
clearpart --all --initlabel
autopart
firstboot --disabled
reboot
%packages --ignoremissing
@base
@core
%end
%post
# non pass sudo for vagrant user
/usr/bin/yum -y install sudo
/usr/sbin/groupadd -g 501 vagrant
/usr/sbin/useradd -g 501 -u 501 -G wheel vagrant
echo "vagrant" | passwd --stdin vagrant
echo "vagrant ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/vagrant
echo "Defaults:vagrant !requiretty" >> /etc/sudoers.d/vagrant
chmod 0440 /etc/sudoers.d/vagrant