Nach jedem Kernel-Update muss ich update-burg
manuell ausführen. Wie mache ich es automatisch?
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.
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
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
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.