
Ubuntu日本語フォーラム

ログインしていません。
Ubuntu 9.10 を日本語 REMIX CD からクリーンインストールしたのですが,GRUB が GRUB 1.97b4 に変わっていて,もはや /dev/fd0 にはインストールできずにエラーとなってしまいました.
しかたがないので,grub-mkrescue で CDROM に GRUB2 の rescue image を書き込んでブートしているのですが,毎回 grub> プロンプトから set root= やら linux /vmlinuz-... やらをタイプしてブートするのは億劫です.
GRUB2 を CDROM にインストールして,自動的にメニューが出てきて選んでブートというぐあいには出来ないのでしょうか?
オフライン
すみません,grub-mkrescue のコマンドラインをフルオプションで示していただけないでしょうか?現在私は,
$ grub-mkrescue --overlay=/boot/grub --image-type=cdrom grub2.iso
として生成した grub2.iso を CD-R に焼いていますが,これでは GRUB のシェルプロンプトが出てくるだけです.
たぶん,何か足りないか,オプションが間違っているのだと思います.ご教示いただければ幸いです.
ファイルサイズが十分小さければ,フロッピーにも書けると想像しています.
ちなみに,GRUB は 1.97 に上げていますが,1.97b4 でも症状は同じでした.
オフライン
ホームディレクトリにoverlay用のディレクトリiso/boot/grubとgrub.cfgをgrub/に作り、ホームディレクトリでgrub-mkrescue --overlay=iso grub2.isoです。
オフライン
またまたすみません.以下のようにやってみたのですが,うまく行きません.
(1) ホームディレクトリに iso/boot/grub というディレクトリ構造を作る.
(2) /boot/grub/grub.cfg を iso/boot/grub/ にコピーする.
or
(2') iso/boot/grub/ で,sudo grub-mkconfig -o grub.cfg を実行して grub.cfg を作る.
(3) ホームディレクトリで,sudo grub-mkrescue --overlay=iso --image-type=cdrom grub2.iso を実行して作った grub2.iso を
CD-R に焼く.
この様にして作った CD-R からブートすると,ちゃんとメニューが表示され,Ubuntu 9.10,Ubuntu 9.10 (recovery mode),
Windows-XP の3つのエントリーが出てきます.何故か memtest+86 のエントリーはありません.ところが,
リターンキーを押してブートしようとすると,
error: no such device: xxxxxxxx-xxxx ....
となり,ブートできません.どこがまずいのでしょうか?
オフライン
/boot/grub/grub.cfgではブートしません。
grubシェルで対話的にブートさせていた内容をoverlayを指定しないで出来たgrub.cfgに反映させればうまくいくでしょう。
オフライン
続きです(ごめんなさい、何故か送信されてしまった)
(起動に使用しているディレクトリ /boot/grub はCD-R)でgrubシェルはgrub.cfgに記載された設定もCDディスクに探しに行っているのでは無いでしょうか。
rootの(0,1)がCD-R , (1,1)がHDDの第一パーティション, でUSBは?となると考えます。
grubコマンドfind(search に変更されたみたいですね) でUSBにあるファイルを検索してCD-Rのgrubから見たUSBデバイスのディレクトリを確認するか、UUIDでの指定を試みる。
外していたらすみません。
あとフロッピーですが同じように行ける様です。
grub-mkrescue --image-type=floppy /tmp/grub-rescue.flp
dd if=/tmp/grub-rescue.flp of=/dev/fd0 bs=1024
オフライン
「追伸」
jackalopeさんの言っている対話的に、、、は/boot/grub/grub.cfgの設定を#1にある「毎回 grub> プロンプトから set root=」の内容に変更するという意味だと思います。
オフライン
以下は私の想像です。
HDとCDから起動するgrubはロードされるモジュールが異なるのでHDのgrub.cfgでは起動しません。
必要なモジュールをロードすればHDのgrub.cfgでも起動すると思います。
---ここまで---
goldengriffinさんの目的はgrubのメニューで起動できればいいのだから、HDのgrub.cfgに拘らなくてもいいでしょう。
以下の内容をgoldengriffinさん環境に合わせれば起動すると思います。
---grub.cfg---
insmod biosdisk
insmod part_acorn <- 以下6行は多分不要
insmod part_amiga
insmod part_apple
insmod part_gpt
insmod part_msdos
insmod part_sun
set timeout=5
menuentry "foge-foge" {
set root=(hd1,1)
linux /boot/vmlinuz-2.6.31 root=/dev/sdb1 ro
initrd /boot/initrd.img-2.6.31
}
オフライン
GRUB2での起動CDの作成方法
まず、
grub-mkrescue grub2.iso
を実行する
すると、ユーザーのところにgrub2.isoができます
これを、解凍して、grub.cfgを取り出す
ユーザーフォルダーに iso/boot/grubのフォルダーを作成して
取り出した、grub.cfgをiso/boot/grubにコピーして
編集する
編集の仕方は、boot/grub/grub.cfgを開いて、下記の部分を
コピーして、iso/boot/grub/grub.cfgにコピーする
set default="0"
set timeout=30 ←任意で変更してください
menuentry "Ubuntu, Linux 2.6.31-14-generic" {
insmod ext2
set root=(hd0,8)
search --no-floppy --fs-uuid --set ********-****-****-****-************
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=********-****-****-****-************ ro quiet splash
initrd /boot/initrd.img-2.6.31-14-generic
}
menuentry "Windows Vista (loader) (on /dev/sda1)" {
insmod ntfs
set root=(hd0,1)
search --no-floppy --fs-uuid --set ****************
chainloader +1
}
※ 私の場合、9.04も残しながら、9.10をインストールしたので下記もいれました。
menuentry "Ubuntu 9.04, kernel 2.6.28-16-generic (on /dev/sda5)" {
insmod ext2
set root=(hd0,5)
search --no-floppy --fs-uuid --set ********-****-****-****-************
linux /boot/vmlinuz-2.6.28-16-generic root=UUID=********-****-****-****-************ ro quiet splash
initrd /boot/initrd.img-2.6.28-16-generic
}
これを保存して、端末を開き
grub-mkrescue --overlay=iso grub2.iso
を実行すると、ユーザーフォルダーにgrub2.isoができますので
これを、CDに焼いて、再起動すれば、起動します。
ご参考まで
オフライン
うーむ,皆様,色々とご教示いただきありがとうございます.
十分に理解できないところもありますが,平日は時間が取れないもので,週末にでもやってみることにします.
私のような non-expert にとっては,GRUB2 でブートフロッピーやブートCDROM がもっと簡単に作れるようなコマンドなりスクリプトなりが GRUB2 に同梱されるようになると良いと思います.GNU 本家か,Ubuntu か,はたまた日本語 REMIX CD の方々かわかりませんが,将来の課題として検討していただけると良いと思います.
オフライン
せっかくなので週末を待たずに jankboy さんのやり方でやってみました.
search 行や linux 行での呪文のような UUID の指定は,元々の /boot/grub/grub.cfg からコピーしてやってみると,これが大成功!見事にブートしました.皆さまどうもありがとうございました.どうやら jackalope さんのお見立てどおり,結果的には
insmod biosdisk
insmod part_acorn
insmod part_amiga
insmod part_apple
insmod part_gpt
insmod part_msdos
insmod part_sun
の7つのモジュールをロードするという設定を付けることになっています.最初の biosdisk が重要なのでしょうね.
それにしても,GRUB-legacy の時には,一度ブート用のふろっぴーを作っておけば,カーネルをアップデートした時でも /boot で sudo update-grub とやるだけで,フロッピーや CDROM はそのままで,新しいカーネルからブートできたのですが,GRUB2 では,カーネルを変える度に,grub-mkrescue でフロッピーや CDROM を書き換えなければならないのでしょうか?これはちょっと不便ではないでしょうか?
オフライン
追記です.
ノーマルブートと Windows XP は問題なくブートするのですが,recovery mode はメニュー画面の描画が終わった直後に化けた文字列で画面が上書きされます.カーソルキーでハイライトを上下させると正しく書き換わるのですが,それでも周囲に文字化けのゴミが残ります.原因は不明です.
それから,GRUB2 のメニューに memtest86+ を出すにはどのようにしたらよいのでしょう?
今日はこれで打ち止めです.明日からは仕事でしばらくアクセスできません.次は週末です.
オフライン
goldengriffinさん
Memory test (memtest86+)のだしかたですが
下記を参考にしてください。
menuentry "Memory test (memtest86+)" {
search --no-floppy --fs-uuid --set ********-****-****-****-************←UUIDです。
linux16 /boot/memtest86+.bin
}
これを、grub.cfgへ追記すれば、Memory test (memtest86+)が起動します。
recovery modeでの、文字化けの件は、私もわかりません
詳しい方が、おりましたらよろしくお願いします。
オフライン
goldengriffinさん による投稿:
それにしても,GRUB-legacy の時には,一度ブート用のふろっぴーを作っておけば,カーネルをアップデートした時でも /boot で sudo update-grub とやるだけで,フロッピーや CDROM はそのままで,新しいカーネルからブートできたのですが,GRUB2 では,カーネルを変える度に,grub-mkrescue でフロッピーや CDROM を書き換えなければならないのでしょうか?これはちょっと不便ではないでしょうか?
grubもgrub2も設定次第で、起動するシステムのブートローダーにチェーンロードすればいいのです。
下記のgrub.cfgで起動するシステムのgrub2へチェーンロードできます。
---grub.cfg---
insmod biosdisk
insmod part_msdos
set timeout=5
menuentry "Ubuntu karmic koala" {
set root=(hd0,2)
multiboot /boot/grub/core.img
}
---end---
set root=(hd0,2)の代わりにUUIDを使う事もできます。
(hd0,2)、UUIDは環境により変わるので/boot/grub/grub.cfgで確認します。
bootを/と別パーティションにしている時は、multibootのファイル指定は/grub/core.imgになります。
---例---
menuentry "Ubuntu karmic koala" {
search --no-floppy --fs-uuid --set 952af91d-3870-46a2-a087-28fe81682ed7
multiboot /grub/core.img
}
オフライン
皆さま,終末になって復活しました.いろいろとご教示いただきありがとうございました.
まず,jankboy さんに教えていただいた memtest86+ のエントリーですが,これは大変うまく行きました.ありがとうございました.
次に,jackalope さんが示していただいた multiboot による chainload ですが,実は私の /boot ディレクトリには,core.img というファイルが無く,これは今のところ試すことができません.
なぜ core.img が無いのかはわかりませんが,私は Ubuntu のインストール時に,GRUB をどのパーティションにもインストールしない設定にしました.なぜならば,当初 /dev/fd0 にインストールするように指定したら,これが受け付けられずにエラーとなり,かと言ってハードディスクのブートレコードには何も書き込みたくなかったからです.
このようなやり方が原因で core.img が無いのかなぁと思案していますが,今のところ深刻な問題ではないので,しばらく放って置くことにします.
オフライン