Мой вопрос о том, как добавить несколько строк в файл /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
, и было бы полезно, если бы эти четыре строки также были включены.
Вы должны редактировать конфигурационные сценарии напрямую. Невозможно добавить outb 0x728 1
в файл grub.conf, так как сценарии, которые получают переменные, не знают, как управлять этими записями. Об этом говорится на информационных страницах:
Для более детальной настройки вывода «grub-mkconfig» вы можете редактировать сценарии в /etc/grub.d напрямую [ 117]. '/etc/grub.d/40_custom' особенно полезен для добавления целых пунктов пользовательского меню; просто введите пункты меню, которые вы хотите добавить в конец этого файла, оставив по крайней мере первые две строки без изменений.
blockquote>Итак, что нужно сделать для записей linux, вы можете очень тщательно отредактировать файл
/etc/grub.d/10_linux
. Вы можете искать функциюlinux ()
и изучать ее внутренности. Все это очень сложно, и я бы не стал прикасаться к нему без резервной копии. Вы можете увидеть результат запуска файла/etc/grub.d/10_linux
в вашей оболочке, затем посмотреть, куда вы хотите добавить свои специальные строки, отредактировать его, выполнить еще раз и посмотреть, довольны ли вы результатами.
Не редактируйте файл /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], и он редко перезаписывается обновлениями. (Или, по крайней мере, он спросит, когда вы обновляете, хотите ли вы обновить этот файл или сохранить измененную версию.)
Честно говоря, самым простым способом было бы сделать резервную копию 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/
на ваш каталог на файлы:)