LoginSignup
5
7

More than 5 years have passed since last update.

配布用 VirtualBox 仮想マシンイメージを作成する

Last updated at Posted at 2018-05-29

概要

一般利用者に配布することを想定した仮想マシンイメージを作成する場合、2つの問題点があります。

  • 配布側がパスワードを設定していると、パスワードを変更しないまま使う利用者が多発して、セキュリティ問題を引き起こしやすい。
  • 仮想マシンイメージのファイルサイズはきわめて大きいため、サーバに負担をかけやすい。

そのため、本稿では、

  • 配布側はパスワードを設定しない。利用者の初回ログイン時にパスワード設定を強制する。
  • 仮想マシンイメージのファイルサイズをできるだけ縮小する。

方法を説明します。

なお、ゲスト OS は Debian 系であること、ホスト OS は Linux 系であること、を前提とした記述になっていますので、他の環境に適用する場合には適宜に読み替えて頂くようにお願いします。

仮想マシンイメージの作成

OS のインストール

既存の記事が多数ありますから、どれか適当な記事を参考にして下さい。

VirtualBox Guest Additions のインストール

(1) open-vm-tools パッケージがインストールされている場合は、アンインストール・再起動しておきます。

sudo dpkg --purge remove open-vm-tools
sudo reboot

(2) VirtualBox 上で、「デバイス」→「Guest Additions CD イメージを挿入」とメニューを選択して,ゲスト OS から CD イメージが見えるようにしておきます。これで、ゲスト OS 側からは /media/cdrom0/ 以下にイメージが見えるようになっているはず。

(3) 以下のコマンドを実行。

sudo apt-get update
sudo apt-get install linux-headers-amd64 build-essential
sudo sh /media/cdrom0/VBoxLinuxAdditions.run

なお、インストールされている VirtualBox Guest Additions のバージョンは、以下のコマンドで確認できます。

VBoxControl --version

仮想マシンイメージのファイルサイズを縮小

本稿では、一般利用者のログイン用ユーザを example というアカウント名であることにします。必要に応じて、適当なアカウント名に変更して下さい。

(1) ゲスト OS 上で、ログイン用ユーザを sudo グループに加えておく。

sudo apt-get install sudo
sudo adduser example sudo

(2) ゲスト OS に、空き領域を開放するためのコマンド zerofree をインストールしておく。

sudo apt-get install zerofree

(3) ゲスト OS の root アカウントのパスワードを一時的に設定しておきます。

sudo passwd root

(4) ゲスト OS を再起動して、シングルユーザモードに入ります(この時、前段で設定した root アカウントのパスワードが必要になります)。その上で、以下のコマンドを実行して、空き領域を開放します。

mount -n -o remount,ro -t ext4 /dev/sda1 /
fsck.ext4 -f /dev/sda1
zerofree -v /dev/sda1
mount -o remount,rw -t ext4 /dev/sda1 /

(5) ゲスト OS の root アカウントのパスワードを削除し、さらに root アカウントをロックします。

passwd -d root
passwd -l root

これで、この仮想マシンに root アカウントでログインすることはできなくなったはずです。

(6) ゲスト OS のログイン用ユーザ example のパスワードを空にして、かつ期限切れに設定します。

passwd -d example
passwd -e example

これで、次回に example ユーザでログインする時に、自動的にパスワード設定が強制されます。

(7) ゲスト OS 上のコマンドライン履歴など機微情報を削除しておきます。

history -c

(8) ゲスト OS を停止します。ステップ(4)からここまでが、シングルユーザモードでの作業になります。

shutdown -h now

(8) ホスト側で以下を実行して、ディスクイメージを小さくします。

VBoxManage modifyhd 仮想マシンイメージ名.vdi --compact

(9) 配布用にディスクイメージを圧縮します。

7z a -tzip 配布用ファイル名.zip 仮想マシンイメージ名.vdi

なお、手元で試した限りでは、zip コマンドはファイルが大きすぎて異常終了するので使えませんでした。

5
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
7