CentOS 6.6のboxを作ったときのメモ。
事前準備
-
VirtualBoxインストール
↓からダウンロード
https://www.virtualbox.org/wiki/Downloads -
vagrantインストール
↓からダウンロード
https://www.vagrantup.com/downloads.html -
CentOSインストールメディアのダウンロード
↓からダウンロード
http://vault.centos.org/6.6/isos/x86_64/- CentOS-6.6-x86_64-minimal.iso
- CentOS-6.6-x86_64-bin-DVD1.iso
VM作成
VirutalBoxでVMを作成。
- 名称:centos66
- タイプ:linux
- バージョン:Red Hat(64bit)
- メモリーサイズ:768MB
- ハードディスク
- ファイルタイプ:VDI
- 可変/固定:可変
- サイズ:100GB
VM作成後の変更
VM作成後に、VirtualBoxのVM設定画面で以下を実施。
- オーディオ無効化
- USBコントローラを無効化
CentOSインストール
CentOS-6.6-x86_64-minimal.isoを使用してインストール(Box化する上で特別な考慮は無い)。
rootパスワードは vagrant とする。
ネットワークIFの有効化
VM作成完了後、コンソールにログインし、ネットワークIFを有効化。
[root@localhost ~]# ifup eth0
Determining IP information for eth0... done
[root@localhost ~]#
sshポートフォワードの設定(操作しやすいようにするため)
VMの設定画面(「設定」→「ネットワーク」→「アダプター1」→「ポートフォワーディング」)でSSHポートフォワードの設定をする。
項目 | 設定値 |
---|---|
名前 | ssh |
プロトコル | TCP |
ホストIP | <空白> |
ホストポート | 任意(今回は2223に設定) |
ゲストIP | <空白> |
ゲストポート | 22 |
VMログイン(SSH)
VMにSSHでログインする。
dev hishi$ ssh root@127.0.0.1 -p 2223
root@127.0.0.1's password:
Last login: Sat Jan 16 10:43:04 2016
[root@localhost ~]#
ネットワークIFの有効化(OS起動時)
ネットワークIFがOS起動時に自動で有効化されるように変更。
[root@localhost ~]# cp -p /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/bk.ifcfg-eth0
[root@localhost ~]#
[root@localhost ~]# sed -i -e 's/^ONBOOT=no/ONBOOT=yes/' /etc/sysconfig/network-scripts/ifcfg-eth0
[root@localhost ~]#
[root@localhost ~]# diff /etc/sysconfig/network-scripts/bk.ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0
5c5
< ONBOOT=no
---
> ONBOOT=yes
[root@localhost ~]#
vagrantユーザ作成
vagrantユーザのパスワードは vagrant とする。
[root@localhost ~]# useradd vagrant
[root@localhost ~]#
[root@localhost ~]# echo "vagrant" | passwd vagrant --stdin
ユーザー vagrant のパスワードを変更。
passwd: 全ての認証トークンが正しく更新できました。
[root@localhost ~]#
sudo設定
vagrantユーザに対して以下の許可を入れる。
- パスワードレスでsudoを許可
- tty(コンソール接続)でない場合(pts:ssh接続の場合)もsudoを許可
※2.を入れないと、vagrant up
した際に下記エラーが出る。
dev hishi$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
..
..省略
..
default: /vagrant => /Users/hishi/dev
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!
mkdir -p /vagrant
Stdout from the command:
Stderr from the command:
sudo: sudo を実行するには tty がなければいけません。すみません
dev hishi$
[root@localhost ~]# cp -p /etc/sudoers /etc/sudoers.bk
[root@localhost ~]#
[root@localhost ~]# visudo
[root@localhost ~]#
[root@localhost ~]# diff /etc/sudoers.bk /etc/sudoers
56a57
> Defaults:vagrant !requiretty
98a100
> vagrant ALL=(ALL) NOPASSWD:ALL
[root@localhost ~]#
ssh接続時の名前解決を無効化
[root@localhost ~]# cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.bk
[root@localhost ~]#
[root@localhost ~]# sed -i -e 's/^#UseDNS yes/UseDNS no/' /etc/ssh/sshd_config
[root@localhost ~]#
[root@localhost ~]# diff /etc/ssh/sshd_config.bk /etc/ssh/sshd_config
122c122
< #UseDNS yes
---
> UseDNS no
[root@localhost ~]#
ssh公開鍵の設定
[root@localhost ~]# su - vagrant
[vagrant@localhost ~]$
[vagrant@localhost ~]$ mkdir .ssh
[vagrant@localhost ~]$
[vagrant@localhost ~]$ curl -L https://raw.github.com/mitchellh/vagrant/master/keys/vagrant.pub > ~/.ssh/authorized_keys
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
102 409 102 409 0 0 393 0 0:00:01 0:00:01 --:--:-- 393
[vagrant@localhost ~]$
[vagrant@localhost ~]$ chmod 700 .ssh
[vagrant@localhost ~]$
[vagrant@localhost ~]$ chmod 600 .ssh/authorized_keys
[vagrant@localhost ~]$
[vagrant@localhost ~]$ exit
logout
[root@localhost ~]#
CentOSインストールメディアのマウント
RPMパッケージをインストールするため、下記メディアをマウントする。
※マウントポイントは、/media/CentOSにしておくと、標準のリポジトリ定義(c6-media)が使えるので楽。
- CentOS-6.6-x86_64-bin-DVD1.iso
[root@localhost ~]# mkdir /media/CentOS
[root@localhost ~]#
[root@localhost ~]# mount /dev/cdrom /media/CentOS
mount: ブロックデバイス /dev/sr0 は書き込み禁止です、読込み専用でマウントします
[root@localhost ~]#
gcc, kernel-develのインストール
[root@localhost ~]# yum --disablerepo=\* --enablerepo=c6-media install gcc kernel-devel
読み込んだプラグイン:fastestmirror
インストール処理の設定をしています
c6-media | 4.0 kB 00:00 ...
c6-media/primary_db | 4.5 MB 00:00 ...
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package gcc.x86_64 0:4.4.7-11.el6 will be インストール
--> 依存性の処理をしています: libgomp = 4.4.7-11.el6 のパッケージ: gcc-4.4.7-11.el6.x86_64
--> 依存性の処理をしています: cpp = 4.4.7-11.el6 のパッケージ: gcc-4.4.7-11.el6.x86_64
--> 依存性の処理をしています: glibc-devel >= 2.2.90-12 のパッケージ: gcc-4.4.7-11.el6.x86_64
--> 依存性の処理をしています: cloog-ppl >= 0.15 のパッケージ: gcc-4.4.7-11.el6.x86_64
--> 依存性の処理をしています: libgomp.so.1()(64bit) のパッケージ: gcc-4.4.7-11.el6.x86_64
---> Package kernel-devel.x86_64 0:2.6.32-504.el6 will be インストール
--> トランザクションの確認を実行しています。
---> Package cloog-ppl.x86_64 0:0.15.7-1.2.el6 will be インストール
--> 依存性の処理をしています: libppl_c.so.2()(64bit) のパッケージ: cloog-ppl-0.15.7-1.2.el6.x86_64
--> 依存性の処理をしています: libppl.so.7()(64bit) のパッケージ: cloog-ppl-0.15.7-1.2.el6.x86_64
---> Package cpp.x86_64 0:4.4.7-11.el6 will be インストール
--> 依存性の処理をしています: libmpfr.so.1()(64bit) のパッケージ: cpp-4.4.7-11.el6.x86_64
---> Package glibc-devel.x86_64 0:2.12-1.149.el6 will be インストール
--> 依存性の処理をしています: glibc-headers = 2.12-1.149.el6 のパッケージ: glibc-devel-2.12-1.149.el6.x86_64
--> 依存性の処理をしています: glibc-headers のパッケージ: glibc-devel-2.12-1.149.el6.x86_64
---> Package libgomp.x86_64 0:4.4.7-11.el6 will be インストール
--> トランザクションの確認を実行しています。
---> Package glibc-headers.x86_64 0:2.12-1.149.el6 will be インストール
--> 依存性の処理をしています: kernel-headers >= 2.2.1 のパッケージ: glibc-headers-2.12-1.149.el6.x86_64
--> 依存性の処理をしています: kernel-headers のパッケージ: glibc-headers-2.12-1.149.el6.x86_64
---> Package mpfr.x86_64 0:2.4.1-6.el6 will be インストール
---> Package ppl.x86_64 0:0.10.2-11.el6 will be インストール
--> トランザクションの確認を実行しています。
---> Package kernel-headers.x86_64 0:2.6.32-504.el6 will be インストール
--> 依存性解決を終了しました。
依存性を解決しました
================================================================================
パッケージ アーキテクチャ
バージョン リポジトリー 容量
================================================================================
インストールしています:
gcc x86_64 4.4.7-11.el6 c6-media 10 M
kernel-devel x86_64 2.6.32-504.el6 c6-media 9.3 M
依存性関連でのインストールをします。:
cloog-ppl x86_64 0.15.7-1.2.el6 c6-media 93 k
cpp x86_64 4.4.7-11.el6 c6-media 3.7 M
glibc-devel x86_64 2.12-1.149.el6 c6-media 983 k
glibc-headers x86_64 2.12-1.149.el6 c6-media 611 k
kernel-headers x86_64 2.6.32-504.el6 c6-media 3.3 M
libgomp x86_64 4.4.7-11.el6 c6-media 133 k
mpfr x86_64 2.4.1-6.el6 c6-media 157 k
ppl x86_64 0.10.2-11.el6 c6-media 1.3 M
トランザクションの要約
================================================================================
インストール 10 パッケージ
総ダウンロード容量: 30 M
インストール済み容量: 63 M
これでいいですか? [y/N]y
パッケージをダウンロードしています:
--------------------------------------------------------------------------------
合計 93 MB/s | 30 MB 00:00
警告: rpmts_HdrFromFdno: ヘッダ V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
Importing GPG key 0xC105B9DE:
Userid : CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org>
Package: centos-release-6-6.el6.centos.12.2.x86_64 (@anaconda-CentOS-201410241409.x86_64/6.6)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
これでいいですか? [y/N]y
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
インストールしています : ppl-0.10.2-11.el6.x86_64 1/10
インストールしています : cloog-ppl-0.15.7-1.2.el6.x86_64 2/10
インストールしています : kernel-headers-2.6.32-504.el6.x86_64 3/10
インストールしています : glibc-headers-2.12-1.149.el6.x86_64 4/10
インストールしています : glibc-devel-2.12-1.149.el6.x86_64 5/10
インストールしています : mpfr-2.4.1-6.el6.x86_64 6/10
インストールしています : cpp-4.4.7-11.el6.x86_64 7/10
インストールしています : libgomp-4.4.7-11.el6.x86_64 8/10
インストールしています : gcc-4.4.7-11.el6.x86_64 9/10
インストールしています : kernel-devel-2.6.32-504.el6.x86_64 10/10
Verifying : gcc-4.4.7-11.el6.x86_64 1/10
Verifying : libgomp-4.4.7-11.el6.x86_64 2/10
Verifying : glibc-headers-2.12-1.149.el6.x86_64 3/10
Verifying : glibc-devel-2.12-1.149.el6.x86_64 4/10
Verifying : mpfr-2.4.1-6.el6.x86_64 5/10
Verifying : kernel-devel-2.6.32-504.el6.x86_64 6/10
Verifying : cpp-4.4.7-11.el6.x86_64 7/10
Verifying : kernel-headers-2.6.32-504.el6.x86_64 8/10
Verifying : ppl-0.10.2-11.el6.x86_64 9/10
Verifying : cloog-ppl-0.15.7-1.2.el6.x86_64 10/10
インストール:
gcc.x86_64 0:4.4.7-11.el6 kernel-devel.x86_64 0:2.6.32-504.el6
依存性関連をインストールしました:
cloog-ppl.x86_64 0:0.15.7-1.2.el6 cpp.x86_64 0:4.4.7-11.el6
glibc-devel.x86_64 0:2.12-1.149.el6 glibc-headers.x86_64 0:2.12-1.149.el6
kernel-headers.x86_64 0:2.6.32-504.el6 libgomp.x86_64 0:4.4.7-11.el6
mpfr.x86_64 0:2.4.1-6.el6 ppl.x86_64 0:0.10.2-11.el6
完了しました!
[root@localhost ~]#
CentOSインストールメディアのアンマウント
[root@localhost ~]# umount /media/CentOS/
[root@localhost ~]#
VirtualBoxの設定画面から以下を選択する。
[ストレージ]->[光学ドライブのCDマーク]->[仮想ドライブからディスクを除去]
VirtualBox Guest Additionsのマウント
VirtualBoxのメニューから以下を選択する。
[Devices]->[Insert Guest Additions CD Image..]
[root@localhost ~]# mkdir /media/GuestAdditions
[root@localhost ~]#
[root@localhost ~]# mount /dev/cdrom /media/GuestAdditions/
mount: ブロックデバイス /dev/sr0 は書き込み禁止です、読込み専用でマウントします
[root@localhost ~]#
VirtualBox Guest Additionsのインストール
[root@localhost ~]# sh /media/GuestAdditions/VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 5.0.10 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 [失敗]
(Look at /var/log/vboxadd-install.log to find out what went wrong)
Doing non-kernel setup of the Guest Additions [ OK ]
Installing the Window System drivers
Could not find the X.Org or XFree86 Window System, skipping.
[root@localhost ~]#
→失敗。。。
ログを見てみる。
..
..省略
..
set -e ; perl /usr/src/kernels/2.6.32-504.el6.x86_64/scripts/recordmcount.pl "x86_64" "64" "objdump" "objcopy" "gcc" "ld" "nm" "" "" "1" "/tmp/vbox.0/VBoxGuest-linux.o";
/bin/sh: perl: コマンドが見つかりません
make[2]: *** [/tmp/vbox.0/VBoxGuest-linux.o] エラー 127
make[1]: *** [_module_/tmp/vbox.0] エラー 2
make: *** [vboxguest] エラー 2
Creating user for the Guest Additions.
Creating udev rule for the Guest Additions kernel module.
→perlも必要らしい。
VirtualBox Guest Additionsをアンマウントし、再度CentOSインストールメディアをマウント。
[root@localhost ~]# umount /media/GuestAdditions/
[root@localhost ~]#
[root@localhost ~]# mount /dev/cdrom /media/CentOS/
mount: ブロックデバイス /dev/sr0 は書き込み禁止です、読込み専用でマウントします
[root@localhost ~]#
perlをインストール。
[root@localhost ~]# yum --disablerepo=\* --enablerepo=c6-media install perl
読み込んだプラグイン:fastestmirror
インストール処理の設定をしています
Loading mirror speeds from cached hostfile
* c6-media:
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> Package perl.x86_64 4:5.10.1-136.el6 will be インストール
--> 依存性の処理をしています: perl-libs = 4:5.10.1-136.el6 のパッケージ: 4:perl-5.10.1-136.el6.x86_64
--> 依存性の処理をしています: perl-libs のパッケージ: 4:perl-5.10.1-136.el6.x86_64
--> 依存性の処理をしています: perl(version) のパッケージ: 4:perl-5.10.1-136.el6.x86_64
--> 依存性の処理をしています: perl(Pod::Simple) のパッケージ: 4:perl-5.10.1-136.el6.x86_64
--> 依存性の処理をしています: perl(Module::Pluggable) のパッケージ: 4:perl-5.10.1-136.el6.x86_64
--> 依存性の処理をしています: libperl.so()(64bit) のパッケージ: 4:perl-5.10.1-136.el6.x86_64
--> トランザクションの確認を実行しています。
---> Package perl-Module-Pluggable.x86_64 1:3.90-136.el6 will be インストール
---> Package perl-Pod-Simple.x86_64 1:3.13-136.el6 will be インストール
--> 依存性の処理をしています: perl(Pod::Escapes) >= 1.04 のパッケージ: 1:perl-Pod-Simple-3.13-136.el6.x86_64
---> Package perl-libs.x86_64 4:5.10.1-136.el6 will be インストール
---> Package perl-version.x86_64 3:0.77-136.el6 will be インストール
--> トランザクションの確認を実行しています。
---> Package perl-Pod-Escapes.x86_64 1:1.04-136.el6 will be インストール
--> 依存性解決を終了しました。
依存性を解決しました
================================================================================
パッケージ アーキテクチャ
バージョン リポジトリー 容量
================================================================================
インストールしています:
perl x86_64 4:5.10.1-136.el6 c6-media 10 M
依存性関連でのインストールをします。:
perl-Module-Pluggable x86_64 1:3.90-136.el6 c6-media 40 k
perl-Pod-Escapes x86_64 1:1.04-136.el6 c6-media 32 k
perl-Pod-Simple x86_64 1:3.13-136.el6 c6-media 212 k
perl-libs x86_64 4:5.10.1-136.el6 c6-media 578 k
perl-version x86_64 3:0.77-136.el6 c6-media 51 k
トランザクションの要約
================================================================================
インストール 6 パッケージ
総ダウンロード容量: 11 M
インストール済み容量: 36 M
これでいいですか? [y/N]y
パッケージをダウンロードしています:
--------------------------------------------------------------------------------
合計 79 MB/s | 11 MB 00:00
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
インストールしています : 1:perl-Pod-Escapes-1.04-136.el6.x86_64 1/6
インストールしています : 4:perl-libs-5.10.1-136.el6.x86_64 2/6
インストールしています : 1:perl-Pod-Simple-3.13-136.el6.x86_64 3/6
インストールしています : 3:perl-version-0.77-136.el6.x86_64 4/6
インストールしています : 1:perl-Module-Pluggable-3.90-136.el6.x86_64 5/6
インストールしています : 4:perl-5.10.1-136.el6.x86_64 6/6
Verifying : 1:perl-Module-Pluggable-3.90-136.el6.x86_64 1/6
Verifying : 1:perl-Pod-Escapes-1.04-136.el6.x86_64 2/6
Verifying : 4:perl-5.10.1-136.el6.x86_64 3/6
Verifying : 4:perl-libs-5.10.1-136.el6.x86_64 4/6
Verifying : 1:perl-Pod-Simple-3.13-136.el6.x86_64 5/6
Verifying : 3:perl-version-0.77-136.el6.x86_64 6/6
インストール:
perl.x86_64 4:5.10.1-136.el6
依存性関連をインストールしました:
perl-Module-Pluggable.x86_64 1:3.90-136.el6
perl-Pod-Escapes.x86_64 1:1.04-136.el6
perl-Pod-Simple.x86_64 1:3.13-136.el6
perl-libs.x86_64 4:5.10.1-136.el6
perl-version.x86_64 3:0.77-136.el6
完了しました!
[root@localhost ~]#
そして、再インストール
[root@localhost ~]# /etc/init.d/vboxadd setup
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 ]
[root@localhost ~]#
→成功
box作成
dev hishi$ vagrant package --base centos66
==> centos66: Clearing any previously set forwarded ports...
==> centos66: Exporting VM...
==> centos66: Compressing package to: /Users/hishi/dev/package.box
dev hishi$
box登録
dev hishi$ vagrant box add centos66 package.box
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos66' (v0) for provider:
box: Unpacking necessary files from: file:///Users/hishi/dev/package.box
==> box: Successfully added box 'centos66' (v0) for 'virtualbox'!
dev hishi$
Vagrantfile作成
dev hishi$ vagrant init centos66
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
dev hishi$
vm起動
dev hishi$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centos66'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: dev_default_1452999624828_26394
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
==> default: Forwarding ports...
default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default:
default: Vagrant insecure key detected. Vagrant will automatically replace
default: this with a newly generated keypair for better security.
default:
default: Inserting generated public key within guest...
default: Removing insecure key from the guest if it's present...
default: Key inserted! Disconnecting and reconnecting using new SSH key...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Mounting shared folders...
default: /vagrant => /Users/hishi/dev
dev hishi$
vmログイン
dev hishi$ vagrant ssh
Last login: Sun Jan 17 11:47:55 2016
[vagrant@localhost ~]$
参考にしたサイト
https://docs.vagrantup.com/v2/boxes/base.html
http://www.virtualbox.org/manual/ch04.html
https://docs.vagrantup.com/v2/virtualbox/boxes.html