배경 이미지 매뉴얼 grub.cfg

배경 이미지 매뉴얼 grub.cfg

부팅 가능한 플래시 드라이브에 grub의 배경 이미지를 수동으로 설치하려고 합니다. 드라이브는 ISO에서만 부팅되고 OS가 설치되어 있지 않기 때문에 스크립트를 활용하여 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 ###

배경 이미지는 GRUB 2.02 Beta2를 사용하는 640x480 PNG 파일입니다(김프를 사용하여 크기를 조정했습니다).

추가 연구에 따르면 이 부분은 다음과 같습니다.

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의 최고의 기술을 활용하여 이 문제를 해결하는 방법을 개발했습니다.그럽 커스터마이저자신에게 작업의 출발점을 제공하십시오. 나는 코드를 체계적으로 살펴보고 내 목적에 불필요할 수 있다고 생각되는 줄과 섹션을 주석 처리하고 진행하면서 변경 사항을 테스트했습니다. 메뉴 항목이 없는 주석이 달린 예를 찾을 수 있습니다.여기이 과정에 관심이 있으신 분들을 위해. 다음은 테스트된 코드 섹션입니다(이전 버전 시작) 수정 후, 댓글 대부분과 불필요한 부분을 삭제하고 드디어 결과물을 얻었습니다. 내 문제의 대부분은 linux_gfx_mode, terminal_output및 (루트 설정은 물론) background_image의 부적절한 처리와 관련된 것 같습니다 . 편집에서 추측한 대로 변수는 grub 스크립트와 grub.cfg 파일에서 다르게 표현됩니다. 나는 이것이 개선될 수 있다는 데 의심의 여지가 없으며 단순화된 부분을 찾으면 편집할 것입니다.

  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

관련 정보