Como atualizar automaticamente o burg após uma atualização do kernel

7

Após cada atualização do kernel, tenho que executar update-burg manualmente. Como faço isso automático?

    
por jumbli 29.09.2010 / 17:22

4 respostas

8

Outro método para você é editar /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: link (um relatório de erros ecoa sua experiência)

Isso também pode ser eliminado por atualizações, mas como é em /etc/ você deve (eu acho) receber uma solicitação para manter sua configuração existente quando uma atualização chegar.

Como as pessoas no bug continuam a dizer, isso ainda não é ideal, pois há todas as possibilidades de alguém querer rodar tanto o burg como o grub ou, no mínimo, manter os dois sincronizados.

Você poderia ir mais longe e escrever um novo script como este:

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

Salve como /usr/sbin/update-bootloaders , chmod +x e, em seguida, coloque update-bootloaders em /etc/kernel-img.conf no lugar de update-grub ou update-burg .

Eu acho que a longo prazo, um sistema alternatives precisa ser configurado para vários gerenciadores de inicialização, como existe para java, áudio e outros subsistemas intercambiáveis.

    
por Oli 30.09.2010 / 16:06
3

Normalmente, update-grub é chamado. Isso é apenas algo que acontece. O sistema espera que o grub seja o bootloader. Supondo que você nunca vai usar o grub novamente, você pode fazer isso:

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

Isso move update-grub para fora e cria um symlink em seu lugar que realmente executa update-burg . Assim, quando um novo kernel for instalado, ele chamará update-grub , que na verdade é update-burg .

Hacky, mas deve funcionar.

Para reverter:

cd /usr/sbin/
sudo rm update-grub # this is only a symlink
sudo mv update-grub.backup update-grub
    
por Oli 29.09.2010 / 17:31
1

Se você tem o hábito de fazer sudo apt-get upgrade para atualizar seus pacotes e kernels, o script a seguir resolverá seu problema e será 100% resistente a atualizações:

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

Salvar é como um arquivo de texto apgrade.sh e marcá-lo como executável. Esse script executará todas as atualizações possíveis, verificará se a lista do kernel foi alterada e atualizará o comando caso isso aconteça. Eu tenho usado desde 10.04 (ligado a um alias), e nenhuma atualização o quebrou até agora.

Se, no entanto, você gosta de fazer suas atualizações manualmente através do synaptic, então o método de Oli pode ser melhor.

    
por Malabarba 21.10.2010 / 15:30
1

Obrigado!

Eu criei um script com base nas informações mais úteis / com melhor classificação fornecidas aqui. Uma mudança sutil é que os executáveis do carregador de inicialização não são mais executados (como no caso do grub sair; portanto, o script é encerrado e outros carregadores não são executados (@ Ubuntu11)).

O script pode ser configurado para vários gerenciadores de inicialização (se o executável for update-name e /usr/sbin ;-)).

Ele pode ser estendido para permitir executáveis de atualização que não são update-name . Para fazer isso, talvez use name:exec como valores na variável de configuração dos boot-loaders e divida o var, então mude o comando de execução de acordo (provavelmente precisaria usar uma linguagem diferente para que isso seja elegante).

#!/bin/sh
# #################################################################
#
# Updates (multiple) bootloaders after kernel update.
#
# @shell bash
# @see https://sobrelinux.info/questions/18252/how-to-automatically-update-burg-after-a-kernel-update"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
    
por Thf 30.05.2012 / 20:31