最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

[美化]grub主題與背景及編輯啟動項(從入門到rm -rf /*)

2023-01-07 00:52 作者:失心龍I-ll  | 我要投稿

為什么沒有圖呢?因為過程全為實體機操作,沒法截圖,鄙龍也不愿意用手機拍。。。就這樣吧~~

grub安裝后默認(rèn)的菜單別有一般韻味:黑客電影中的純黑背景+白字(可能是小六號吧)——但是鄙龍不太喜歡,于是在用了幾個月后,決定改一下。。。

鄙龍自然是不會開發(fā)主題了(?╥?﹏?╥?)這里選擇gnome-look.org上的Sleek-Bigsur主題

安裝主題

自動安裝:

1. 當(dāng)然,下載Sleek-Bigsur主題。

2. 解壓一下安裝包:

cd ~/下載/ ? ? #對應(yīng)閣下自己設(shè)置的下載路徑
mkdir SleekTheme&&tar -vxf SleekTheme-BigSur.tar.xz -C SleekTheme/ ? ? ?#建立一個名為SleekTheme的文件夾,將壓縮包的文件解壓到SleekTheme文件夾內(nèi)


2.1 如果需要設(shè)置一張背景圖片(選擇的這個主題已經(jīng)有一個背景了),可以在運行安裝腳本之前先替換掉原來的背景圖片。背景圖片位于sleek/background.png。圖片必須是png格式,推薦1920*1080。

這里我選擇了一張自己喜歡的圖片,但是是jpg格式的,可以使用linux的convert工具轉(zhuǎn)換jpg為png

rm -r SleekTheme/sleek/background.png ? ? ? ?#刪除原來的背景
convert SleekTheme/sleek/background.jpg SleekTheme/sleek/background.png ? ? #轉(zhuǎn)換格式
rm -r SleekTheme/sleek/background.jpg ? ? ? ?#做一下清理

3.運行自動安裝腳本:

chmod +x SleekTheme/install.sh
sudo ./SleekTheme/install.sh
rm -r *Sleek* ? ? ?#做一下清理

運行腳本后,有些主題的腳本有進(jìn)一步自定義選項,需要手動選擇;而有些腳本的主題則是一步到尾。

正常來說到這里已經(jīng)安裝完成了,可以重啟看看效果。

未生效?那么閣下可能需要手動安裝

手動安裝:

繼承自動安裝到2.1步:復(fù)制解壓后文件的sleek文件夾到/boot/grub/themes/:

sudo cp -r SleekTheme/sleek /boot/grub/themes/sleek
sudo vim /etc/default/grub ? ? ? ?#使用vim編輯grub文件。如果沒有vim用別的也行

找到GRUB_THEME(如果有注釋則去掉注釋),并添加主題包內(nèi)theme.txt的路徑

GRUB_THEME="/boot/grub/themes/sleek/theme.txt"

改完之后保存退出

接著運行

sudo update-grub

重啟系統(tǒng)

額外

1. 需要調(diào)整主題的字體 字體大小 圖片大小及出現(xiàn)的文字,可以修改主題包的theme.txt。內(nèi)容并不難理解。(?????▽?????)

編輯啟動項

需要調(diào)整啟動順序、添加或刪除啟動項,修改/etc/grub.d中的內(nèi)容。(最好不要去修改/boot/grub/grub.cfg)

如果閣下清楚自己在做什么,請?zhí)暨x認(rèn)為有用的部分而不是直接照搬所有配置,因為文中的配置完全沒有通用性;如果閣下不清楚自己在做什么,建議先不要做手動修改的嘗試,轉(zhuǎn)而使用一些自動化的GUI工具。

/etc/grub.d中有許多**_*****這樣命名的文件。比如我的是這樣

ls /etc/grub.d

00_header ? ? ? ?10_linux ? ? ?20_linux_xen ?30_uefi-firmware ?41_custom
05_debian_theme ?10_linux_zfs ?30_os-prober ?40_custom ? ? ? ? README

_前的兩位數(shù)字是這些腳本被執(zhí)行的順序,從00開始

00_header是設(shè)置環(huán)境變量的腳本,一般不需要修改(在這篇文章中不需要);

05_debian_theme是設(shè)置grub的主題

10_linux識別root device中OS的kernel,并創(chuàng)建menuentry。它的位置是10,那么意味著它出現(xiàn)在grub菜單的第一位和第二位(recovery模式)

然后那些不知道是干啥的=w=

30_os-prober用于探測其它的操作系統(tǒng),并將其顯示在grub菜單中。鄙龍使用Windows與linux雙系統(tǒng),那么這個選項將出現(xiàn)在第三位,為Windows Boot Manager


30_uefi-firmware我也不知道為什么會有一個序號重復(fù)的腳本。通過這個腳本的menuentry

menuentry '$LABEL' \$menuentry_id_option 'uefi-firmware' {
 ? ? ? ?fwsetup
}

可以判斷是進(jìn)入BIOS設(shè)置,這里把它改成31_uefi-firmware 這樣它就是第四位啦~

那么目前的啟動項為

-----------------------

1. Linux Mint 21.3

2. Advanced options for Ubuntu

3. Windows Boot Manager

4. UEFI Firmware Settings

-----------------------


想調(diào)整一下啟動項的位置、啟動項的名字,再添加一個Shutdown選項實現(xiàn)直接關(guān)機

使其成為這樣

-----------------------

1. Linux Mint 21.3

2. Windows 11 Professional

3. Advanced options for Linuxmint 21.3

4. UEFI Firmware Settings

5. Shutdown

-----------------------


先調(diào)整下位置:

1. 執(zhí)行一次sudo update-grub保存更改前grub配置(位置在/boot/grub/grub.cfg),接著建議備份一下所有的腳本文件

2. 去除30_os-prober的執(zhí)行權(quán)限

3. 刪除10_linux中的輸出Advanced Options子菜單的內(nèi)容:{

echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" | grub_quote)' \$menuentry_id_option 'gnulinux-advanced-$boot_device_id' {"
linux_entry "${OS}" "${version}" advanced \
 ? ? ? ? ? ? ?"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
 ?for supported_init in ${SUPPORTED_INITS}; do
 ? ?init_path="${supported_init#*:}"
 ? ?if [ -x "${init_path}" ] && [ "$(readlink -f /sbin/init)" != "${init_path}" ]; then
 ? ? ?linux_entry "${OS}" "${version}" "init-${supported_init%%:*}" \
 ? ? ? ? "${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT} init=${init_path}"
 ? ?fi
 ?done
if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
 ? ?linux_entry "${OS}" "${version}" recovery \
 ? ? ? ? ? ? ? ?"${GRUB_CMDLINE_LINUX_RECOVERY} ${GRUB_CMDLINE_LINUX}"
 ?fi
if [ x"$is_top_level" != xtrue ]; then ? ? ? ? ? ? ? ? ? ?
 ?echo '}' ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 
fi

}


4. 另建一個腳本文件12_advancedop,寫入腳本程序:

#! /bin/sh
set -e

# grub-mkconfig helper script.
# Copyright (C) 2006,2007,2008,2009,2010 ?Free Software Foundation, Inc.
#
# GRUB is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# GRUB is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ?See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GRUB. ?If not, see <http://www.gnu.org/licenses/>.

prefix="/usr"
exec_prefix="/usr"
datarootdir="/usr/share"
ubuntu_recovery="1"
quiet_boot="1"
quick_boot="1"
gfxpayload_dynamic="1"
vt_handoff="1"

. "$pkgdatadir/grub-mkconfig_lib"

export TEXTDOMAIN=grub
export TEXTDOMAINDIR="${datarootdir}/locale"

CLASS="--class gnu-linux --class gnu --class os"
SUPPORTED_INITS="sysvinit:/lib/sysvinit/init systemd:/lib/systemd/systemd upstart:/sbin/upstart"

if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
 ?OS=GNU/Linux
else
 ?case ${GRUB_DISTRIBUTOR} in
 ? ?Ubuntu|Kubuntu)
 ? ? ?OS="${GRUB_DISTRIBUTOR}"
 ? ? ?;;
 ? ?*)
 ? ? ?OS="${GRUB_DISTRIBUTOR} GNU/Linux"
 ? ? ?;;
 ?esac
 ?CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
fi

# loop-AES arranges things so that /dev/loop/X can be our root device, but
# the initrds that Linux uses don't like that.
case ${GRUB_DEVICE} in
 ?/dev/loop/*|/dev/loop[0-9])
 ? ?GRUB_DEVICE=`losetup ${GRUB_DEVICE} | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"`
 ? ?# We can't cope with devices loop-mounted from files here.
 ? ?case ${GRUB_DEVICE} in
 ? ? ?/dev/*) ;;
 ? ? ?*) exit 0 ;;
 ? ?esac
 ?;;
esac

# Default to disabling partition uuid support to maintian compatibility with
# older kernels.
GRUB_DISABLE_LINUX_PARTUUID=${GRUB_DISABLE_LINUX_PARTUUID-true}

# get_dm_field_for_dev /dev/dm-0 uuid -> get the device mapper UUID for /dev/dm-0
# get_dm_field_for_dev /dev/dm-1 name -> get the device mapper name for /dev/dm-1
# etc
get_dm_field_for_dev () {
 ? ?dmsetup info -c --noheadings -o $2 $1 2>/dev/null
}

# Is $1 a multipath device?
is_multipath () {
 ? ?local dmuuid dmtype
 ? ?dmuuid="$(get_dm_field_for_dev $1 uuid)"
 ? ?if [ $? -ne 0 ]; then
 ? ? ? ?# Not a device mapper device -- or dmsetup not installed, and as
 ? ? ? ?# multipath depends on kpartx which depends on dmsetup, if there is no
 ? ? ? ?# dmsetup then there are not going to be any multipath devices.
 ? ? ? ?return 1
 ? ?fi
 ? ?# A device mapper "uuid" is always <type>-<uuid>. If <type> is of the form
 ? ?# part[0-9] then <uuid> is the device the partition is on and we want to
 ? ?# look at that instead. A multipath node always has <type> of mpath.
 ? ?dmtype="${dmuuid%%-*}"
 ? ?if [ "${dmtype#part}" != "$dmtype" ]; then
 ? ? ? ?dmuuid="${dmuuid#*-}"
 ? ? ? ?dmtype="${dmuuid%%-*}"
 ? ?fi
 ? ?if [ "$dmtype" = "mpath" ]; then
 ? ? ? ?return 0
 ? ?else
 ? ? ? ?return 1
 ? ?fi
}

if test -e "${GRUB_DEVICE}" && is_multipath "${GRUB_DEVICE}"; then
 ? ?# If / is multipathed, there will be multiple paths to the partition, so
 ? ?# using root=UUID= exposes the boot process to udev races. In addition
 ? ?# GRUB_DEVICE in this case will be /dev/dm-0 or similar -- better to use a
 ? ?# symlink that depends on the multipath name.
 ? ?GRUB_DEVICE=/dev/mapper/"$(get_dm_field_for_dev $GRUB_DEVICE name)"
 ? ?GRUB_DISABLE_LINUX_UUID=true
fi

# btrfs may reside on multiple devices. We cannot pass them as value of root= parameter
# and mounting btrfs requires user space scanning, so force UUID in this case.
if ( [ "x${GRUB_DEVICE_UUID}" = "x" ] && [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] ) \
 ? ?|| ( [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ] \
	&& [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ] ) \
 ? ?|| ( ! test -e "/dev/disk/by-uuid/${GRUB_DEVICE_UUID}" \
	&& ! test -e "/dev/disk/by-partuuid/${GRUB_DEVICE_PARTUUID}" ) \
 ? ?|| ( test -e "${GRUB_DEVICE}" && uses_abstraction "${GRUB_DEVICE}" lvm ); then
 ?LINUX_ROOT_DEVICE=${GRUB_DEVICE}
elif [ "x${GRUB_DEVICE_UUID}" = "x" ] \
 ? ?|| [ "x${GRUB_DISABLE_LINUX_UUID}" = "xtrue" ]; then
 ?LINUX_ROOT_DEVICE=PARTUUID=${GRUB_DEVICE_PARTUUID}
else
 ?LINUX_ROOT_DEVICE=UUID=${GRUB_DEVICE_UUID}
fi

case x"$GRUB_FS" in
 ? ?xbtrfs)
	rootsubvol="`make_system_path_relative_to_its_root /`"
	rootsubvol="${rootsubvol#/}"
	if [ "x${rootsubvol}" != x ]; then
	 ? ?GRUB_CMDLINE_LINUX="rootflags=subvol=${rootsubvol} ${GRUB_CMDLINE_LINUX}"
	fi;;
 ? ?xzfs)
	# We have a more specialized ZFS handler, with multiple system in 10_linux_zfs.
	if [ -e "`dirname $(readlink -f $0)`/10_linux_zfs" ]; then
	 ?exit 0
	fi
	rpool=`${grub_probe} --device ${GRUB_DEVICE} --target=fs_label 2>/dev/null || true`
	bootfs="`make_system_path_relative_to_its_root / | sed -e "s,@$,,"`"
	LINUX_ROOT_DEVICE="ZFS=${rpool}${bootfs%/}"
	;;
esac

title_correction_code=

if [ -x /lib/recovery-mode/recovery-menu ]; then
 ? ?GRUB_CMDLINE_LINUX_RECOVERY=recovery
else
 ? ?GRUB_CMDLINE_LINUX_RECOVERY=single
fi
if [ "$ubuntu_recovery" = 1 ]; then
 ? ?GRUB_CMDLINE_LINUX_RECOVERY="$GRUB_CMDLINE_LINUX_RECOVERY nomodeset"
fi

if [ "$vt_handoff" = 1 ]; then
 ?for word in $GRUB_CMDLINE_LINUX_DEFAULT; do
 ? ?if [ "$word" = splash ]; then
 ? ? ?GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT \$vt_handoff"
 ? ?fi
 ?done
fi

if [ x"$GRUB_FORCE_PARTUUID" != x ]; then
 ? ?gettext_printf "GRUB_FORCE_PARTUUID is set, will attempt initrdless boot\n" >&2
 ? ?cat << EOF
#
# GRUB_FORCE_PARTUUID is set, will attempt initrdless boot
# Upon panic fallback to booting with initrd
EOF
 ? echo "set partuuid=${GRUB_FORCE_PARTUUID}"
fi

linux_entry ()
{
 ?os="$1"
 ?version="$2"
 ?type="$3"
 ?args="$4"

 ?if [ -z "$boot_device_id" ]; then
 ? ? ?boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
 ?fi
 ?if [ x$type != xsimple ] ; then
 ? ? ?case $type in
	 ?recovery)
	 ? ? ?title="$(gettext_printf "%s, with Linux %s (%s)" "${os}" "${version}" "$(gettext "${GRUB_RECOVERY_TITLE}")")" ;;
	 ?init-*)
	 ? ? ?title="$(gettext_printf "%s, with Linux %s (%s)" "${os}" "${version}" "${type#init-}")" ;;
	 ?*)
	 ? ? ?title="$(gettext_printf "%s, with Linux %s" "${os}" "${version}")" ;;
 ? ? ?esac
 ? ? ?if [ x"$title" = x"$GRUB_ACTUAL_DEFAULT" ] || [ x"Previous Linux versions>$title" = x"$GRUB_ACTUAL_DEFAULT" ]; then
	 ?replacement_title="$(echo "Advanced options for ${os}" | sed 's,>,>>,g')>$(echo "$title" | sed 's,>,>>,g')"
	 ?quoted="$(echo "$GRUB_ACTUAL_DEFAULT" | grub_quote)"
	 ?title_correction_code="${title_correction_code}if [ \"x\$default\" = '$quoted' ]; then default='$(echo "$replacement_title" | grub_quote)'; fi;"
	 ?grub_warn "$(gettext_printf "Please don't use old title \`%s' for GRUB_DEFAULT, use \`%s' (for versions before 2.00) or \`%s' (for 2.00 or later)" "$GRUB_ACTUAL_DEFAULT" "$replacement_title" "gnulinux-advanced-$boot_device_id>gnulinux-$version-$type-$boot_device_id")"
 ? ? ?fi
 ? ? ?echo "menuentry '$(echo "$title" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-$version-$type-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
 ?else
 ? ? ?echo "menuentry '$(echo "$os" | grub_quote)' ${CLASS} \$menuentry_id_option 'gnulinux-simple-$boot_device_id' {" | sed "s/^/$submenu_indentation/"
 ?fi ? ? ?
 ?if [ "$quick_boot" = 1 ]; then
 ? ? ?echo "	recordfail" | sed "s/^/$submenu_indentation/"
 ?fi
 ?if [ x$type != xrecovery ] ; then
 ? ? ?save_default_entry | grub_add_tab
 ?fi

 ?# Use ELILO's generic "efifb" when it's known to be available.
 ?# FIXME: We need an interface to select vesafb in case efifb can't be used.
 ?if [ "x$GRUB_GFXPAYLOAD_LINUX" = x ]; then
 ? ? ?echo "	load_video" | sed "s/^/$submenu_indentation/"
 ?else
 ? ? ?if [ "x$GRUB_GFXPAYLOAD_LINUX" != xtext ]; then
	 ?echo "	load_video" | sed "s/^/$submenu_indentation/"
 ? ? ?fi
 ?fi
 ?if ([ "$ubuntu_recovery" = 0 ] || [ x$type != xrecovery ]) && \
 ? ? ([ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 1 ]); then
 ? ? ?echo "	gfxmode \$linux_gfx_mode" | sed "s/^/$submenu_indentation/"
 ?fi

 ?echo "	insmod gzio" | sed "s/^/$submenu_indentation/"
 ?echo "	if [ x\$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi" | sed "s/^/$submenu_indentation/"

 ?if [ x$dirname = x/ ]; then
 ? ?if [ -z "${prepare_root_cache}" ]; then
 ? ? ?prepare_root_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE} | grub_add_tab)"
 ? ?fi
 ? ?printf '%s\n' "${prepare_root_cache}" | sed "s/^/$submenu_indentation/"
 ?else
 ? ?if [ -z "${prepare_boot_cache}" ]; then
 ? ? ?prepare_boot_cache="$(prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | grub_add_tab)"
 ? ?fi
 ? ?printf '%s\n' "${prepare_boot_cache}" | sed "s/^/$submenu_indentation/"
 ?fi
 ?if [ x"$quiet_boot" = x0 ] || [ x"$type" != xsimple ]; then
 ? ?message="$(gettext_printf "Loading Linux %s ..." ${version})"
 ? ?sed "s/^/$submenu_indentation/" << EOF
	echo	'$(echo "$message" | grub_quote)'
EOF
 ?fi
 ?if test -d /sys/firmware/efi && test -e "${linux}.efi.signed"; then
 ? ?sed "s/^/$submenu_indentation/" << EOF
	linux	${rel_dirname}/${basename}.efi.signed root=${linux_root_device_thisversion} ro ${args}
EOF
 ?else
 ? ?# We have initrd and PARTUUID is set - we try to boot without initrd, and fallback to using it
 ? ?# if it fails.
 ? ?# "panic=-1" means "on panic reboot immediately". "panic=0" disables the reboot behavior.
 ? ?if [ x"$GRUB_FORCE_PARTUUID" != x ]; then
 ? ? ? ?linux_root_device_thisversion="PARTUUID=${GRUB_FORCE_PARTUUID}"
 ? ?fi
 ? ?message="$(gettext_printf "Loading initial ramdisk ...")"
 ? ?initrdlessfail_msg="$(gettext_printf "GRUB_FORCE_PARTUUID set, initrdless boot failed. Attempting with initrd.")"
 ? ?initrdlesstry_msg="$(gettext_printf "GRUB_FORCE_PARTUUID set, attempting initrdless boot.")"
 ? ?initrd_path=
 ? ?for i in ${initrd}; do
 ? ? ? ?initrd_path="${initrd_path} ${rel_dirname}/${i}"
 ? ?done
 ? ?initrd_path_only_early=
 ? ?for i in ${initrd_early}; do
 ? ? ? ?initrd_path_only_early="${initrd_path_only_early} ${rel_dirname}/${i}"
 ? ?done
 ? ?if test -n "${initrd}" && [ x"$GRUB_FORCE_PARTUUID" != x ]; then
 ? ? ? ?sed "s/^/$submenu_indentation/" << EOF
	if [ "\${initrdfail}" = 1 ]; then
	 ?echo	'$(echo "$initrdlessfail_msg" | grub_quote)'
	 ?linux	${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
EOF
 ? ? ? ?if [ x"$quiet_boot" = x0 ] || [ x"$type" != xsimple ]; then
 ? ? ? ? ?sed "s/^/$submenu_indentation/" << EOF
	 ?echo	'$(echo "$message" | grub_quote)'
EOF
 ? ? ? ?fi
 ? ? ? ?sed "s/^/$submenu_indentation/" << EOF
	 ?initrd	$(echo $initrd_path)
	else
	 ?echo	'$(echo "$initrdlesstry_msg" | grub_quote)'
	 ?linux	${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args} panic=-1
EOF
 ? ? ? ?if [ -n "$initrd_path_only_early" ]; then
 ? ? ? ? ?sed "s/^/$submenu_indentation/" << EOF
	 ?initrd	$(echo $initrd_path_only_early)
EOF
 ? ? ? ?fi
 ? ? ? ?sed "s/^/$submenu_indentation/" << EOF
	fi
	initrdfail
EOF
 ? ?else
 ? ?# We don't have initrd or we don't want to set PARTUUID. Don't try initrd-less boot with fallback.
 ? ? ? ?sed "s/^/$submenu_indentation/" << EOF
	linux	${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
EOF
 ? ? ? ?if test -n "${initrd}"; then
 ? ? ? ? ? ?# We do have initrd - let's use it at boot.
 ? ? ? ? ? ?# TRANSLATORS: ramdisk isn't identifier. Should be translated.
 ? ? ? ? ? ?if [ x"$quiet_boot" = x0 ] || [ x"$type" != xsimple ]; then
 ? ? ? ? ? ? ?sed "s/^/$submenu_indentation/" << EOF
	echo	'$(echo "$message" | grub_quote)'
EOF
 ? ? ? ? ? ?fi
 ? ? ? ? ? ?sed "s/^/$submenu_indentation/" << EOF
	initrd	$(echo $initrd_path)
EOF
 ? ? ? ?fi
 ? ?fi
 ? ?if test -n "${dtb}" ; then
 ? ? ?if [ x"$quiet_boot" = x0 ] || [ x"$type" != xsimple ]; then
 ? ? ? ?message="$(gettext_printf "Loading device tree blob...")"
 ? ? ? ?sed "s/^/$submenu_indentation/" << EOF
	echo	'$(echo "$message" | grub_quote)'
EOF
 ? ? ?fi
 ? ? ?sed "s/^/$submenu_indentation/" << EOF
	devicetree	${rel_dirname}/${dtb}
EOF
 ? ?fi
 ?fi
 ?sed "s/^/$submenu_indentation/" << EOF
}
EOF
}

machine=`uname -m`
case "x$machine" in
 ? ?xi?86 | xx86_64)
	list=
	for i in /boot/vmlinuz-* /vmlinuz-* /boot/kernel-* ; do
	 ? ?if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi
	done ;;
 ? ?*) 
	list=
	for i in /boot/vmlinuz-* /boot/vmlinux-* /vmlinuz-* /vmlinux-* /boot/kernel-* ; do
 ? ? ? ? ? ? ? ? ?if grub_file_is_not_garbage "$i" ; then list="$list $i" ; fi
	done ;;
esac

case "$machine" in
 ? ?i?86) GENKERNEL_ARCH="x86" ;;
 ? ?mips|mips64) GENKERNEL_ARCH="mips" ;;
 ? ?mipsel|mips64el) GENKERNEL_ARCH="mipsel" ;;
 ? ?arm*) GENKERNEL_ARCH="arm" ;;
 ? ?*) GENKERNEL_ARCH="$machine" ;;
esac

case "$GENKERNEL_ARCH" in
 ?x86*) GRUB_CMDLINE_LINUX_RECOVERY="$GRUB_CMDLINE_LINUX_RECOVERY dis_ucode_ldr";;
esac

prepare_boot_cache=
prepare_root_cache=
boot_device_id=
title_correction_code=

cat << 'EOF'
function gfxmode {
	set gfxpayload="${1}"
EOF
if [ "$vt_handoff" = 1 ]; then
 ?cat << 'EOF'
	if [ "${1}" = "keep" ]; then
		set vt_handoff=vt.handoff=7
	else
		set vt_handoff=
	fi
EOF
fi
cat << EOF
}
EOF

# Use ELILO's generic "efifb" when it's known to be available.
# FIXME: We need an interface to select vesafb in case efifb can't be used.
if [ "x$GRUB_GFXPAYLOAD_LINUX" != x ] || [ "$gfxpayload_dynamic" = 0 ]; then
 ?echo "set linux_gfx_mode=$GRUB_GFXPAYLOAD_LINUX"
else
 ?cat << EOF
if [ "\${recordfail}" != 1 ]; then
 ?if [ -e \${prefix}/gfxblacklist.txt ]; then
 ? ?if [ \${grub_platform} != pc ]; then
 ? ? ?set linux_gfx_mode=keep
 ? ?elif 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
EOF
fi
cat << EOF
export linux_gfx_mode
EOF

# Extra indentation to add to menu entries in a submenu. We're not in a submenu
# yet, so it's empty. In a submenu it will be equal to '\t' (one tab).
submenu_indentation=""

is_top_level=true
while [ "x$list" != "x" ] ; do
 ?linux=`version_find_latest $list`
 ?case $linux in
 ? ?*.efi.signed)
 ? ? ?# We handle these in linux_entry.
 ? ? ?list=`echo $list | tr ' ' '\n' | grep -vx $linux | tr '\n' ' '`
 ? ? ?continue
 ? ? ?;;
 ?esac
 ?gettext_printf "Found linux image: %s\n" "$linux" >&2
 ?basename=`basename $linux`
 ?dirname=`dirname $linux`
 ?rel_dirname=`make_system_path_relative_to_its_root $dirname`
 ?version=`echo $basename | sed -e "s,^[^0-9]*-,,g"`
 ?alt_version=`echo $version | sed -e "s,\.old$,,g"`
 ?linux_root_device_thisversion="${LINUX_ROOT_DEVICE}"

 ?initrd_early=
 ?for i in ${GRUB_EARLY_INITRD_LINUX_STOCK} \
	 ? ${GRUB_EARLY_INITRD_LINUX_CUSTOM}; do
 ? ?if test -e "${dirname}/${i}" ; then
 ? ? ?initrd_early="${initrd_early} ${i}"
 ? ?fi
 ?done

 ?initrd_real=
 ?for i in "initrd.img-${version}" "initrd-${version}.img" "initrd-${version}.gz" \
	 ? "initrd-${version}" "initramfs-${version}.img" \
	 ? "initrd.img-${alt_version}" "initrd-${alt_version}.img" \
	 ? "initrd-${alt_version}" "initramfs-${alt_version}.img" \
	 ? "initramfs-genkernel-${version}" \
	 ? "initramfs-genkernel-${alt_version}" \
	 ? "initramfs-genkernel-${GENKERNEL_ARCH}-${version}" \
	 ? "initramfs-genkernel-${GENKERNEL_ARCH}-${alt_version}"; do
 ? ?if test -e "${dirname}/${i}" ; then
 ? ? ?initrd_real="${i}"
 ? ? ?break
 ? ?fi
 ?done

 ?initrd=
 ?if test -n "${initrd_early}" || test -n "${initrd_real}"; then
 ? ?initrd="${initrd_early} ${initrd_real}"

 ? ?initrd_display=
 ? ?for i in ${initrd}; do
 ? ? ?initrd_display="${initrd_display} ${dirname}/${i}"
 ? ?done
 ? ?gettext_printf "Found initrd image: %s\n" "$(echo $initrd_display)" >&2
 ?fi

 ?dtb=
 ?for i in "dtb-${version}" "dtb-${alt_version}" "dtb"; do
 ? ?if test -e "${dirname}/${i}" ; then
 ? ? ?dtb="$i"
 ? ? ?break
 ? ?fi
 ?done

 ?config=
 ?for i in "${dirname}/config-${version}" "${dirname}/config-${alt_version}" "/etc/kernels/kernel-config-${version}" ; do
 ? ?if test -e "${i}" ; then
 ? ? ?config="${i}"
 ? ? ?break
 ? ?fi
 ?done

 ?initramfs=
 ?if test -n "${config}" ; then
 ? ? ?initramfs=`grep CONFIG_INITRAMFS_SOURCE= "${config}" | cut -f2 -d= | tr -d \"`
 ?fi

 ?if test -z "${initramfs}" && test -z "${initrd_real}" ; then
 ? ?# "UUID=" and "ZFS=" magic is parsed by initrd or initramfs. ?Since there's
 ? ?# no initrd or builtin initramfs, it can't work here.
 ? ?if [ "x${GRUB_DEVICE_PARTUUID}" = "x" ] \
	|| [ "x${GRUB_DISABLE_LINUX_PARTUUID}" = "xtrue" ]; then

	linux_root_device_thisversion=${GRUB_DEVICE}
 ? ?else
	linux_root_device_thisversion=PARTUUID=${GRUB_DEVICE_PARTUUID}
 ? ?fi
 ?fi

 ?# The GRUB_DISABLE_SUBMENU option used to be different than others since it was
 ?# mentioned in the documentation that has to be set to 'y' instead of 'true' to
 ?# enable it. This caused a lot of confusion to users that set the option to 'y',
 ?# 'yes' or 'true'. This was fixed but all of these values must be supported now.
 ?OS="Linux Mint"
 ?if [ "x${GRUB_DISABLE_SUBMENU}" = xyes ] || [ "x${GRUB_DISABLE_SUBMENU}" = xy ]; then
 ? ?GRUB_DISABLE_SUBMENU="true"
 ?fi

 ?if [ "x$is_top_level" = xtrue ] && [ "x${GRUB_DISABLE_SUBMENU}" != xtrue ]; then
 ? 
 ? ?if [ -z "$boot_device_id" ]; then
	boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
 ? ?fi
 ? ?# TRANSLATORS: %s is replaced with an OS name
 ? ?echo "submenu '$(gettext_printf "Advanced options for %s" "${OS}" | grub_quote)' \$menuentry_id_option 'gnulinux-advanced-$boot_device_id' {"
 ? ?is_top_level=false
 ?fi

 ?linux_entry "${OS}" "${version}" advanced \
 ? ? ? ? ? ? ?"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT}"
 ?for supported_init in ${SUPPORTED_INITS}; do
 ? ?init_path="${supported_init#*:}"
 ? ?if [ -x "${init_path}" ] && [ "$(readlink -f /sbin/init)" != "$(readlink -f "${init_path}")" ]; then
 ? ? ?linux_entry "${OS}" "${version}" "init-${supported_init%%:*}" \
		 ?"${GRUB_CMDLINE_LINUX} ${GRUB_CMDLINE_LINUX_DEFAULT} init=${init_path}"
 ? ?fi
 ?done
 ?if [ "x${GRUB_DISABLE_RECOVERY}" != "xtrue" ]; then
 ? ?linux_entry "${OS}" "${version}" recovery \
 ? ? ? ? ? ? ? ?"${GRUB_CMDLINE_LINUX_RECOVERY} ${GRUB_CMDLINE_LINUX}"
 ?fi

 ?list=`echo $list | tr ' ' '\n' | fgrep -vx "$linux" | tr '\n' ' '`
done

# If at least one kernel was found, then we need to
# add a closing '}' for the submenu command.
if [ x"$is_top_level" != xtrue ]; then
 ?echo '}'
fi

echo "$title_correction_code"

5. 保存退出,并賦予執(zhí)行權(quán)限

sudo chmod +x /etc/grub.d/12_advancedop


接著改下名:

1. 在/boot/grub/grub.cfg中找到os-prober自動生成的windows引導(dǎo)配置

2. 創(chuàng)建一個腳本程序11_windows11

3. 寫入剛剛找到的windows的引導(dǎo)配置,記得加上文件頭尾。例如這是我的:

#!/bin/sh
cat <<EOF
menuentry 'Windows Boot Manager (on /dev/nvme0n1p1)' --class windows --class os $menuentry_id_option 'osprober-efi-3CB7-D11B' {
	insmod part_gpt
	insmod fat
	search --no-floppy --fs-uuid --set=root 3CB7-D11B
	chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
set timeout_style=menu
if [ "${timeout}" = 0 ]; then
 ?set timeout=10
fi
EOF

并把Windows Boot Manager (on /dev/nvme0n1p1)改成Windows 11 Professional

4. 保存并賦予執(zhí)行權(quán)限

最后加上一個關(guān)機的選項

1. 建立文件32_halt

2. 寫入腳本:

#!/bin/sh
cat <<EOF
menuentry 'Shutdown' \$menuentry_id_option 'script' {
 ? ? ? ?halt
}
EOF

3. 保存并賦予執(zhí)行權(quán)限

至此修改完成,運行sudo update-grub如無語法錯誤,重啟生效

有語法錯誤提示就先別重啟了(?;???﹏???)?。?/strong>

文章完結(jié),感謝閱讀。??(???﹏?????)


本文遵循CC0協(xié)議,隨意引用轉(zhuǎn)載和修改發(fā)布。

[美化]grub主題與背景及編輯啟動項(從入門到rm -rf /*)的評論 (共 條)

分享到微博請遵守國家法律
耒阳市| 通州市| 安溪县| 兖州市| 南丹县| 马关县| 和政县| 洛隆县| 新田县| 太湖县| 满洲里市| 抚顺市| 衡水市| 长治县| 花莲县| 甘肃省| 伊川县| 龙胜| 宁南县| 明溪县| 介休市| 嘉禾县| 通州区| 潮州市| 古交市| 偏关县| 东城区| 玛曲县| 屯门区| 西青区| 苍溪县| 勃利县| 阿瓦提县| 上虞市| 郴州市| 阿合奇县| 达尔| 平潭县| 宜君县| 望城县| 湘潭县|