Ubuntu 10.10 トリプルブート(暫定版)成功!

10月29日付日記に記載したあひるのPCシステム構成におけるトリプルブートの設定にやっと成功した。無理やりやりやっつけたというもので、未だ本来の姿ではない。でも機能は果たしている。

状況をメモもしておく。下記囲みは、HDD#1:Ubuntu 10.10の /boot/grub/grub.cfg の内容である。これでトリプルブートが成立している。

  ◆ HDD#1: Ubuntu 10.10 / HDD#2: Fedora 13 / HDD#3: Ubuntu 10.10(テスト用)

これは3台のHDDを接続し、Ubuntu 10.10上で 《 $ sudo update-grub 》 を実行した結果に、緑色文字部分を挿入したもの。緑色文字部分はHDD#2にインストールしてあるFedora13の起動に必要な記述である。先のUbuntu10.04/Fedora13の構成時に、$ sudo update-grubの実行により、Ubuntu10.04の /boot/grub/grub.cnf に自動的に書き込まれたものだ。これをそのままコピーし貼り付けた。これでOK!

#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ###
if [ -s $prefix/grubenv ]; then
set have_grubenv=true
load_env
fi
set default="0"
if [ "${prev_saved_entry}" ]; then
set saved_entry="${prev_saved_entry}"
save_env saved_entry
set prev_saved_entry=
save_env prev_saved_entry
set boot_once=true
fi

function savedefault {
if [ -z "${boot_once}" ]; then
saved_entry="${chosen}"
save_env saved_entry
fi
}

function recordfail {
set recordfail=1
if [ -n "${have_grubenv}" ]; then if [ -z "${boot_once}" ]; then save_env recordfail; fi; fi
}

function load_video {
insmod vbe
insmod vga
}

insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set 62301a6f-5563-4aa0-926f-7f45b1f98bab
if loadfont /usr/share/grub/unicode.pf2 ; then
set gfxmode=640x480
load_video
insmod gfxterm
fi
terminal_output gfxterm
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set 62301a6f-5563-4aa0-926f-7f45b1f98bab
set locale_dir=($root)/boot/grub/locale
set lang=ja
insmod gettext
if [ "${recordfail}" = 1 ]; then
set timeout=-1
else
set timeout=10
fi
### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/05_debian_theme ###
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
### END /etc/grub.d/05_debian_theme ###

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Ubuntu, with Linux 2.6.35-22-generic-pae' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set 62301a6f-5563-4aa0-926f-7f45b1f98bab
linux /boot/vmlinuz-2.6.35-22-generic-pae root=UUID=62301a6f-5563-4aa0-926f-7f45b1f98bab ro quiet splash
initrd /boot/initrd.img-2.6.35-22-generic-pae
}
menuentry 'Ubuntu, with Linux 2.6.35-22-generic-pae (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set 62301a6f-5563-4aa0-926f-7f45b1f98bab
echo 'Loading Linux 2.6.35-22-generic-pae ...'
linux /boot/vmlinuz-2.6.35-22-generic-pae root=UUID=62301a6f-5563-4aa0-926f-7f45b1f98bab ro single
echo 'Loading initial ramdisk ...'
initrd /boot/initrd.img-2.6.35-22-generic-pae
}
### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###
### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/20_memtest86+ ###
menuentry "Memory test (memtest86+)" {
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set 62301a6f-5563-4aa0-926f-7f45b1f98bab
linux16 /boot/memtest86+.bin
}
menuentry "Memory test (memtest86+, serial console 115200)" {
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)'
search --no-floppy --fs-uuid --set 62301a6f-5563-4aa0-926f-7f45b1f98bab
linux16 /boot/memtest86+.bin console=ttyS0,115200n8
}
### END /etc/grub.d/20_memtest86+ ###

### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Fedora (2.6.34.7-56.fc13.i686.PAE) (on /dev/mapper/VolGroup-lv_root)" {
insmod ext2
set root='(hd1,1)'
search --no-floppy --fs-uuid --set 88696b4d-2584-44b9-97e5-926e6232e8c4
linux /vmlinuz-2.6.34.7-56.fc13.i686.PAE ro root=/dev/mapper/VolGroup-lv_root rd_LVM_LV=VolGroup/lv_root vga=0x31B rd_LVM_LV=VolGroup/lv_swap rd_NO_LUKS rd_NO_MD rd_NO_DM LANG=ja_JP.UTF-8 KEYTABLE=jp106 rhgb quiet nomodeset rdblacklist=nouveau
initrd /initramfs-2.6.34.7-56.fc13.i686.PAE.img
}
### END /etc/grub.d/30_os-prober ###



### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Ubuntu, with Linux 2.6.35-22-generic-pae (on /dev/sdc1)" {
insmod part_msdos
insmod ext2
set root='(hd2,msdos1)'
search --no-floppy --fs-uuid --set 9cbb3ed6-f97d-4193-a2d0-c89c513ced56
linux /boot/vmlinuz-2.6.35-22-generic-pae root=UUID=9cbb3ed6-f97d-4193-a2d0-c89c513ced56 ro quiet splash
initrd /boot/initrd.img-2.6.35-22-generic-pae
}
menuentry "Ubuntu, with Linux 2.6.35-22-generic-pae (recovery mode) (on /dev/sdc1)" {
insmod part_msdos
insmod ext2
set root='(hd2,msdos1)'
search --no-floppy --fs-uuid --set 9cbb3ed6-f97d-4193-a2d0-c89c513ced56
linux /boot/vmlinuz-2.6.35-22-generic-pae root=UUID=9cbb3ed6-f97d-4193-a2d0-c89c513ced56 ro single
initrd /boot/initrd.img-2.6.35-22-generic-pae
}
### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ###
# 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.
### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ###
if [ -f $prefix/custom.cfg ]; then
source $prefix/custom.cfg;
fi
### END /etc/grub.d/41_custom ###



●設定の更新

カーネルがアップデートされた場合、Ubuntu10.04の時は $ sudo update-grubを実行すれば、自動的に上記囲み内の記述が書替えられていた。しかし、Ubuntu10.10ではそれが実現されない。HDD#3にあるUbuntu 10.10は認識されるが、Fedora13はスキップされるからである。

そこで上記のFedora13用の緑色記述内の赤文字部分のみを手作業で書替え、緑文字記述全体を貼付し直せば、トリプルブートの設定が維持できるものと思う。このやり方の是非はその時に判明するであろう。この後は $sudo update-grub を実行していない。実行すると、せっかく編集した内容が消えてしまうから。

実際に、Fedora13のカーネルがアップデートされた時、どのように再編集すればよいか? 重要な事を無視していたが、この /boot/grub/grub.cfgファイルは "Do not edit this file"なのだから! このやり方はあくまで変則である。

GRUB2/Ubuntu10.10はまだ安定していないのか? その一つの証拠・・上記あひるの変則構成/設定において、HDD#2とHDD#3を入れ替えても、どのファイルも再編集しないままでHDD#1上のGrub画面で選択すれば、それぞれのOSが起動する。どこかおかしい。

【追記 2010.11.6】
本日、Fedora13のカーネルを2.6.34.7-61にアップデートした。そこで上記緑色セクション内の赤文字部をこのカーネルの番号に修正して、再起動したところFedora13の新カーネル版を無事起動することができた。ただし Ubuntu10.10側の $ sudo update-grubは未だ実行していない。

Ubuntu側のカーネルをアップデートした時に確認してみよう。

検証 2010.11.09】
$ sudo update-grub2 を実行して、本あひる方式を検証してみた。当然のごとく、手作業で追記したFedora13の起動に関わる緑色セクション部は /boot/grub/grub.cfg から欠落していた。そこで、本方式に従って、このブログに記載してある緑色部分を貼り付けた。再起動するとGrubのOS起動画面にFedora13が表示されていた。もちろん起動もOK。
 
●未解決の問題

1. Ubuntu10.04では可能であったマルチブートgrubの自動更新ができない。
2. そのため上記の暫定方式では、Fedora13をFedora14にバージョンアップしたとき、/boot/grub/grub.cfg内の 《緑色部分の情報》が取得できない。→再びUbuntu10.04を使い、2台のHDDの接続を替えてUbuntu10.04側でFedora14:HDD情報を読み取らせなければならない。面倒!



 

COMMENTS

COMMENT FORM

TRACKBACK


この記事にトラックバックする(FC2ブログユーザー)