如何向 /etc/default/grub 添加行以便它们反映在 /boot/grub/grub.cfg 中?

如何向 /etc/default/grub 添加行以便它们反映在 /boot/grub/grub.cfg 中?

我的问题是如何在文件中添加几行,/etc/default/grub以便每次/boot/grub/grub.cfg重新生成时自动反映出来。详细信息:

我在 Macbook Pro 8.2 上运行 ubuntu,为了让它正确运行,我必须做的一件事就是修改 grub.cfg,以便它只加载两个显卡中的一个。为了关闭其中一个显卡,我在以下内容中添加了有关 i915 的文本GRUB_CMDLINE_LINUX_DEFAULT /etc/default/grub

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915.lvds_channel_mode=2 i915.modeset=1 i915.lvds_use_ssc=0"
GRUB_CMDLINE_LINUX=""

问题是我还必须添加以下内容/etc/grub.cfg

  outb 0x728 1
  outb 0x710 2
  outb 0x740 2
  outb 0x750 0

我已将其添加到上下文中grub.cfg

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-1e8685ef-b6a8-4bf3-abb8-62d0212cea7c' {
recordfail
load_video
gfxmode $linux_gfx_mode
insmod gzio
insmod part_gpt
insmod reiserfs
outb 0x728 1
outb 0x710 2
outb 0x740 2
outb 0x750 0
set root='hd0,gpt4'
if [ x$feature_platform_search_hint = xy ]; then
  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt4 --hint-efi=hd0,gpt4 --hint-baremetal=ahci0,gpt4  21c34907-4da5-4356-b1c8-a5d2747411ed
else...

我如何将其添加到/etc/default/grub文件中,以便不必在grub.cfg每次 Ubuntu 更新时手动将其添加到文件中?目前看来,每次 Ubuntu 更新时,它都会/boot/grub/grub.cfg/etc/default/grub文件中重新生成文件,如果这四行也可以包含在内,那将会很有帮助。

答案1

不要编辑该/boot/grub/grub.cfg文件。编辑该/etc/grub.d/10_linux文件:

将您的命令添加到

  cat << EOF
    insmod gzio
EOF

部分,因此应为:

  cat << EOF
    insmod gzio
    outb 0x728 1
    outb 0x710 2
    outb 0x740 2
    outb 0x750 0
EOF

每次update-grub运行时都会获取此文件,并且很少被更新覆盖。(或者至少它会在更新时询问您是否要更新此文件或保留修改后的版本。)

答案2

您必须直接编辑配置脚本。无法添加outb 0x728 1到 grub.conf 文件中,因为提供变量的脚本不知道如何管理这些条目。信息页面中说:

要更详细地定制“grub-mkconfig”的输出,您可以直接编辑“/etc/grub.d”中的脚本。'/etc/grub.d/40_custom' 对于添加整个自定义菜单项特别有用;只需在该文件末尾输入要添加的菜单项,确保至少保留前两行。

那么,对于 Linux 条目,您可能需要/etc/grub.d/10_linux非常仔细地编辑文件。您可以查找该linux ()函数并研究其内部结构。整个过程非常复杂,如果没有备份,我不会碰它。您可以/etc/grub.d/10_linux在 shell 中看到文件的输出,然后查看要添加特殊行的位置,编辑它,再次执行它,看看您是否对结果满意。

答案3

老实说,最简单的方法是备份这两个文件,每次 Ubuntu 更新时,以 root ofc 身份运行一个脚本:

#!/bin/sh
rm /boot/grub/grub && /boot/grub/grub.cfg
cp /directory/grub /boot/grub/
cp /directory/grub.cfg /boot/grub/

有一件事,改变/directory/你的文件目录:)

相关内容