背景图片手册grub.cfg

背景图片手册grub.cfg

我正在尝试在可启动闪存驱动器上手动安装 grub 的背景图像。由于驱动器仅启动 ISO 并且没有安装操作系统,因此我无法利用脚本来update-grub为我执行此操作,并且有关编辑 /etc/default/grub 的帖子不适用于我的情况。我见过如何在 GRUB 上添加背景图片?但由于我提到的原因,它并不适用。我已经设法让所有 ISO 都能正常启动,但我仍然坚持应用背景图像。这是我的 grub.cfg 的相关部分,其余部分是正常工作的所有菜单条目(回退到文本模式)。

set timeout=10
set default=0
set root=(hd0,msdos1)
### BEGIN background setup ###
function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}
load_video
insmod gfxterm
insmod part_msdos
insmod png
GRUB_TERMINAL=gfxterm
GRUB_GFXMODE=auto
GRUB_BACKGROUND="splash.png"
### END background setup ###

背景图像是一个 640x480 PNG 文件(我使用 gimp 缩放到大小)使用 GRUB 2.02 Beta2

进一步的研究表明,这部分:

GRUB_TERMINAL=gfxterm
GRUB_GFXMODE=auto
GRUB_BACKGROUND="splash.png"

使用更新脚本使用的变量,这些变量属于 /etc/default/grub ,并且不会以这种方式出现在 grub.cfg 中,所以我确信这些行至少是错误的。

编辑:我做了一些调整,但仍然没有喜悦。这是一个帕斯特宾相关部分的(我排除了不相关的菜单条目,因为它们在文本模式下工作正常并且不是问题)

答案1

您需要将下一行添加到grub.cfg菜单之前。由于它是定制的并且您不会使用,update-grub因此应该不会有任何问题:

 background_image /boot/Your_image.png

现在,如果您想为您的发行版提供不同的背景,您只需在菜单中添加该行即可。例如,这是我的菜单开始的部分;正如你所看到的,我在菜单之前有一个默认背景,这样当 grub 启动时它就有一个背景,之后每个菜单/子菜单都有自己的背景:

background_image /boot/SolusOS-splash.png

set color_normal=white/black
set color_highlight=black/white

submenu "Debian 8.1 -->"{
     submenu "Debian 8.1 i386 -->"{         
            background_image    /boot/DebianLava-splash.png         
            set iso=/boot/ISOs/debian-live-8.1.0-i386-gnome-desktop.iso
          ....

编辑:这是我的搜索路径条目(请注意 uuid 是我的 usb 的 ID)不知道这是否可能是您的问题:

set boot_uuid=D042-8A53    
set root_uuid=D042-8A53

search --fs-uuid $root_uuid --set=root
search --fs-uuid $boot_uuid --set=grub_boot
if [ $boot_uuid == $root_uuid ]
then
    set grub_boot=($grub_boot)/boot
else
    set grub_boot=($grub_boot)
fi

答案2

由于我的编码技能显然无法胜任这项任务,因此我开发了一种方法来解决此问题,方法是临时将实时 Lubuntu 系统安装到闪存驱动器并利用 Daniel Richter 最优秀的技术grub 定制器给自己一个工作起点。我系统地浏览了代码,注释掉了我认为对我的目的来说可能不必要的行和部分,并在进行过程中测试了更改。可以找到带有注释的示例(没有菜单条目)这里对于那些可能对这个过程感兴趣的人。下面是经过测试的代码部分(用于旧版启动)编辑后,我删除了大部分评论和不需要的部分后最终得到了结果。看来我的大部分问题都与linux_gfx_modeterminal_outputbackground_image(以及设置根)的不当处理有关。正如我在编辑中猜测的那样,变量在 grub.cfg 文件中的表达方式与在 grub 脚本中的表达方式不同。我毫不怀疑这可以改进,当我发现简化时,我将对其进行编辑。

  set have_grubenv=true
  load_env
   set timeout=10 #added
   set default=2 #added
  menuentry_id_option=""
export menuentry_id_option
function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}
#if [ x$feature_default_font_path = xy ] ; then
#font=unicode
#else
##Scrapped if-then-else above required? - NO?
insmod part_msdos
insmod ext2
search --no-floppy --set=root --label freedom
    font=/boot/grub/fonts/unicode.pf2
fi
if loadfont $font ; then
  set gfxmode=auto
  load_video
  insmod gfxterm
  set locale_dir=/boot/grub/locale
  set lang=en_US
  insmod gettext
fi
terminal_output gfxterm
insmod part_msdos
insmod ext2
search --set=root --label freedom
### Begin Background setup ###
insmod png
set menu_color_normal=yellow/black
set menu_color_highlight=black/light-gray
if background_image /boot/grub/splash.png; then
  true
else
  set menu_color_normal=green/black
  set menu_color_highlight=black/light-gray
fi
### END Background setup ###

### BEGIN setup graphics ###
function gfxmode {
    set gfxpayload="${1}"
    if [ "${1}" = "keep" ]; then
        set vt_handoff=vt.handoff=7
    else
        set vt_handoff=
    fi
}
if [ "${recordfail}" != 1 ]; then
  if [ -e ${prefix}/gfxblacklist.txt ]; then
    if hwmatch ${prefix}/gfxblacklist.txt 3; then
      if [ ${match} = 0 ]; then
        set linux_gfx_mode=keep
      else
        set linux_gfx_mode=text
      fi
    else
      set linux_gfx_mode=text
    fi
  else
    set linux_gfx_mode=keep
  fi
else
  set linux_gfx_mode=text
fi
export linux_gfx_mode
### End setup graphics ###

资料来源:

https://answers.launchpad.net/~danielrichter2007

https://ubuntuforums.org/showthread.php?t=1195275

https://www.gnu.org/software/grub/manual/grub.html

相关内容