Как добавить строки в / etc / default / grub, чтобы они отображались в /boot/grub/grub.cfg?

Мой вопрос о том, как добавить несколько строк в файл /etc/default/grub, чтобы он автоматически отображался при каждой регенерации /boot/grub/grub.cfg. Подробности:

Я запускаю Ubuntu на Macbook Pro 8.2, и одна из вещей, которые мне пришлось сделать, чтобы он работал правильно, это изменить 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, и было бы полезно, если бы эти четыре строки также были включены.

4
задан 30 January 2017 в 00:56

3 ответа

Вы должны редактировать конфигурационные сценарии напрямую. Невозможно добавить outb 0x728 1 в файл grub.conf, так как сценарии, которые получают переменные, не знают, как управлять этими записями. Об этом говорится на информационных страницах:

Для более детальной настройки вывода «grub-mkconfig» вы можете редактировать сценарии в /etc/grub.d напрямую [ 117]. '/etc/grub.d/40_custom' особенно полезен для добавления целых пунктов пользовательского меню; просто введите пункты меню, которые вы хотите добавить в конец этого файла, оставив по крайней мере первые две строки без изменений.

Итак, что нужно сделать для записей linux, вы можете очень тщательно отредактировать файл /etc/grub.d/10_linux. Вы можете искать функцию linux () и изучать ее внутренности. Все это очень сложно, и я бы не стал прикасаться к нему без резервной копии. Вы можете увидеть результат запуска файла /etc/grub.d/10_linux в вашей оболочке, затем посмотреть, куда вы хотите добавить свои специальные строки, отредактировать его, выполнить еще раз и посмотреть, довольны ли вы результатами.

0
ответ дан 30 January 2017 в 00:56

Не редактируйте файл /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

Этот файл создается каждый раз [ 114], и он редко перезаписывается обновлениями. (Или, по крайней мере, он спросит, когда вы обновляете, хотите ли вы обновить этот файл или сохранить измененную версию.)

0
ответ дан 30 January 2017 в 00:56

Честно говоря, самым простым способом было бы сделать резервную копию 2 файлов, и каждый раз, когда Ubuntu обновляет, вы запускаете скрипт от имени пользователя root:

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

Во-первых, измените /directory/ на ваш каталог на файлы:)

0
ответ дан 30 January 2017 в 00:56