Antworten:
Eine andere Methode für Sie ist das Bearbeiten /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
Von: https://bugs.launchpad.net/burg/+bug/594431 (ein Fehlerbericht spiegelt Ihre Erfahrung wider)
Dies kann in ähnlicher Weise durch Updates gelöscht werden, aber wie es ist /etc/
, sollten Sie (glaube ich) eine Aufforderung erhalten, Ihre vorhandene Konfiguration beizubehalten, wenn ein Update eintritt.
Wie die Leute im Bug weiter 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 "$@"
exec update-burg "$@"
Speichern Sie es wie /usr/sbin/update-bootloaders
, chmod +x
es, und dann steckt 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.
Wird normalerweise update-grub
angerufen. Dies ist nur etwas, was passiert. Das System erwartet, dass grub der Bootloader ist. Angenommen, Sie werden grub nie wieder verwenden, können Sie Folgendes tun:
cd /usr/sbin/
sudo mv update-grub update-grub.backup
sudo ln -s update-burg update-grub
Dies bewegt sich update-grub
aus dem Weg und erzeugt an seiner Stelle einen Symlink, der tatsächlich ausgeführt wird update-burg
. Wenn also ein neuer Kernel installiert wird, ruft er auf, update-grub
welcher tatsächlich ist update-burg
.
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
Wenn Sie die Gewohnheit haben sudo apt-get upgrade
, Ihre Pakete und Kernel zu aktualisieren, löst das folgende Skript Ihr Problem und ist zu 100% resistent gegen Aktualisierungen:
#!/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 markieren Sie es als ausführbar. Dieses Skript führt jedes mögliche Update durch, prüft, ob sich die Kernelliste geändert hat, und aktualisiert burg, falls dies der Fall ist. Ich benutze es seit 10.04 (an einen Alias gebunden) und keine Updates haben es bisher kaputt gemacht.
Wenn Sie Ihre Aktualisierungen jedoch manuell über synaptisch durchführen möchten, ist die Methode von Oli möglicherweise besser.
~/bin
(und die .sh-Erweiterung entfernen), wenn Sie es als ausführen möchten aupgrade
.
Vielen Dank!
Ich habe ein Skript erstellt, das auf den hilfreichsten / am besten bewerteten Informationen basiert, die hier bereitgestellt werden. Eine subtile Änderung besteht darin, dass die ausführbaren Dateien des Bootloaders nicht mehr ausgeführt werden (wie im Fall von Grub, das beendet wird; daher werden die Skript-Exits 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 ist /usr/sbin
;-).
Es könnte erweitert werden, um ausführbare Aktualisierungsdateien zuzulassen, die dies nicht sind update-name
. Verwenden Sie dazu möglicherweise name:exec
Werte in der Konfigurationsvariablen des Bootloaders und teilen Sie die Variable auf. Ändern Sie dann den Ausführungsbefehl entsprechend (wahrscheinlich müsste eine andere Sprache verwendet werden, damit dies elegant ist).
#!/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