お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2011-03-07 12:10:33

ro-bai
新しいメンバ
登録日: 2011-03-05

GRUBメニュー

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のメニューに表示させるにはどのようにすればいいのでしょうか?

オフライン

 

#2 2011-03-07 14:13:23

weyk
メンバ
登録日: 2009-04-03

Re: 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用の起動メニューを定義してしまうのも手です。

オフライン

 

#3 2011-03-07 16:09:02

ro-bai
新しいメンバ
登録日: 2011-03-05

Re: GRUBメニュー

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」は恥ずかしながらどこで確認したらいいのか分かりません。

オフライン

 

#4 2011-03-07 17:12:22

weyk
メンバ
登録日: 2009-04-03

Re: GRUBメニュー

 確認です。

 念のため、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に載らないようです(相互に参照して増え続ける・・・ということを防ぐ)

オフライン

 

#5 2011-03-07 18:43:43

ro-bai
新しいメンバ
登録日: 2011-03-05

Re: GRUBメニュー

menu.lstのあるディレクトリに、「grub.cfg」はありませんでした。

sda2が/bootでsda3が/vineの/です。

これから、grub.cfgへの追加挑戦してみます。

オフライン

 

Board footer

Powered by FluxBB