web-dev-qa-db-fra.com

Comment mettre à jour automatiquement burg après une mise à jour du noyau

Après chaque mise à jour du noyau, je dois exécuter update-burg manuellement. Comment puis-je le rendre automatique?

7
jumbli

Une autre méthode pour vous consiste à éditer /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

De: https://bugs.launchpad.net/burg/+bug/594431 (un rapport de bogue confirme votre expérience)

Cela peut également être effacé par les mises à jour, mais comme il est dans /etc/ vous devriez (je pense) (je pense) obtenir une invite pour conserver votre configuration existante quand une mise à jour frappe.

Comme le disent les responsables du bogue, ce n’est toujours pas idéal, car il est fort possible que quelqu'un veuille exécuter à la fois burg et grub ou tout au moins garder les deux synchronisés.

Vous pouvez aller plus loin et écrire un nouveau script comme celui-ci:

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

Enregistrez-le sous /usr/sbin/update-bootloaders, chmod +x, puis collez update-bootloaders dans /etc/kernel-img.conf à la place de update-grub ou update-burg.

Je suppose qu’à long terme, un système alternatives doit être configuré pour divers chargeurs de démarrage, comme il en existe pour Java, le système audio et d’autres sous-systèmes interchangeables.

8
Oli

Normalement, update-grub est appelé. C'est juste quelque chose qui se passe. Le système s'attend à ce que grub soit le chargeur de démarrage. En supposant que vous n'utilisiez plus jamais de grub, vous pouvez le faire:

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

Cela déplace update-grub et crée un lien symbolique à sa place qui exécute réellement update-burg. Ainsi, lorsqu'un nouveau noyau est installé, il appelle update-grub qui est en fait update-burg.

Hacky mais ça devrait marcher.

Inverser:

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

Merci!

J'ai créé un script basé sur les informations les plus utiles et les mieux notées fournies ici. Un changement subtil est que les exécutables du chargeur de démarrage ne sont plus exécutés (comme dans le cas de grub, il se ferme; ainsi, le script se ferme et les autres chargeurs ne sont pas exécutés (@ Ubuntu11)).

Le script peut être configuré pour plusieurs chargeurs de démarrage .. (si l'exécutable est update-name et dans /usr/sbin ;-).

Il pourrait être étendu pour autoriser les exécutables de mise à jour qui ne sont pas update-name. Pour ce faire, utilisez peut-être name:exec en tant que valeurs de la variable de configuration des chargeurs d’amorçage et divisez la var, puis modifiez la commande d’exécution en conséquence (vous devrez probablement utiliser un langage différent pour que cela soit élégant).

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

Si vous avez l'habitude de faire Sudo apt-get upgrade pour mettre à jour vos paquets et vos noyaux, le script suivant va résoudre votre problème et résiste à 100% contre les mises à jour:

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

Enregistrer est sous forme de fichier texte apgrade.sh et marquez-le comme exécutable. Ce script effectuera toutes les mises à jour possibles, vérifiera si la liste du noyau a changé et mettra à jour burg le cas échéant. Je l'utilise depuis 10.04 (lié à un alias), et aucune mise à jour ne l'a cassé jusqu'à présent.

Si, toutefois, vous aimez effectuer vos mises à jour manuellement via Synaptic, la méthode d'Oli peut être meilleure.

1
Malabarba