
起動可能なフラッシュドライブに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ファイルです(GIMPを使用してサイズ変更しました)。
さらなる研究によると、この部分は次のとおりです。
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