仮想マシン上にマルチブート環境を作成(VirtualBox)
今回は仮想マシン上にマルチブート環境を作成する手順を作成しました。今回の手順では、仮想OS に SLAX(6.1.2)と Android-x86(1.6 と 2.1)、ブートローダに GRUB を使用しました。
マルチブート環境を仮想マシン上に作成するには、まず仮想マシンのハードディスク内に複数のパーティションを作成し、それぞれ別のOSをインストールします(どれか1つのOSインストール時にブートローダを必ずインストールします)。
その後ブートローダの設定ファイルに OS がインストールされたパーティションの位置・カーネルファイル名・初期RAMディスクファイル名などを記載することにより、仮想マシン起動時にOSを選択することができるようになります。
本手順作成にあたり、下記のページを参照させていただきました。
ホストOSの環境
今回作業を行ったホストOSの環境です。
- 機種名:MacBook
- CPU:Intel Core 2 Duo(2 GHz)
- メモリ:1GB
- OS:Mac OS X 10.6
- 仮想化ソフト:VirtualBox(version 3.2.0)
パーティション構成とインストールする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にて SLAX や Android-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.conf | menui.lst |
---|---|
label=Slax | title SLAX-6.1.2 |
image=/mnt/HDD/boot/vmlinuz | kernel /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.img | initrd /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ドライブを空の状態にします。