/etc/default/grub.d/

關於「/etc/default/grub.d/」

延續/etc/default/grub提到的,

除了可以直接修改「/etc/default/grub」這個檔案,

也可以分成不同的檔案,副檔名為「.cfg」,

放在「/etc/default/grub.d/」這個資料夾。

舉例 1:

可以產生一個檔案「/etc/default/grub.d/background.cfg」,內容如下

GRUB_BACKGROUND="/boot/grub/backgrounds/console-background.png"

或是執行下面指令產生

sudo sh -c 'echo GRUB_BACKGROUND=\"/boot/grub/backgrounds/console-background.png\" > /etc/default/grub.d/background.cfg'

舉例 2:

可以產生另一個檔案「/etc/default/grub.d/theme.cfg」,內容如下

GRUB_THEME="/boot/grub/themes/poly-dark/theme.txt"

或是執行下面指令產生

sudo sh -c 'echo GRUB_THEME=\"/boot/grub/themes/poly-dark/theme.txt\" > /etc/default/grub.d/theme.cfg'

舉例 3:

或是上面兩個例子的設定,放在同一個檔案「/etc/default/grub.d/theme.cfg」,內容如下

GRUB_BACKGROUND="/boot/grub/backgrounds/console-background.png"
GRUB_THEME="/boot/grub/themes/poly-dark/theme.txt"

或是執行下面指令產生

cat << EOF | sudo tee /etc/default/grub.d/theme.cfg
GRUB_BACKGROUND='/boot/grub/backgrounds/console-background.png'
GRUB_THEME='/boot/grub/themes/poly-dark/theme.txt'

EOF

重新產生「/boot/grub/grub.cfg」

上面三個例子,最後要執行下面指令,重新產生「/boot/grub/grub.cfg

sudo update-grub

或是執行下面指令,重新產生「/boot/grub/grub.cfg

sudo grub-mkconfig -o /boot/grub/grub.cfg

會顯示類似下面的提示訊息

Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/background.cfg'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Sourcing file `/etc/default/grub.d/theme.cfg'
Generating grub configuration file ...
Found theme: /boot/grub/themes/poly-dark/theme.txt
Found background image: /boot/grub/backgrounds/console-background.png
...略...

案例

grub-theme-refactoring

grub-theme-remix

lubuntu-grub-theme

可以在「filelist

找到「/etc/default/grub.d/lubuntu-grub-theme.cfg」。

深入探索

which grub-mkconfig

顯示

/usr/sbin/grub-mkconfig

執行

grep 'default/grub.d' /usr/sbin/grub-mkconfig -A 5

顯示

for x in ${sysconfdir}/default/grub.d/*.cfg ; do
  if [ -e "${x}" ]; then
    gettext_printf "Sourcing file \`%s'\n" "${x}" 1>&2
    . "${x}"
  fi
done

執行

grep 'default/grub.d' /usr/sbin/grub-mkconfig -A 5

顯示

if test -f ${sysconfdir}/default/grub ; then
  gettext_printf "Sourcing file \`%s'\n" "${sysconfdir}/default/grub" 1>&2
  . ${sysconfdir}/default/grub
fi
for x in ${sysconfdir}/default/grub.d/*.cfg ; do
  if [ -e "${x}" ]; then
    gettext_printf "Sourcing file \`%s'\n" "${x}" 1>&2
    . "${x}"
  fi
done

接下來

接下來,來探索「/etc/grub.d」這個資料夾。