
Ubuntu日本語フォーラム

ログインしていません。
XPとvineとubuntu10.10を順番にインストールしましたが起動時のGRUBにvineだけ表示されません。
/etc/default/grubと/etc/grub.dをどのように編集すればいいのかが分かりません。
現状は
$ sudo fdisk -l
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 1 1274 10233373+ 7 HPFS/NTFS
/dev/sda2 1275 1289 120487+ 83 Linux
/dev/sda3 1290 2037 6005602+ 83 Linux
/dev/sda4 2037 4864 22709633 5 拡張領域
/dev/sda5 2820 3456 5116671 b W95 FAT32
/dev/sda6 3457 3647 1534176 82 Linux スワップ / Solaris
/dev/sda7 3648 4864 9775521 83 Linux
/dev/sda8 2779 2819 323584 82 Linux スワップ / Solaris
/dev/sda9 2037 2779 5957632 83 Linux
/dev/sda3にvine /dev/sda9がubuntuです。
$ sudo grub-mkdevicemap
$ sudo update-grub
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-2.6.35-27-generic
Found initrd image: /boot/initrd.img-2.6.35-27-generic
Found linux image: /boot/vmlinuz-2.6.35-22-generic
Found initrd image: /boot/initrd.img-2.6.35-22-generic
Found memtest86+ image: /boot/memtest86+.bin
Found Microsoft Windows XP Professional on /dev/sda1
Found Vine Linux 5.2 (Palmer) on /dev/sda3
done
$ sudo os-prober
/dev/sda1:Microsoft Windows XP Professional:Windows:chain
/dev/sda3:Vine Linux 5.2 (Palmer):Vine:linux
ここでは「Vine Linux 5.2 (Palmer) on /dev/sda3」が表示されていますが実際のGRUBのメニュー画面(/boot/grub/grub.cfg)には表示されません。GRUBのメニューに表示させるにはどのようにすればいいのでしょうか?
オフライン
linuxパーティションの場合、os-proberの次にlinux-boot-proberに渡されるのですが、その中でなんらかの原因で起動方法が判明しない場合には、結果的にメニューに載らないようです。
該当のスクリプトおよびそこから呼ばれるスクリプトは、loggerによりwarnやdebugレベルで、syslogdへの出力を行うようになっているので、それらを有効にして内容を確認するのが良さそうなのですが・・・すいません、その辺の設定の仕方はわかりません(この辺がわかる人、お願いします・・・)
ざっと、スクリプトを見た限り、
・そのパーティションが未mountでmountに失敗した。
・そのパーティションがmount済なんだけど、パーティションの種類が不明かLUKSで暗号化されていた。
・mount後の調査で、どの起動タイプとも一致しなかった。
(grub,grub2,lilo,fallback(※)での起動の関連ファイルを調査するようにできているようです)
・上記で起動タイプは一致していたものの、関連ファイルの解析に失敗した。
(関連ファイルを解析して自身の起動のオプションの構築に利用しているようです。器用なつくりだ・・・)
あたりがありそうなので、以下の情報を書いていただくとよいかと思います。
(1)vine linuxの/もしくは/と/boot(別の場合)のファイルシステム(ext4とかntfsとか)
(2)vine linuxが用いているboot loader(grub2とかgrub1とかliloとか)
(3)os-proberがなにか出力していないか、syslogを確認。
※fallbackは、/vmlinu[xz]、/boot/vmlinu[xz]、/boot/vmlinu[xz]*、/bmlinu[xz]* のファイル/シンボリックリンクを見つけて利用する方式。
vine linuxは、grub2が自動判定するところから、ちょっとだけ外れているのかもしれません。原因は気になるのですが、原因を特定しても手の出しようが無い場所(gurb2やos-prober自身を変更することになる)の可能性も高いので、40_customを利用して、vine linux用の起動メニューを定義してしまうのも手です。
オフライン
weyk様お世話になります。
とりあえず分かることは
vineのファイルシステムはext3です。
/boot/grub/menu.lst
# menu.lst generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,1)
# kernel /vmlinuz-version ro root=/dev/sda3
# initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
title Vine Linux (Current kernel)
root (hd0,1)
kernel /vmlinuz ro root=LABEL=/ resume=swap:/dev/sda6 vga=0x314 splash=silent
initrd /initrd.img
title Vine Linux (Previous kernel)
root (hd0,1)
kernel /vmlinuz.old ro root=LABEL=/ resume=swap:/dev/sda6 vga=0x314 splash=silent
initrd /initrd.old.img
title Other
rootnoverify (hd0,0)
chainloader +1
、「syslog」は恥ずかしながらどこで確認したらいいのか分かりません。
オフライン
確認です。
念のため、menu.lstのあるディレクトリに、「grub.cfg」が存在しないことを確認しておいてください(同じディレクトリに両方あると、grub.cfgが優先される、menu.lstは無視されるっぽいため)
ubuntuからみた際の、
/dev/sda3がvine linuxのbootパーティション(/boot)
/dev/sda2がvine linuxのrootパーティション(/)
(vine linuxの他のパーティションは起動には関係ないので問題なし)
ということでよいでしょうか?
もし、そうだとすると・・・
もしかしたら、root(/)とboot(/boot)を分けていると、うまくメニューに取り込めないのかもしれません。もうちょっと調べてみます(この辺の調査はもう、個人的な興味の範囲ですが・・・)
とりあえず起動できるようにということであれば、40_customにmenuentoryの定義を直接追加してしまうのが簡単です。以下のような感じで、40_customの「3行目以降に」追加すると、grub2の自動解析とは別に、独自にgrub.cfgに内容を追記できます。
(カーネルが、currentとpreventで固定のファイル名を持っているのって、管理が楽でいいですね・・・)
---
menuentry "Vine Linux (Current kernel )(on /dev/sda2)" {
insmod ext2
set root=(hd0,2)
linux /vmlinuz ro root=LABEL=/ resume=swap:/dev/sda6 vga=0x314 splash=silent
initrd /initrd.img
}
menuentry "Vine Linux (Previous kernel)(on /dev/sda2)" {
insmod ext2
set root=(hd0,2)
linux /vmlinuz.old ro root=LABEL=/ resume=swap:/dev/sda6 vga=0x314 splash=silent
initrd /initrd.old.img
}
---
※grub.cfgとは独立しているので、もし、grub2の解析でうまく行ってvine linuxがメニューに追加されるようになったとしても、40_customから消さない限りはメニューに載り続けます。
※(on /dev/sda2)とすると、他のOSから取り込んだエントリとして扱われ、他のディストリビューションのgrub2のproberに載らないようです(相互に参照して増え続ける・・・ということを防ぐ)
オフライン
menu.lstのあるディレクトリに、「grub.cfg」はありませんでした。
sda2が/bootでsda3が/vineの/です。
これから、grub.cfgへの追加挑戦してみます。
オフライン