ubuntu 11.04 on mac mini
せっかく買った mac mini server で他の linux も試してみようと思い,ubuntu 11.04 server をインストールしてみた。ただ,ubuntu は 10.04 と同じく 11.04 でも dom0 としては使えないようだった。
インストール
- ubuntu のホームページから,11.04 server の CD イメージ(ubuntu-11.04-server-amd64.iso)をダウンロード。
- UNetbootinで,「ディスクイメージ」で上記の iso イメージを選択して,usb メモリを作成する。
- その usb を mac mini にさして起動すると,rEFIt のメニューに usb ドライブのアイコンがついたペンギンが現れるので,それを選択。
- unetbootin の起動メニューが出るので「install」を選択。(「default」だと CD-ROM が見つからないといわれて起動しない)
- ubuntu 11.04 のカーネルは 2.6.38 なので,ドライバ追加は必要ない。
- configure keyboard では自動検出に<いいえ>を選んで,Japan → Japan と選択。
- ubuntu では1台目のハードディスクが sda,2台目が sdb,起動した usb が sdc として認識された。sda の空き領域に ubuntu 用の ext3 を確保してインストールを継続する。
- grub のインストールでは,ubuntu をインストールしたパーティションを入力するが,後述する理由により,ここでインストールした grub が読まれることはない。
- インストールが終了したら再起動。
- rEFIt のメニューが出たら Start Partitioning Tool を選択。「May I update the MBR as printed above? [y/N]」に y で答える。そのあと再起動。
- しかし,今度は MBR に今インストールしたパーティションは加わらない。MBR を見てみると,squeeze をインストールしたときに加わった Linux が最後になっている。
1. EFI Protective 2. Mac OS X Boot 3. Mac OS X HFS+ 4. Linux
MBR では 4つしか起動パーティションを設定できないので,前に squeeze をインストールした時点で,これ以上起動パーティションを増やせない。rEFIt のペンギンは2匹になるが,どちらを選択しても squeeze の grub が呼ばれる。したがって,squeeze の grub を使って,ubuntu を起動するように設定する必要がある。
grub 設定
- まずはインストール済みの squeeze で立ち上げる。
- インストールした ubuntu を /mnt にマウントして,/mnt/boot/grub/grub.cfg の起動オプションを変更する。後で update-grub をしたとき,ここが読まれて起動オプションが squeeze 側の grub.cfg に反映される。起動オプションの quiet,splash,vt.handoff=7 のすべてを削除する。
- squeeze で update-grub コマンドを入力すると,インストールされた os を自動的に検出して起動メニュー(/boot/grub/grub.cfg)を作ってくれる。
$ sudo update-grub Generating grub.cfg ... Found linux image: /boot/vmlinuz-2.6.32-5-xen-amd64 Found initrd image: /boot/initrd.img-2.6.32-5-xen-amd64 Found linux image: /boot/vmlinuz-2.6.32-5-xen-amd64 Found initrd image: /boot/initrd.img-2.6.32-5-xen-amd64 Found linux image: /boot/vmlinuz-2.6.32-5-amd64 Found initrd image: /boot/initrd.img-2.6.32-5-amd64 Found Mac OS X on /dev/sda2 Found Ubuntu 8.04.4 LTS (8.04) on /dev/sda6 Found Ubuntu 11.04 (11.04) on /dev/sda7 Found Ubuntu 8.04.4 LTS (8.04) on /dev/sdb2 Found Ubuntu 8.04.4 LTS (8.04) on /dev/sdb3 Found Ubuntu 8.04.4 LTS (8.04) on /dev/sdb5 done
- update-grub では xen の domU も grub.cfg に登録されてしまう(上記の Ubuntu 8.04)。手動で後から /boot/grub/grub.cfg の該当項目を削除しても良いが,/etc/grub.d/30_os-prober を変更して Ubuntu 8.04 を無視するようにもできる。
/etc/grub.d/30_os-prober
linux) LINUXPROBED="`linux-boot-prober ${DEVICE} 2> /dev/null | tr ' ' '^' | paste -s -d ' '`" prepare_boot_cache= for LINUX in ${LINUXPROBED} ; do LROOT="`echo ${LINUX} | cut -d ':' -f 1`" LBOOT="`echo ${LINUX} | cut -d ':' -f 2`" LLABEL="`echo ${LINUX} | cut -d ':' -f 3 | tr '^' ' '`" LKERNEL="`echo ${LINUX} | cut -d ':' -f 4`" LINITRD="`echo ${LINUX} | cut -d ':' -f 5`" LPARAMS="`echo ${LINUX} | cut -d ':' -f 6- | tr '^' ' '`" if [ -z "${LLABEL}" ] ; then continue # ignores xen domain U LLABEL="${LONGNAME}" fi
xen の domU では linux-boot-prober が LLABEL を "" で返すのを利用して,上記の場所に continue の1行を加えて domU を無視する。update-grub を実行すると,Found ... は表示されるが,grub.cfg には xen domU は追加されなくなる。