Re: 15.0-alpha1
Inviato: sab 6 mar 2021, 23:35
è uno script che ho costruito io in base alle mie esigenze e configurazione. Questo è il codice:
stendi un velo pietoso sulle righe "echo pirla". Di solito uso quell'output per intercettare degli errori nei debug, poi mi sono dimenticato di rimuoverli
I percorsi che fanno capo alle directory /packages/current/kernel /packages/sbo/sistema/sbo/nvidia-kernel e /packages/sbo/sistema/sbo/virtualbox-kernel si devono al fatto che pacchetti e slackbuild li gestico e li conservo in una partizione dedicata che monto in una directory /packages
Le varie reiterate righe di output (echo) sono finalizzate a individuare agevolmente la fase in cui si verifica un eventuale intoppo imprevisto. In ogni caso lo sto usando ormai da parecchi mesi e ormai è ben collaudato. L'unico imprevisto che ho incontrato relativamente recente si è verificato in un caso in cui il nuovo kernel scaricato era in realtà una ricompilazione del kernel già installato. Si trattava di un'eventualità che non avevo previsto. Se non ricordo male l'avevo corretto, ma non sono sicuro. In ogni caso l'imprevisto portava alla rimozione del initial ramdisk appena installato
Codice: Seleziona tutto
#!/bin/sh
echo "Avvio dell'aggiornamento del kernel ..."
cd /packages/current/kernel
VERSION=$( uname -r 2>/dev/null)
MAJOR=${VERSION%\.*\.*}
MINOR=${VERSION#*.}
MINOR=${MINOR%\.*}
PATCH=${VERSION##*.}
BUILD="0"
OLD=$MAJOR.$MINOR.$PATCH
MAJOR=$((MAJOR - 3))
MINOR="0"
PATCH="0"
echo ""
echo "Rilevamento della versione corrente del kernel: "$OLD
echo ""
echo "Rilevamento della versione da installare ..."
until [ -f ./kernel-generic-$MAJOR*txz ]; do
if [ -f ./kernel-generic-$MAJOR*txz ]; then
echo "pirla"
else
MAJOR=$((MAJOR + 1))
fi
done
until [ -f ./kernel-generic-$MAJOR.$MINOR.*txz ]; do
if [ -f ./kernel-generic-$MAJOR.$MINOR.*txz ]; then
echo "pirla"
else
MINOR=$((MINOR + 1))
fi
done
until [ -f ./kernel-generic-$MAJOR.$MINOR.$PATCH-*txz ]; do
if [ -f ./kernel-generic-$MAJOR.$MINOR.$PATCH-*txz ]; then
echo "pirla"
else
PATCH=$((PATCH + 1))
fi
done
until [ -f ./kernel-generic-$MAJOR.$MINOR.$PATCH-x86_64-$BUILD.txz ]; do
if [ -f ./kernel-generic-$MAJOR.$MINOR.$PATCH-x86_64-$BUILD.txz ]; then
echo "pirla"
else
BUILD=$((BUILD + 1))
fi
done
echo ""
echo "Il kernel $OLD sarà aggiornato alla versione $MAJOR.$MINOR.$PATCH-$BUILD"
upgradepkg kernel-generic-$MAJOR.$MINOR.$PATCH-x86_64-$BUILD.txz
upgradepkg kernel-huge-$MAJOR.$MINOR.$PATCH-x86_64-$BUILD.txz
upgradepkg kernel-modules-$MAJOR.$MINOR.$PATCH-x86_64-$BUILD.txz
upgradepkg kernel-headers-$MAJOR.$MINOR.$PATCH-x86-$BUILD.txz
upgradepkg kernel-source-$MAJOR.$MINOR.$PATCH-noarch-$BUILD.txz
VERSION=$MAJOR.$MINOR.$PATCH
echo "Installazione dei nuovi pacchetti completata"
mv -v kernel *.txz ../done
echo "Uscita dalla directory /packages/current/kernel"
echo "Ingresso nella directory /boot"
cd /boot
echo ""
echo "Esecuzione di mkinitrd ..."
mkinitrd -c -k $VERSION -m ext4 -l it -o /boot/initrd-generic-$VERSION.gz
echo ""
echo "Rimozione del vecchio initial ramdisk ..."
rm -v /boot/initrd-generic-$OLD.gz
echo "Aggiornamento dei link simbolici"
rm initrd-generic
ln -s initrd-generic-$VERSION.gz initrd-generic
rm vmlinuz-generic
ln -s vmlinuz-generic-$VERSION vmlinuz-generic
echo "Aggiornamento del kernel completato"
echo ""
echo "Uscita dalla directory /boot"
echo "Ingresso nella directory /packages/sbo/sistema/sbo/nvidia-kernel"
cd /packages/sbo/sistema/sbo/nvidia-kernel
echo ""
echo "Aggiornamento dei moduli del driver nvidia ..."
echo "Avvio dello slackbuild nvidia-kernel.SlackBuild"
KERNEL=$VERSION ./nvidia-kernel.SlackBuild
echo ""
echo "Aggiornamento del pacchetto nvidia-kernel ..."
upgradepkg /tmp/nvidia-kernel*tgz
echo ""
echo "Uscita dalla directory /packages/sbo/sistema/sbo/nvidia-kernel"
echo "Ingresso nella directory /packages/sbo/sistema/sbo/virtualbox-kernel"
cd ../virtualbox-kernel
echo ""
echo "Aggiornamento dei moduli di virtualbox ..."
echo "Avvio dello slackbuild virtualbox-kernel.SlackBuild"
KERNEL=$VERSION ./virtualbox-kernel.SlackBuild
echo ""
echo "Aggiornamento del pacchetto virtualbox-kernel ..."
upgradepkg /tmp/virtualbox-kernel*tgz
echo ""
echo "Rimozione dei pacchetti generati dalla directory /tmp ..."
rm -v /tmp/*kernel*tgz
echo ""
echo "Aggiornamento della configurazione del sistema completata"
echo "ATTENZIONE! Se il kernel è stato aggiornato ad una nuova MAJOR release o una nuova MINOR release"
echo "prima di riavviare il sistema aggiorna i template in /etc/grub.d, poi esegui grub-mkconfig "
echo "e grub-install per aggiornare la configurazione del bootloader."
echo "Al termine puoi riavviare il sistema."
I percorsi che fanno capo alle directory /packages/current/kernel /packages/sbo/sistema/sbo/nvidia-kernel e /packages/sbo/sistema/sbo/virtualbox-kernel si devono al fatto che pacchetti e slackbuild li gestico e li conservo in una partizione dedicata che monto in una directory /packages
Le varie reiterate righe di output (echo) sono finalizzate a individuare agevolmente la fase in cui si verifica un eventuale intoppo imprevisto. In ogni caso lo sto usando ormai da parecchi mesi e ormai è ben collaudato. L'unico imprevisto che ho incontrato relativamente recente si è verificato in un caso in cui il nuovo kernel scaricato era in realtà una ricompilazione del kernel già installato. Si trattava di un'eventualità che non avevo previsto. Se non ricordo male l'avevo corretto, ma non sono sicuro. In ogni caso l'imprevisto portava alla rimozione del initial ramdisk appena installato