
Ubuntu日本語フォーラム

ログインしていません。
今回、GRUB2起動CDを作成してみて、機能的には全く問題ないものができたんですが、フォントの変更と
splash imageの表示ができなくて試行錯誤しております。
なお、ubuntu9.04 USB start up diskに設けたGRUB2専用パーティションからの起動では、フォントの
変更、背景画像の表示も問題ありません。
以下が自分で作成したgrub.cfgの内容です。
. 起動CDのgrub.cfg
###Modules
insmod biosdisk
insmod pc
insmod gpt
insmod ntfs
insmod fat
insmod ext2
insmod font
insmod memdisk
### Timeout
set timeout=30
### Set default boot entry
set default=0
### Fonts
set root=(memdisk)
if font (memdisk)/boot/grub/unicode.pff ; then
set gfxmode=640x480
insmod terminal
insmod gfxterm
insmod vbe
terminal gfxterm
insmod tga
fi
###Background image
set root=(memdisk)
background_image (memdisk)/boot/grub/blueeyes640.tga
###Entry
menuentry "MBR of the First Hard-disk drive" {
set root=(hd0)
chainloader +1
}
menuentry "First partition of the First Hard-disk drive" {
set root=(hd0,1)
chainloader +1
}
menuentry "Second partition of the First Hard-disk drive" {
set root=(hd0,2)
chainloader +1
}
menuentry "Third partition of the First Hard-disk drive" {
set root=(hd0,3)
chainloader +1
}
. USBメモリーのGRUB2専用パーティション(第2パーティション)のgrub.cfg(一部抜粋)
# Fonts
set root=(hd0,2)
if font (hd0,2)/fonts/unicode.pff ; then
set gfxmode=640x480
insmod gfxterm
insmod vbe
insmod tga
terminal gfxterm
fi
#Background image
set root=(hd0,2)
background_image (hd0,2)/boot/grub/blueeyes640.tga
menuentry "Ubuntu 9,04 USB start up Disk" {
set root=(hd0,3)
chainloader +1
}
menuentry "Windows VISTA sp2" {
set root=(hd1,2)
chainloader +1
}
これまで行ったことは
moduleの変更・・・font、memdiskの追加
set rootのパスの変更・・・今は(memdisk)ですが最初は(CD)にしていました。
fontディレクトリーの変更・・・最初は/bootと同じ場所、今はunicode.pffを
/boot/grub/unicode.pffとしています。
grub>lsmodの結果・・・起動CDの場合、memdisk,gpt,iso9660が新たに読み込まれています。
以上ですがよろしくお願いします。
オフライン
(memdisk)/boot/grub/unicode.pff、(memdisk)/boot/grub/blueeyes640.tgaはありますか?
オフライン
jakalopeさん
返信ありがとうございます。
両ファイルとも起動CDの/boot/grub/にあります。
今ひとつわからないのが(memdisk)です。たぶんRAMに作成される仮想ディスクのようなものと
想像していますがどうなんでしょう?
また、この起動CDから起動して、メニュー画面で”C”keyでCLIモードなってコマンド
grub>background_image /boot/grub/blueeyes640.tga
次のようなエラーメッセージがでます。
no video mode activated
(背景画像を)表示するビデオモードではないということでしょうか。
以上です。
オフライン
モジュールが読み込まれて無いとしたら、
set root=(memdisk)
if font (memdisk)/boot/grub/unicode.pff ; then
set gfxmode=640x480
insmod terminal
insmod gfxterm
insmod vbe
terminal gfxterm
insmod tga
fiの分部がすっぱり飛ばされちゃってるんでしょうね・・・
grubのshellから、個別にinsmodを発行して、backgroundを指定することは出来ませんか?
# 最低限必要なのってどれだろう・・・
もし、個別に実行してゆく中でエラーが出れば、そのエラーからまた、原因を追えるかも知れませんし。
# ls (memdisk)/boot/grub/grub.cfg と、ls (memdisk)/boot/grub/unicode.pff と、先の2つのコマンドの(memdisk)を(cd)に置き換えたものとかは、grubのshellから実行すると、どうなりますか?
また、本来のデバイスが、(cd)ではなく、(memdisk)になっているのも気になります。私もよくわかっていないので、これが正しい・・・という可能性もあるのですが、CDがそのまま使用されているのではなく、なんらかの形で、ファイルが仮想ディスクとして動いている・・・ということはありませんか?
オフライン
USBメモリのgrub.cfgと異なるのはset rootの所ですので(memdisk)が問題なのでしょう。
CDからブートしてコマンドモードにしてset root=(memdisk)後、ls /boot/grubでunicode.pffとblueeyes640.tgaはありますか?
私の環境、grub 1.97 beta4ではCDからブートした場合はrootは(hd111)になり、set root=(memdisk)ではls /でboot/grubはありません。
オフライン
jakalopeさん
返事が遅くなりました。
解決しました。
jakalopeさんの#5の
>私の環境、grub 1.97 beta4ではCDからブートした場合はrootは(hd111)になり、・・・
これがとても良いヒントになりました。
メニュー画面でCLIモードになり、
grub>ls
(hd0),(hd0,1),(hd0,2),(hd0,3),(hd0,5),(hd16)
と、返ってきました。この(hd16)がどうやらあやしいと思い、
grub>set root=(hd16)
grub>ls /
/ / boot/ boot.catalog
これはまさに起動CDのルートを指していました。そこでgrub.cfgの#fonts部、#background image部を
以下のように変更しました。
### Fonts
set root=(hd16)
if font (hd16)/boot/grub/unicode.pff ; then
set gfxmode=640x480
insmod terminal
insmod gfxterm
insmod vbe
terminal gfxterm
insmod tga
fi
###Background image
set root=(hd16)
background_image (hd16)/boot/grub/blueeyes640.tga
結果は見事に背景画像が表示され、フォントも変更されました。
どうもありがとうございました。
・sony VGN-CS91S Ubuntu9.04 USB start up disk で作成
オフライン
jackalope による投稿:
USBメモリのgrub.cfgと異なるのはset rootの所ですので(memdisk)が問題なのでしょう。
CDからブートしてコマンドモードにしてset root=(memdisk)後、ls /boot/grubでunicode.pffとblueeyes640.tgaはありますか?
私の環境、grub 1.97 beta4ではCDからブートした場合はrootは(hd111)になり、set root=(memdisk)ではls /でboot/grubはありません。
スルーされたスレッドに書くのもアレなんですが・・・
デバイス名の(cd)が効かないのが気になってちょっと調べてみました。
そもそも、grubの時にあった、(CD起動の場合に起動に用いた?)CD-ROMデバイスを、汎用的に(cd)という名前でアクセスできるという機能は、grub2には無いようです。ソース(ただし、1.97beta4.orig)を見るかぎり、"cd"というデバイスの名前を使えるのは、ディスクが(BIOSではなく)EFIで構成されている場合だけっぽいです。
# おそらく、デバイスの認識が多岐にわたる為、「biosで管理されたcd-romの場合でしか利用できない」とかの制限が出るのを避けたのかな と思うところです。
1番良さそうな方法は、「単にrootを指定せずにデフォルト(=起動デバイスが入っているはず)のまま利用する」ことのようです。起動デバイスがcdドライブの場合、パーティションもないはずですし。他のデバイスを指定する部分については、そのまま起動してしまう(他のgrub.cfgの項目を参照しない)場合を除いて、rootを切り替えないように注意する ということになりそうです。
オフライン