Назад | Перейти на главную страницу

Автоматическое обновление grub-pc

Я хотел бы знать, как обновить grub-pc в производном дистрибутиве ubuntu 10.04 без диалогового окна configure grub-pc ncurses. Я пробовал исследовать debconf-get-selections до и после, а также варианты:

apt-get -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" --force-yes -fuy install grub-pc

а также установка DEBIAN_FRONTEND:

export DEBIAN_FRONTEND=noninteractive

Все безрезультатно, я хочу сохранить локальную версию файла конфигурации и использовать этот код в сценарии для автономной установки.

вы можете предварительно загрузить ответ debconf с помощью 'debconf-set-selections'

сначала установите debconf-utils на хост, на котором уже установлен grub-pc. затем запустите:

debconf-get-selections | grep grub-pc > /tmp/grubpc.debconf

у вас будет файл, который выглядит примерно так:

grub-pc grub2/kfreebsd_cmdline  string
grub-pc grub2/device_map_regenerated    note
grub-pc grub2/linux_cmdline     string
grub-pc grub-pc/install_devices_failed  boolean false
grub-pc grub-pc/chainload_from_menu.lst boolean true
grub-pc grub-pc/kopt_extracted  boolean true
grub-pc grub-pc/postrm_purge_boot_grub  boolean false
grub-pc grub2/kfreebsd_cmdline_default  string  quiet
grub-pc grub2/linux_cmdline_default     string
grub-pc grub-pc/install_devices_empty   boolean false
grub-pc grub-pc/install_devices multiselect     /dev/sda
grub-pc grub-pc/install_devices_failed_upgrade  boolean true
grub-pc grub-pc/install_devices_disks_changed   multiselect     /dev/sda
grub-pc grub-pc/mixed_legacy_and_grub2  boolean true

Затем отредактируйте /tmp/grubpc.debconf в соответствии с новой системой. В частности, запись grub-pc / install_devices.

Вам не понадобятся все эти записи. Я предполагаю, что для grub-pc вам, вероятно, понадобятся только записи install_devices и linux_cmdline *, и (если у вас ранее был установлен grub-legacy), возможно, запись chainload_from_menu.lst.

После того, как вы отредактировали файл, скопируйте его на удаленную машину и загрузите в debconf-set-selections.

Теперь у вас должна быть возможность удаленно установить grub-pc без диалога debconf.

[ потом ]

Пакет grub-pc зависит от ucf, который обеспечивает такое же управление conffile для файлов, принадлежащих / созданных пакетом, который не указан как conffile.

Во всех системах, которые я проверял до сих пор, / var / lib / ucf / cache / содержит файл с именем: etc: default: grub, так что это вероятный кандидат на то, чтобы вызвать это.

попробуйте раскомментировать строку conf_force_conffold = YES в /etc/ucf.conf на целевой машине. это можно автоматизировать для массового обновления многих машин, конечно, с помощью scp или sed (для этого, похоже, нет записи в debconf).

если это является причиной этого, тот факт, что он игнорирует ваш параметр DEBIAN_FRONTEND = noninteractive, может потребовать отчета об ошибке. глядя на сценарии, и debconf, и ucf, похоже, используют DEBIAN_HAS_FRONTEND env var (но я не уверен, предназначен ли он для определения пользователем или для внутреннего использования. Он не упоминается на страницах руководства).

Также может быть ошибка, что ucf не наследует заданный вами параметр dpkg --force-confold ... но ucf может не знать об этом.