背景图片手册 grub.cfg

Eld*_*eek 7 grub2

我正在尝试在可引导闪存驱动器上手动安装 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 ###
Run Code Online (Sandbox Code Playgroud)

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

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

GRUB_TERMINAL=gfxterm
GRUB_GFXMODE=auto
GRUB_BACKGROUND="splash.png"
Run Code Online (Sandbox Code Playgroud)

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

编辑:我做了一些调整,但仍然没有快乐。这是相关部分的粘贴箱(我排除了不相关的菜单项,因为它们在文本模式下工作正常,不是问题)

YoM*_*smo 3

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

 background_image /boot/Your_image.png
Run Code Online (Sandbox Code Playgroud)

现在,如果您想为您的发行版提供不同的背景,您只需在菜单中添加该行即可。例如,这是我的菜单开始的部分;正如你所看到的,我在菜单之前有一个默认背景,这样当 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
          ....
Run Code Online (Sandbox Code Playgroud)

编辑:这是我的搜索路径条目(注意 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
Run Code Online (Sandbox Code Playgroud)