お知らせ

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

#1 2009-11-11 20:28:44

marin
メンバ
登録日: 2007-02-13

GRUB2起動CDでフォントの変更とsplash imageの表示

今回、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が新たに読み込まれています。

 以上ですがよろしくお願いします。

オフライン

 

#2 2009-11-12 11:53:49

jackalope
メンバ
登録日: 2009-01-01

Re: GRUB2起動CDでフォントの変更とsplash imageの表示

(memdisk)/boot/grub/unicode.pff、(memdisk)/boot/grub/blueeyes640.tgaはありますか?

オフライン

 

#3 2009-11-12 15:33:08

marin
メンバ
登録日: 2007-02-13

Re: GRUB2起動CDでフォントの変更とsplash imageの表示

jakalopeさん

返信ありがとうございます。

 両ファイルとも起動CDの/boot/grub/にあります。
今ひとつわからないのが(memdisk)です。たぶんRAMに作成される仮想ディスクのようなものと
想像していますがどうなんでしょう?

 また、この起動CDから起動して、メニュー画面で”C”keyでCLIモードなってコマンド

  grub>background_image /boot/grub/blueeyes640.tga

 次のようなエラーメッセージがでます。

  no video mode activated

 (背景画像を)表示するビデオモードではないということでしょうか。

 以上です。

 

オフライン

 

#4 2009-11-12 16:23:52

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

Re: GRUB2起動CDでフォントの変更とsplash imageの表示

モジュールが読み込まれて無いとしたら、

コード:

    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がそのまま使用されているのではなく、なんらかの形で、ファイルが仮想ディスクとして動いている・・・ということはありませんか?

オフライン

 

#5 2009-11-12 16:48:37

jackalope
メンバ
登録日: 2009-01-01

Re: GRUB2起動CDでフォントの変更とsplash imageの表示

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はありません。

オフライン

 

#6 2009-11-12 20:53:52

marin
メンバ
登録日: 2007-02-13

Re: GRUB2起動CDでフォントの変更とsplash imageの表示

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 で作成





  

オフライン

 

#7 2009-11-13 11:04:42

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

Re: GRUB2起動CDでフォントの変更とsplash imageの表示

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を切り替えないように注意する ということになりそうです。
 

オフライン

 

Board footer

Powered by FluxBB