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

7

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

    
задан jumbli 29.09.2010 в 15:22
источник

4 ответа

8

Другим способом для вас является редактирование /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

От: Ссылка (отчет об ошибках повторяет ваш опыт)

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

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

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

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

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

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

    
ответ дан Oli 30.09.2010 в 14:06
источник
3

Обычно вызывает вызов 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
    
ответ дан Oli 29.09.2010 в 15:31
источник
1

Если у вас есть привычка делать 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 (привязанный к псевдониму), и никакие обновления не сломали его до сих пор.

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

ответ дан Malabarba 21.10.2010 в 13:30
источник
1

Спасибо!

Я создал сценарий на основе наиболее полезной / наилучшей информации, представленной здесь. Одним из тонких изменений является то, что исполняемые файлы загрузчика больше не исполняются (как в случае с 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
    
ответ дан Thf 30.05.2012 в 18:31
источник

Ознакомьтесь с другими вопросами по меткам