
Ubuntu日本語フォーラム

ログインしていません。
質問は初めてとなります。宜しくお願いいたします。投稿が慣れていないことから、コード等不慣れな点がありお許しください:)
導入そのものは完了しており、お伺いしたい内容は、件名の GRUB2 OS検出の法則もしくはルールになります。
HDD構成は以下です。
モデル: ATA Hitachi HDT72503 (scsi)
ディスク /dev/sda: 320GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
番号 開始 終了 サイズ タイプ ファイルシステム フラグ
1 32.3kB 57.9GB 57.9GB primary ntfs
2 57.9GB 320GB 262GB extended
5 57.9GB 66.3GB 8390MB logical linux-swap(v1) swap
6 66.3GB 66.8GB 518MB logical ext4
7 66.8GB 99.9GB 33.0GB logical ext4
8 99.9GB 131GB 31.5GB logical ext4 boot
9 131GB 163GB 31.5GB logical ext4
10 163GB 242GB 79.7GB logical ntfs
11 242GB 320GB 77.6GB logical ntfs
基本区画 sda1 Windows/XP
拡張領域 sda2
論理区画 sda5 swap
sda6 Ubuntu 9.10 64bit /boot
sda7 Ubuntu 9.10 64bit /
sda8 Fedora FC12 32bit /
sda9 Fedora FC12 64bit /
sda10 NTFS D
sda11 NTFS E
ブートローダーはUbuntu 9.10 GRUB2になります。上記の状態にて、Fedora FC12 32bitはそのままUbuntu 9.10を導入することによりGRUB2にマッピングされたのですが、Fedora FC12 64bitは $ sudo grub-mkdevicemap を実施し、さらに $ sudo update-grub を行っても認識されませんでした。
ここで、Fedora FC12 64bitに関しては
$ sudo gedit /etc/grub.d/40_custom
を実行し
menuentry "Fedora (Constantine 64bit) (on /dev/sda9)" {
insmod ext2
set root=(hd0,9)
chainloader +1
}を追加することで、二段階ブートは可能です。
そこでなのですが、GRUB2のルールとして Ubuntu,Win,Other1まではマッピングし、それ以上は上記のように加えていくことがルールなのでしょうか?
オフライン
make999さん による投稿:
お伺いしたい内容は、件名の GRUB2 OS検出の法則もしくはルールになります。
/etc/grub.d/30_osproberです。
オフライン
jackalopeさんへ ご返信有難うございます。
jackalope による投稿:
/etc/grub.d/30_osproberです。
という内容でしたので、中身を拝見したのですが、
echo "Found ${LONGNAME} on ${DEVICE}" >&2
found_other_os=1
を
echo "Found ${LONGNAME} on ${DEVICE}" >&2
found_other_os=2
にし、sudo update-grubを実施しました。しかし、Fedora FC12 64bitは検出されないようです(/etc/grub.d/40_customは一度消しています)。わたしが修正した場所は見当違いであり、違う場所を変更すべきでしょうか?
オフライン
何を意図して修正したのかわかりませんが、通常、内部変数を適当に変更しても、悪くなることは合っても、動作が改善する可能性は無いです。
# 特に、grub関連で動作が悪くなった場合、致命的(=起動できない)な可能性があります。
grub2では、全デバイス(ドライブ)の、全パーティションの中を参照して、(特に、20_osproberのLinux担当分部では)Linuxのroot(かboot)と判断されると自動的にメニューに載る という仕組みです。
、「載らないものを載せる」には、なぜ載らないのかを調べて、載るようにロジックそのものを修正する ということが必要になる可能性が高いです。
# なぜ載らないのかは、私にもわかりません(汎用的に検出する為、結構複雑です)。実際に探し回ったりする役割は、os-proberというパッケージが担っています。
そうでは無い場合(そこまでするつもりは無い)、40_cutstomに決めうちで書き込む というのが次善の策と言うことになるかとおもいます。
# あとは、将来のアップデートでは良くなると良いな と祈るぐらいしかないです。
オフライン
weykさんへ ご返信有難うございます。
weyk による投稿:
何を意図して修正したのかわかりませんが、通常、内部変数を適当に変更しても、悪くなることは合っても、動作が改善する可能性は無いです。
意味合いはわかります。
#2 の
jackalope による投稿:
/etc/grub.d/30_osproberです。
と書かれていることから、何かしらのヒントがあるのでは?と考えました。
weyk による投稿:
なぜ載らないのかは、私にもわかりません(汎用的に検出する為、結構複雑です)。実際に探し回ったりする役割は、os-proberというパッケージが担っています。
同じく、それをわからないため出来れば知りたいのです。よって質問した次第です。
#1に40_cutstomも書いておりますが、決めうちとは考えておりません。
情報をお知りの方がいれば幸いだと思っております。
オフライン
こんにちは。
mako999 による投稿:
#2 の
jackalope による投稿:
/etc/grub.d/30_osproberです。
と書かれていることから、何かしらのヒントがあるのでは?と考えました。
この中とそこから呼び出されるプログラムで判断している と言う点では、関連があります。
これは、jackalopeさんが引用している通り、
mako999 による投稿:
お伺いしたい内容は、件名の GRUB2 OS検出の法則もしくはルールになります。
への回答ということになるかとおもいます。ここに書かれているロジック(とここから呼び出されるロジック)が、検出する法則でありルールです。ただし、ルールを簡単に変更する方法は無いようです。後者のようなもの(ロジック本体ではなく、設定ファイルの分部)のようなもので、法則やルールを変更できるオプションが存在するものを期待していたのかな と推測しました。
# いくつか、オプションは設定ファイル(/etc/default/grub でしたっけ?)で変更できるものもありますが、検出可能なものを、大雑把な範囲で載せないようにする言う機能です。
#1に40_cutstomも書いておりますが、決めうちとは考えておりません。
#1の、40_customに記載している方法について、他の動的に生成されるメニューの部分と異なり、そのパーティション(root=に固定で記載)にそのOS(メニューの選択名に固定で記載)が存在し、かつchain loadで起動可能である ということを前提としている点を「決め打ち」と表現いたしました。
mako999 による投稿:
weyk による投稿:
なぜ載らないのかは、私にもわかりません(汎用的に検出する為、結構複雑です)。実際に探し回ったりする役割は、os-proberというパッケージが担っています。
同じく、それをわからないため出来れば知りたいのです。よって質問した次第です。
もし、一律FC12の64bitsが載らない(検出できない)とすると、障害としてなにかあるかとおもったんですが、情報を見つけることは出来ませんでした。あとは、パーティション数が多い(拡張の4番目がOKで5番目がNG)ので、なにか制限でもあるのかという点も気になりますが、そういった制限は見た記憶がありません。・・・他にUbuntu9.10とfc12(64bits)のDualブートでgrub2から認識されている人がいれば一報欲しい感じです。
# 私も原因が知りたいです。dual bootを試すところまではなんとか環境が作れますが(早くても明日ごろ)、それで動いてしまうと、調査が手詰まりっぽいのが難点です・・・
あと、先ほどあまり気にしてなっかたのですが、1点、確認させてください。
FC12(64bits)を40_customに記載している部分ではchain loaderによる起動になっているようですが、grub2から動的に生成されるFC12(32bits)のエントリの方はどのように(kernelかchain loaderか)認識されているのでしょうか?また、FC12(64bits)のパーティションについて、grub2のkernelコマンドによる起動は可能かどうか確認済みでしたら、それも知りたいです。
オフライン
此方では Karmic(32bit)とFedora12(64bit)の dual boot ですが,
update-grub によって,Karmic の grub.cfg に Fedora12 のエントリは追加されています.
egrep -A 7 "BEGIN .*30_os-prober" /boot/grub/grub.cfg
### BEGIN /etc/grub.d/30_os-prober ###
menuentry "Fedora (2.6.31.12-174.2.3.fc12.x86_64) (on /dev/mapper/hoge-root)" {
insmod ext2
set root=(hd0,1)
search --no-floppy --fs-uuid --set f516bc38-a9d4-428e-bd6c-0d489586ff0d
linux /vmlinuz-2.6.31.12-174.2.3.fc12.x86_64 root=UUID=9f668dea-de73-48b8-9e7e-c789988e6e29 ro quiet rhgb LANG=ja_JP.UTF-8 KEYTABLE=jp106
initrd /initramfs-2.6.31.12-174.2.3.fc12.x86_64.img
}/etc/grub.d/grub_os-prober によると,まず os-prober コマンドの結果を元に linux-boot-prober が実行されます.
$ sudo os-prober /dev/mapper/hoge-root:Fedora release 12 (Constantine):Fedora:linux $ sudo linux-boot-prober /dev/mapper/hoge-root /dev/mapper/hoge-root:/dev/sda1:Fedora (2.6.31.12-174.2.3.fc12.x86_64):/boot/vmlinuz-2.6.31.12-174.2.3.fc12.x86_64:/boot/initramfs-2.6.31.12-174.2.3.fc12.x86_64.img:root=UUID=9f668dea-de73-48b8-9e7e-c789988e6e29 ro quiet rhgb LANG=ja_JP.UTF-8 KEYTABLE=jp106 ... 以下略 ...
これら2つのコマンドはシェルスクリプトです.斜めよみしたところでは,linux-boot-prober は grub の menu.lst や grub2 の grub.cfg を捜索し,そのエントリを Ubuntu 向けに変換しています.
!!老婆心ながら注意!!
Fedora12 の grub2 では /etc/grub.d/10_linux に該当するスクリプトには(多分現在も)問題が有り,
update-grub で生成されたエントリに initrd の項目が追加されないことを此方では確認しています.
Fedora12 に grub2 をインストールする場合は注意が必要です.
オフライン
突然の電話で慌てて投稿してしまいました.訂正します.
einundzwanzighundertsechs による投稿:
/etc/grub.d/grub_os-prober によると,まず os-prober コマンドの結果を元に linux-boot-prober が実行されます.
etc/grub.d/30_os-prober によると,os-prober コマンドの結果を元に linux-boot-prober コマンドが実行されます.
einundzwanzighundertsechs による投稿:
これら2つのコマンドはシェルスクリプトです.斜めよみしたところでは,linux-boot-prober は grub の menu.lst や grub2 の grub.cfg を捜索し,そのエントリを Ubuntu 向けに変換しています.
linux-boot-prober は grub の menu.lst や grub2 の grub.cfg を捜索して,そのエントリの項目をコマンド例にあるように : で繋いで出力します.
それを Ubuntu の grub.cfg 向けに変換するのは /etc/grub.d/30_os-prober の担当です.
オフライン
weykさん、einundzwanzighundertsechsさん
こんにちは。情報有難うございます。
あまりにがっかりする展開なので、とても報告しにくいのですが私のチョンボが判明しました。
weykさんのアドバイス通り、 GRUBコマンドで立ち上げようとしました。すると、ext3マウント・・・・・・ ????
確かにパーチションを細かく細分化した際、ext3でフォーマットしたと記憶しています。その後インストール時にext4にフォーマットしたつもりなのですが。
さらに64bit上のFEDORAを立ち上げて再度確認すると、ext4。 よって、どこかでGRUB2側ではext3としてしまい、その後インストールした64bitは一応ext4なのですが、不可解なことにGRUB側はext3認識だったようです。よってこれはわたしのチョンボだと思います。確認不足でお恥ずかしいです。導入してから日も経過していないことから、全部入れ直すかもしれません。
weykさん デバッグ手段有難うございます。恐らくこれが起因だと思われます。
今日、64bit を入れ直しますが、恐らく明日以降ご報告出来ると思います。すみません。時間帯が恐らく逆です。
本当にがっかりする悪いお話で申し訳ありません。ご協力及び、お時間をとっていただき有難うございました。
オフライン
weykさん、einundzwanzighundertsechsさん こんばんは
すみません。#10では、GRUB boot画面でext2を勝手に見間違え、勘違いから、すべてクリーンインストールを実施してしまいました。ただこれはわたしの勘違いから始まり、テストに苦痛は感じておりません。よって、失礼ながら少しお話を戻します。
weyk による投稿:
あと、先ほどあまり気にしてなっかたのですが、1点、確認させてください。
FC12(64bits)を40_customに記載している部分ではchain loaderによる起動になっているようですが、grub2から動的に生成されるFC12(32bits)のエントリの方はどのように(kernelかchain loaderか)認識されているのでしょうか?
menuentry "Fedora (2.6.31.5-127.fc12.i686.PAE) (on /dev/sda9)" {
insmod ext2
set root=(hd0,9)
search --no-floppy --fs-uuid --set 6d130b38-245b-4963-896c-eeb9c60e7644
linux /boot/vmlinuz-2.6.31.5-127.fc12.i686.PAE ro root=UUID=6d130b38-245b-4963-896c-eeb9c60e7644 nomodeset LANG=ja_JP.UTF-8 KEYBOARDTYPE=pc KEYTABLE=jp106 rhgb quiet
initrd /boot/initramfs-2.6.31.5-127.fc12.i686.PAE.img
}
### END /etc/grub.d/30_os-prober ###初期段階となります(カーネルアップをしていません)。
weyk による投稿:
また、FC12(64bits)のパーティションについて、grub2のkernelコマンドによる起動は可能かどうか確認済みでしたら、それも知りたいです。
まず定義を記載する際、間違えました。
/etc/grub.d/40_custom
menuentry "Fedora (Constantine 64bit) (on /dev/sda8)" {
insmod ext2
set root=(hd0,8)
chainloader +1
}の間違いです。申し訳ありません。grub.d/40_customを外した状態、及びつけたままの状態、さらに32bit PAEで root コマンドから起動を試みましたが、全て起動途中で止まる状態でした。これは私のコマンドミスが考えられます。ただし、GRUB2から直で起動しようとしていることは確認出来ます。
einundzwanzighundertsechs による投稿:
Fedora12 に grub2 をインストールする場合は注意が必要です.
了解しました。
ここからは自分でのテストです (尚 テストしている際、区画構成は変わりませんが、OSが32bitになったりします)
PBR sda8 Fedora FC12 32bit /,PBR sda9 Fedora FC12 64bit / をまず導入しました。
1.Japan teamの32bit Ubuntu 9.10 をsda6 sda7に導入(MBR)。同じ結果となりました。よって媒体の線は薄いと感じられます。
2. 27日に一度、9.10をPBRとし、MBRの動作確認を行いました。その際は不思議なことにすべてブート可能でした。
3. 問題のsda8にJapan teamのUbuntu 9.10 32bit をPBRで入れてみました。$ sudo update-grubを実行すると、正しくマッピングされます。すなわち4OSがUbuntu 9.10 GRUB (MBR) から正しくチェーンされていることがわかります。
・今回の反省点
weykさんがご指摘された通り、かなり細分化した構成にしております。最初にGRUB2実装OSで試すべきでした。
わたしなりの解釈
これはわたしの環境、そして確実な展開とは思えませんが、こう考えています。GRUB1を実装しているFedora FC12の場合、不思議なことにひとつだけであればチェーンされます。しかし二つ入れた場合、/etc/grub.d/40_customを使って逃げる手段が比較的妥当では と考えています。
weykさん、本当に申し訳ありませんでした。ネット検索はわたしも行っていたのですが、なかなか該当する事例 (いないですよね) がみつからず、恐らく似た検索作業をさせてしまい申し訳ありません。
質問から相談という形になってしまいましたが、お付き合いしていただき有難うございました。
なお、件名とは若干違う気もしますが、本人の中ではある程度納得出来たことから、解決済み と扱っていただいて宜しいでしょうか?
さらに今後も懲りずに?宜しくお願いいたします。
オフライン
mako999 による投稿:
2. 27日に一度、9.10をPBRとし、MBRの動作確認を行いました。その際は不思議なことにすべてブート可能でした。
と書いてしまいましたが、 MBMの動作確認を行いました の間違いです。申し訳ありません。
オフライン