仮想マシン上にマルチブート環境を作成(VirtualBox)


今回は仮想マシン上にマルチブート環境を作成する手順を作成しました。今回の手順では、仮想OS に SLAX(6.1.2)と Android-x86(1.6 と 2.1)、ブートローダGRUB を使用しました。
マルチブート環境を仮想マシン上に作成するには、まず仮想マシンのハードディスク内に複数のパーティションを作成し、それぞれ別のOSをインストールします(どれか1つのOSインストール時にブートローダを必ずインストールします)。
その後ブートローダの設定ファイルに OS がインストールされたパーティションの位置・カーネルファイル名・初期RAMディスクファイル名などを記載することにより、仮想マシン起動時にOSを選択することができるようになります。

本手順作成にあたり、下記のページを参照させていただきました。

ホストOSの環境

今回作業を行ったホストOSの環境です。

パーティション構成とインストールするOSの決定

仮想マシンを作成する前に、ハードディスク内のパーティション構成やインストールするOSを決定します。なお、本手順でのハードディスクデバイスは「/dev/sda」となります。お使いの環境に合わせて読みかえてください。

パーティション パーティションの種類 容量 ファイルシステム インストールするOS OSインストール時に
ブートローダをインストール
/dev/sda1 基本 8GB ext3 SLAX しない
/dev/sda2 基本 8GB ext3 Android-x86 1.6 する
/dev/sda3 基本 8GB ext3 Android-x86 2.1 しない
/dev/sda4 基本 500MB Linux-swap - -

容量の合計:24.5GB

ブートローダ設定ファイルの内容を決める

上記で決定したパーティション構成、インストールOSの情報をもとにブートローダ設定ファイルの内容を決めます。ブートローダには GRUB を使用します。

ブートローダ設定ファイルの内容を確認

以前に作成しました手順*1にて SLAXAndroid-x86 を個別にインストールしておりますので、それぞれのOSのみがインストールされているハードディスク内のブートローダ設定ファイルの内容を確認します。

/boot/lilo.conf の内容(SLAX 6.1.2)

boot=/dev/sda
prompt
timeout=40
lba32
compact
charge-rules
reset
install=text
image=/mnt/HDD/boot/vmlinuz
initrd=/mnt/HDD/boot/initrd.img
label=Slax
root=/dev/ram0
read-write
append="ramdisk_size=6666 changes=slaxchanges"



/grub/menu.lst の内容(Android-x86 1.6)

default=0
timeout=6
root (hd0,1)
splashimage=/grub/android-x86.xpm.gz

title Android-x86 1.6-r2
	kernel /android-1.6-r2/kernel quiet root=/dev/ram0 androidboot_hardware=eeepc acpi_sleep=s3_bios,s3_mode SRC=/android-1.6-r2
	initrd /android-1.6-r2/initrd.img

title Android-x86 1.6-r2 (Debug mode)
	kernel /android-1.6-r2/kernel root=/dev/ram0 androidboot_hardware=eeepc acpi_sleep=s3_bios,s3_mode DEBUG=1 SRC=/android-1.6-r2
	initrd /android-1.6-r2/initrd.img



/grub/menu.lst の内容(Android-x86 2.1)

default=0
timeout=6
root (hd0,0)
splashimage=/grub/android-x86.xpm.gz

title Android-x86 2010-07-20
	kernel /android-2010-07-20/kernel quiet root=/dev/ram0 androidboot_hardware=eeepc acpi_sleep=s3_bios,s3_mode SRC=/android-2010-07-20
	initrd /android-2010-07-20/initrd.img

title Android-x86 2010-07-20 (Debug mode)
	kernel /android-2010-07-20/kernel root=/dev/ram0 androidboot_hardware=eeepc acpi_sleep=s3_bios,s3_mode DEBUG=1 SRC=/android-2010-07-20
	initrd /android-2010-07-20/initrd.img

2010年7月20日にビルドを行ったため、カーネルや初期RAMディスクが設置されているディレクトリの名前が「android-2010-07-20」となっています。

ブートローダ設定ファイルの内容を決定

上記の内容をもとに、設定ファイルの内容を決定します。
title や kernel, initrd といった項目はそのまま使用できますので、OSがインストールされているパーティションの位置を示す、root 項目の記載をそれぞれの OS に合わせればよいことになります。

/grub/menu.lst の内容(マルチブート用)

default=0
timeout=6
splashimage=/grub/android-x86.xpm.gz

title SLAX-6.1.2
	root (hd0,0)
	kernel /boot/vmlinuz root=/dev/ram0 ramdisk_size=6666 changes=slaxchanges rw
	initrd /boot/initrd.img

title Android-x86 1.6-r2
	root (hd0,1)
	kernel /android-1.6-r2/kernel quiet root=/dev/ram0 androidboot_hardware=eeepc acpi_sleep=s3_bios,s3_mode SRC=/android-1.6-r2
	initrd /android-1.6-r2/initrd.img

title Android-x86 1.6-r2 (Debug mode)
	root (hd0,1)
	kernel /android-1.6-r2/kernel root=/dev/ram0 androidboot_hardware=eeepc acpi_sleep=s3_bios,s3_mode DEBUG=1 SRC=/android-1.6-r2
	initrd /android-1.6-r2/initrd.img

title Android-x86 eclair
	root (hd0,2)
	kernel /android-2010-07-20/kernel quiet root=/dev/ram0 androidboot_hardware=eeepc acpi_sleep=s3_bios,s3_mode SRC=/android-2010-07-20
	initrd /android-2010-07-20/initrd.img
	
title Android-x86 eclair (Debug mode)
	root (hd0,2)
	kernel /android-2010-07-20/kernel quiet root=/dev/ram0 androidboot_hardware=eeepc acpi_sleep=s3_bios,s3_mode DEBUG=1 SRC=/android-2010-07-20
	initrd /android-2010-07-20/initrd.img

それぞれの OS タイトルの次の行に、パーティションの位置を示す root の項目を記載しました。
lilo.conf に記載されていた内容は下記のように GRUB の menu.lst 用に直して記載しています。

lilo.confmenui.lst
label=Slaxtitle SLAX-6.1.2
image=/mnt/HDD/boot/vmlinuzkernel /boot/vmlinuz root=/dev/ram0 ramdisk_size=6666 changes=slaxchanges rw
root=/dev/ram0
append="ramdisk_size=6666 changes=slaxchanges"
read-write
initrd=/mnt/HDD/boot/initrd.imginitrd /boot/initrd.img

仮想マシンの作成

仮想マシンを作成します。本手順では仮想化ソフトにVirtualBox(3.2.0)を使用しています。下記内容で仮想マシンを作成しました。


パーティションの設定

上記の「パーティション構成とインストールするOSの決定」の内容に従い、仮想マシンのハードディスク内にパーティションを設定します。
下記は、CDから起動した Xubuntu の GParted を使いパーティション設定&フォーマットを実施した図です。

設定後は仮想マシンを停止します。

OSのインストール

上記の「パーティション構成とインストールするOSの決定」の内容に従い、仮想マシンにOSをインストールします。

Android-x86 1.6 のインストール

仮想マシンのCD/DVDドライブに Android-x86 1.6 のインストーラCDをセットし、仮想マシンを起動します。起動メニューが表示されますので、「Installation - Install Android-x86 to harddisk」を選択してEnterします。

インストール先パーティションに /dev/sda2 を選択します。下図では表示が崩れていますが、あらかじめパーティション設定されたハードディスクであるためのようです。


インストール先パーティションext3 でフォーマットする旨の確認画面が表示されます。Yes を選択してEnterします。


GRUB のインストールについて質問されますので、Yes を選択してEnterします。

インストール終了後は仮想マシンを停止します。

SLAX 6.1.2 のインストール

仮想マシンのCD/DVDドライブに SLAX 6.1.2 のCDをセットし、仮想マシンを起動します。起動メニューが表示されますので、「Slax Text mode」を選択してEnterします。

しばらくすると起動が完了しログイン可能な状態になります。ユーザは「root」パスワードは「toor」です。インストール先パーティションの /dev/sda1 はすでにマウントされていますので、下記のコマンドを実行してCD内のデータをすべてコピーします。以下のコマンドを実行します。

cp -pR /mnt/hdc/* /mnt/sda1



データがコピーされていることを確認後、仮想マシンを停止します。

Android-x86 2.1 のインストール

仮想マシンのCD/DVDドライブに Android-x86 2.1 のインストーラCDをセットし、仮想マシンを起動します。起動メニューが表示されますので、「Installation - Install Android-x86 to harddisk」を選択してEnterします。

インストール先パーティションに /dev/sda3 を選択します。下図でも表示が崩れていますが、あらかじめパーティション設定されたハードディスクであるためのようです。


インストール先パーティションext3 でフォーマットする旨の確認画面が表示されます。Yes を選択してEnterします


GRUB のインストールについて質問されますが、Skip を選択してEnterします。

インストール終了後は仮想マシンを停止します。
以上で OS のインストールは終了です。

ブートローダ設定ファイルの編集

上記「ブートローダ設定ファイルの内容を決定」の内容に従い、ブートローダ設定ファイルを編集します。
仮想マシンのCD/DVDドライブに SLAX 6.1.2 のCDをセットし、仮想マシンを起動します。起動メニューが表示されますので、「Slax Text mode」を選択してEnterします。


しばらくすると起動が完了しログイン可能な状態になります。ユーザは「root」パスワードは「toor」です。GRUBがインストールされているパーティション /dev/sda2 はすでにマウントされていますので、下記コマンドを実施して menu.lst ファイルを編集します。

vi /mnt/sda2/grub/menu.lst

設定ファイル編集後は仮想マシンを停止し、CD/DVDドライブを空の状態にします。

仮想マシンを起動

仮想マシンを起動します。GRUB のメニューが表示されるので、起動したい OS を選択して Enter します。

マルチブート環境作成手順は以上です。