Ksplice: aggiornare il kernel di Ubuntu senza riavviare

Segnalo che con Ksplice (ora Oracle) è possibile applicare gli aggiornamenti di sicurezza (in particolare quelli del kernel) senza dover riavviare. Un’opportunità davvero interessante per tutti i server che devono mantenere un certo uptime e che, di conseguenza, non possono essere riavviati facilmente. Il servizio è disponibile a pagamento per le versioni di Ubuntu server, mentre è gratuito per le versioni desktop. Ecco come installarlo:

  1. Richiedere una chiave di accesso che vi verrà recapitata via email
  2. Loggatevi come utente root, e create il file /etc/apt/sources.list.d/ksplice.list
  3. Incollate nel file le seguenti direttive che servono ad aggiungere le sorgenti dei pacchetti da installare:
    deb https://www.ksplice.com/apt oneiric ksplice 
    deb-src https://www.ksplice.com/apt oneiric ksplice
  4. Lanciate i seguenti comandi, che servono ad installare i pacchetti di Ksplice:
    apt-get install ca-certificates
    wget -N https://www.ksplice.com/apt/ksplice-archive.asc
    apt-key add ksplice-archive.asc
    apt-get update
    apt-get install uptrack
  5. Modificate il file /etc/uptrack/uptrack.conf impostando l’opzioneautoinstall al valore yes
  6. Lanciate il comando uptrack-upgrade -y

Tutti gli updates di sicurezza  del kernel verranno quindi installati automaticamente, senza dover riavviare. Comodo, vero? Dal 2005 al 2008, Ksplice ha applicato con successo 64 patch senza dover riavviare.

Per i più curiosi: come funziona Ksplice? Il segreto sta nel fatto che Ksplice aggiorna dinamicamente il kernel, direttamente in memoria, grazie ad un confronto sugli oggetti ELF allocati in memoria. Questo processo è di per sé rischioso e deve essere fatto con la massima attenzione: prima di fare un patch “a caldo” di un oggetto, viene freezata l’esecuzione del processo che accede a tale oggetto, sostituita la chiamata ai vecchi oggetti con la chiamata ai nuovi oggetti, e viene quindi ripresa l’esecuzione.

Leave a Reply

Your email address will not be published. Required fields are marked *