it-swarm.com.de

So aktualisieren Sie burg nach einem Kernel-Update automatisch

Nach jedem Kernel-Update muss ich update-burg manuell ausführen. Wie mache ich es automatisch?

7
jumbli

Eine andere Methode für Sie besteht darin, /etc/kernel-img.conf zu bearbeiten.

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

Von: https://bugs.launchpad.net/burg/+bug/594431 (ein Fehlerbericht bestätigt Ihre Erfahrung)

Dies kann auf ähnliche Weise durch Aktualisierungen beseitigt werden, aber wie in /etc/ sollte (glaube ich) eine Eingabeaufforderung angezeigt werden, um die vorhandene Konfiguration beizubehalten, wenn Ein Update schlägt zu.

Wie die Leute sagen, ist dies immer noch nicht ideal, da es jede Möglichkeit gibt, dass jemand sowohl Burg als auch Grub ausführen oder zumindest die beiden synchron halten möchte.

Sie könnten noch einen Schritt weiter gehen und ein neues Skript wie das folgende schreiben:

#!/bin/sh
set -e
exec update-grub "[email protected]"
exec update-burg "[email protected]"

Speichern Sie es als /usr/sbin/update-bootloaders, chmod +x und kleben Sie update-bootloaders in /etc/kernel-img.conf anstelle von update-grub oder update-burg.

Ich denke, auf lange Sicht muss ein alternatives System für verschiedene Bootloader eingerichtet werden, wie es für Java, Audio und andere austauschbare Subsysteme existiert.

8
Oli

Normalerweise wird update-grub aufgerufen. Dies ist nur etwas, was passiert. Das System erwartet, dass grub der Bootloader ist. Vorausgesetzt, Sie werden grub nie wieder verwenden, können Sie dies tun:

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

Dies schiebt update-grub aus dem Weg und erstellt einen Symlink an seiner Stelle, der update-burg ausführt. Wenn ein neuer Kernel installiert wird, ruft er update-grub auf, was tatsächlich update-burg ist.

Hacky aber es sollte funktionieren.

Umkehren:

cd /usr/sbin/
Sudo rm update-grub # this is only a symlink
Sudo mv update-grub.backup update-grub
3
Oli

Vielen Dank!

Ich habe ein Skript erstellt, das auf den hilfreichsten/am besten bewerteten Informationen basiert, die hier bereitgestellt werden. Eine subtile Änderung ist, dass die ausführbaren Dateien des Bootloaders nicht mehr ausgeführt werden (wie im Fall von grub, das beendet wird; daher werden das Skript beendet und andere Loader nicht ausgeführt (@ Ubuntu11)).

Das Skript kann für mehrere Bootloader konfiguriert werden. (Wenn die ausführbare Datei update-name und in /usr/sbin ist ;-).

Es könnte erweitert werden, um Update-ausführbare Dateien zuzulassen, die nicht update-name sind. Verwenden Sie dazu möglicherweise name:exec als Werte in der Konfigurationsvariablen des Bootloaders und teilen Sie die Variable auf. Ändern Sie dann den Ausführungsbefehl entsprechend (wahrscheinlich muss eine andere Sprache verwendet werden, um elegant zu sein).

#!/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} "[email protected]"
    fi
done
# eof
1
Thf

Wenn Sie die Angewohnheit haben, Sudo apt-get upgrade zum Aktualisieren Ihrer Pakete und Kernel auszuführen, löst das folgende Skript Ihr Problem und ist gegenüber Aktualisierungen 100% ausfallsicher:

#!/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

Speichern ist als Textdatei apgrade.sh und als ausführbar markieren. Dieses Skript führt alle möglichen Aktualisierungen durch, überprüft, ob sich die Kernelliste geändert hat, und aktualisiert burg, falls dies der Fall ist. Ich benutze es seit 10.04 (gebunden an einen Alias), und keine Updates haben es bisher beschädigt.

Wenn Sie Ihre Updates jedoch manuell über synaptic durchführen möchten, ist die Methode von Oli möglicherweise besser.

1
Malabarba