Как автоматически обновить burg после обновления ядра

После каждого обновления ядра я должен запускать update-burg вручную. Как мне сделать это автоматически?

7
задан 21 October 2010 в 18:01

4 ответа

Другой способ для вас - отредактировать /etc/kernel-img.conf

do_symlinks = yes
relative_links = yes
do_bootloader = no
do_bootfloppy = no
do_initrd = yes
link_in_boot = no
postinst_hook = update-burg
postrm_hook = update-burg

От: https://bugs.launchpad.net/burg/+bug/594431 (отчет об ошибке повторить ваш опыт)

Подобным образом можно удалить обновления, но, как и в /etc/, вы должны (я думаю) получить запрос на сохранение существующей конфигурации, когда обновление попадет .

Как продолжают говорить люди из жучка, это все еще не идеально, поскольку есть все шансы, что кто-то захочет запустить burg и grub или, по крайней мере, синхронизировать их.

Вы можете пойти еще дальше и написать новый сценарий, подобный следующему:

#!/bin/sh
set -e
exec update-grub "$@"
exec update-burg "$@"

Сохраните его как /usr/sbin/update-bootloaders, chmod +x, а затем вставьте update-bootloaders в /etc/kernel-img.conf вместо update-grub или update-burg.

Я предполагаю, что в долгосрочной перспективе система alternatives должна быть настроена для различных загрузчиков, которые существуют для java, аудио и других взаимозаменяемых подсистем.

0
ответ дан 21 October 2010 в 18:01

Обычно update-grub вызывается. Это просто то, что происходит. Система ожидает, что grub будет загрузчиком. Предполагая, что вы больше никогда не будете использовать grub, вы можете сделать это:

cd /usr/sbin/
sudo mv update-grub update-grub.backup
sudo ln -s update-burg update-grub

Это перемещает update-grub в сторону и создает на его месте символическую ссылку, которая фактически запускается update-burg. Поэтому, когда устанавливается новое ядро, оно вызывает update-grub, что на самом деле update-burg.

Хаки, но это должно сработать.

Для реверса:

cd /usr/sbin/
sudo rm update-grub # this is only a symlink
sudo mv update-grub.backup update-grub
0
ответ дан 21 October 2010 в 18:01

Если у вас есть привычка выполнять sudo apt-get upgrade для обновления ваших пакетов и ядер, следующий скрипт решит вашу проблему и на 100% устойчив к обновлениям:

#!/bin/bash
# Check what kernels are installed.
KERLST=`ls /boot | grep vmlinu`

# Do updates.
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade

# Update burg if kernels changed. 
if [ "$KERLST" != "`ls /boot | grep vmlinu`" ]; then
    sudo update-burg
fi

Сохранить в виде текстового файла apgrade.sh и пометьте его как исполняемый. Этот скрипт выполнит все возможные обновления, проверит, не изменился ли список ядра, и обновит burg, если он это сделал. Я использую его с 10.04 (привязан к псевдониму), и до сих пор ни одно обновление не сломало его.

Если, однако, вам нравится делать обновления вручную через synaptic, то метод Оли может быть лучше.

0
ответ дан 21 October 2010 в 18:01

Спасибо!

Я создал сценарий, основанный на наиболее полезной / наиболее оцененной информации, представленной здесь. Одно тонкое изменение заключается в том, что исполняемые файлы загрузчика больше не выполняются (как в случае с grub, он выходит; таким образом, скрипт завершается, а другие загрузчики не выполняются (@ Ubuntu11)).

Скрипт может быть настроен для нескольких загрузчиков .. (если исполняемый файл update-name и в /usr/sbin ;-).

Это может быть расширено, чтобы разрешить обновление исполняемых файлов, которые не update-name. Для этого, возможно, используйте name:exec в качестве значений в конфигурационной переменной boot-loaders и разделите переменную var, затем измените соответствующую команду выполнения (вероятно, для элегантности потребуется использовать другой язык).

#!/bin/sh
# #################################################################
#
# Updates (multiple) bootloaders after kernel update.
#
# @shell bash
# @see http://askubuntu.com/questions/4905/how-to-automatically-update-burg-after-a-kernel-update
#
# #################################################################
#
# Install:
#
# -----------------------------------------------------------------
# * Save as:   /usr/sbin/update-bootloaders
# * Then:      chmod +x /usr/sbin/update-bootloaders
# * Edit /etc/kernel-img.conf and append/replace the following parameters:
# ** postinst_hook = update-bootloaders
# ** postrm_hook = update-bootloaders
#
# #################################################################
#
# Configuration:
#
# -----------------------------------------------------------------
# BOOTLOADERS: configuration variable to list bootloaders
BOOTLOADERS="grub burg"
#
# #################################################################
set -e
for BOOTLOADER in ${BOOTLOADERS}; do
    EXEC="/usr/sbin/update-${BOOTLOADER}"
    if [ -x ${EXEC} ]; then
        echo "Updating ${BOOTLOADER}..."
        ${EXEC} "$@"
    fi
done
# eof
0
ответ дан 21 October 2010 в 18:01

Другие вопросы по тегам:

Похожие вопросы: