マルチブート

作成日:2012/07/09
最終更新日:2020/07/05

マルチブート

作成日:2012/07/09
最終更新日:2020/07/05

概要

LangurはPCに複数のOSをインストールしマルチブート環境を構築しています。本頁ではマルチブート環境の構築方法のメモ書きを記載します。

近年仮想化技術が進み、PC上にマルチブート環境を構築することは少なくなりつつあるかもしれません。たしかに、仮想PCを構成しその上で別のOSを動かした場合、同時に複数のOSを利用できるので便利です。また、仮想環境で動作させることにより、デバイスドライバのことを考えなくてもよくなることが多いので使用している機器のデバイスドライバが無いOSを動作させる場合に非常に楽です。なのでLangurも仮想化環境を使用しています。

しかしながら、マルチブート環境にまったく利点がないわけでなく、使用するOSのみでCPUを占有することでハードウェア、ソフトウェアの持つ性能を充分に堪能できます。

仮想化環境については別頁に記載することとし、本頁ではマルチブート環境の構築について記載します。

注意事項

本頁に記載されている方法を使用する場合は御自身の責任において行ってください。 記載内容がもとで不利益・不具合が生じても作者は一切の責任を負いません。 あらかじめご了承ください。

下準備

まずは、どんなOSをインストールするのかを考えます。入れるOSの種類によってはインストールする順番が重要になってきます。Windows系のOSは最初にインストールします。また、Linuxは以前、HDDの先頭8.4GB以内に/bootパーティションが必要だったと記憶しています。もちろん、今はLinuxにそのような制約はありませんが。このように制約があることもあるので、計画をたてておきます。

他には、ブートローダに何をつかうつもりでいるのか考えておくと良いでしょう。NTLDR、LILO、GRUB、boot0などOSに添付されているものやフリーウェアのものもありますし、システムコマンダーのようなプロプライエタリのソフトウェアもあります。ブートローダは再インストールすることが無いOSに付属しているものを利用すると管理が楽です。多重にブートローダを経由させてOSを起動する手もありますし、実現したい方法を考えて計画を練るのも楽しいですよ。

今回は以下の3つのOSを導入することにし、ブートローダはUbuntuに添付されているgrubを使用することにします。それぞれのOSのインストールについては別頁に記載します。Ubuntu 14.04が出た際に再インストールする可能性はありますが、その時にまた考えることにします。

  • Windows XP Professional
  • FreeBSD 9.0 i386
  • Ubuntu 12.04 i386

入れるOSが決まったら次にパーティションテーブルを考えます。今回は500GBのHDDに上記のOSをインストールします。Ubuntuをメインの環境にして、仮想環境も構築するように考えているのでWindowsとFreeBSDにはそれぞれ80GBずつ割当て、残りをUbuntuのための領域にすることにします。また、その際、2GBほどをLinux用のSWAP領域とすることにします。

インストールする順番

Windowsを含むマルチブート環境を構築する場合には、Windowsからインストールするのが鉄則です。Windowsはインストール後、HDDのMBR(マスターブートレコード)にWindows用のブートローダを強制的にインストールします。そのため、他のOSを起動できなくなる可能性があります。故に最初にインストールします。

次にインストールするのは、FreeBSDでもUbuntuでも良いのですが、今回はFreeBSDにします。FreeBSD 8.xまではブートローダのインストールを選択できたのですが、FreeBSD 9.0から選択する画面を見つけられなくなりました。そのため、意図したブートローダを利用できない可能性が出てきたので、先にインストールすることにします。

最後にUbuntuをインストールし、GRUBの設定を行います。

GRUBの設定

Ubuntuをインストールした時点で、WindowsとUbuntuのデュアルブートは実現できているかと思います。なので、FreeBSDのブートをできるように設定ファイルを書換えます。GRUBの設定ファイルは/boot/grub/以下にありますが、Ubuntuでは直接書換えずに/etc/grub.d/以下にある設定ファイルを生成するためのファイルを書き換え、update-grubコマンドで設定ファイルを生成します。今回はその他のOSになるので、/etc/grub.d/40_customに追記します。

手順

1. /etc/grub.d/40_customの末尾に追記する。

ソース1. /etc/grub.d/40_custom.diff
--- /etc/grub.d/40_custom.org   2012-07-08 19:59:01.923408505 +0900
+++ /etc/grub.d/40_custom       2012-07-08 20:07:03.735661500 +0900
@@ -3,3 +3,8 @@
 # This file provides an easy way to add custom menu entries.  Simply type the
 # menu entries you want to add after this comment.  Be careful not to change
 # the 'exec tail' line above.
+menuentry "FreeBSD 9.0 (on /dev/sda2)" {
+       set root='(hd0,msdos2)'
+       drivemap -s (hd0) ${root}
+       chainloader +1
+}

2. sudo update-grubを実行する。

コマンド1. 実行したコマンド
langur@yuteki:~$ sudo update-grub
[sudo] password for langur: 
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.2.0-26-generic-pae
Found initrd image: /boot/initrd.img-3.2.0-26-generic-pae
Found linux image: /boot/vmlinuz-3.2.0-23-generic-pae
Found initrd image: /boot/initrd.img-3.2.0-23-generic-pae
Found memtest86+ image: /boot/memtest86+.bin
Found Microsoft Windows XP Professional on /dev/sda1
Found unknown Linux distribution on /dev/sda2
done
langur@yuteki:~$