[Linux - Ubuntu] Sector XX is already in use by the program FlexNet: cosa significa e come risolvere

Scritto il 17/08/2012 - 19:24 da Jessica Lambiase

Attenzione: questo è un articolo abbastanza lungo, pieno di informazioni prettamente teoriche, e la soluzione al problema di FlexNet è esposta soltanto alla fine. Indipercui, se non ve ne frega un accidenti di come è fatto un disco rigido, del perchè succede ciò che succede, dei rischi che si corrono, eccetera eccetera eccetera.. potete saltare tranquillamente qui.

Era un caldissimo mercoledì di mezzo Agosto (si, ho passato la giornata di Ferragosto a casa.. avevo un impegno di mattina, non potevo muovermi prima delle 11 dal mio paese e non avevo la benchè minima intenzione di mettermi in auto in tardo mattino, al sole, con 40° all’ombra a fare chissà quante ore di traffico.. ok, sto sforando, torno in me) quando tra una granita, litri di caffè freddo bevuti davanti al PC, e un cambio di bootloader (sono passata da BurG a Grub 2.00 anche sul PC desktop), mi compare davanti agli occhi (dopo un bel grub-install /dev/sda) questo meraviglioso messaggio d’avviso:

/usr/local/sbin/grub-bios-setup: avviso: Sector 32 is already in use by the program `FlexNet’; avoiding it.  This software may cause boot or other problems in future.  Please ask its authors not to store data in the boot track.

A dire il vero lo avevo già visto qualche tempo fa su qualche altra macchina portatami in assistenza, ma ero convinta di aver evitato il FlexNet su me stessa… beh, a quanto pare mi sbagliavo. Facendo mente locale ho dedotto che il “danno” me l’ha causato un’installazione di Windows 8. Vedo le vostre facce a forma di “punto interrogativo” :) Ora vi spiego:

Flexnet Publisher (conosciuto come FlexIM) è un software proprietario della Flexera Software, è un vero e propriogestore di licenze, e si occupa in particolare di gestire determinati tipi di licenze multiple (ad es. le licenze aziendali).

A dirla tutta non mi è ben chiaro il motivo, ma tale gestore va a piazzarsi in un punto particolare del disco rigido che solitamente è libero oppure, in sistemi multiboot/NFS e simili, occupato dalle direttive d’avvio del sistema: lo spazio che intercorre tra il master boot record del disco e l’inizio del primo settore della prima partizione del disco.

In pratica, immaginate un hard disk (almeno nella sua organizzazione logica, perchè quella fisica è totalmente diversa) come una stanza di una biblioteca: in questa stanza vi saranno tanti mobili (le librerie), ciascuna libreria sarà suddivisa in mensole, e su ciascuna mensola vi saranno dei libri. Le librerie del nostro hard disk rappresentano i cilindri (numerati a partire da 0), le “mensole” del nostro mobile rappresentano i settori (numerati a partire da 0), ed i libri rappresentano i dati memorizzati in ciascuno dei settori.

Supponiamo, per iniziare, che ogni libreria possa contenere esattamente 63 mensole: è esattamente ciò che accade nella realtà, ogni cilindro è composto da esattamente 63 settori.

Supponiamo ora che ogni libro rappresenti esattamente un byte di dati: nella nostra libreria ciascuna mensola contiene esattamente 512 libri, per cui ogni settore è composto da esattamente 512 byte di dati (almeno è così che succede negli hard disk moderni). Riassunto, la dimensione del blocco predefinita per ciascun settore del disco rigido è di 512 byte. 

Ricapitolando il tutto, un cilindro è composto da 63 settori, ed ogni settore è composto a sua volta da 512 byte di dati.

Ok, adesso scendiamo un po’ più nel dettaglio: come è semplice intuire, più un hard disk è capiente, più saranno i cilindri ed i settori in esso presenti. Voi sapete, chiaramente, che un hard disk può essere partizionato (o meglio, un hard disk contiene almeno una partizione primaria che, nello stato iniziale, è pari alla dimensione totale dell’hard disk stesso). E sapete anche che è buona norma installare il sistema operativo principale sulla prima partizione dell’hard disk. Tale partizione, però, non inizia nel cilindro 0 del disco rigido. Eh no, ragazzi, la prima partizione solitamente non sta all’inizio del disco rigido, bensì parte dal cilindro 1 (questo perchè MSDOS imponeva, all’epoca, che una partizione iniziasse  dopo il termine di un cilindro. Non chiedetemene il perchè :D).  Calcoli alla mano, quindi, se nel cilindro 0 sono contenuti i settori da 0 a 62, nella prima partizione dell’hard disk si iniziano a scrivere dati a partire dal settore 63.

E che fine fanno i 62 settori precedenti? Vengono sprecati, visto che non appartengono a nessuna partizione ed apparentemente non sono riconosciuti dal sistema operativo? Bene, la risposta è NO.

Un settore particolare è il settore 0, il vero e proprio punto d’inizio dell’hard disk, che contiene il cosiddetto MBR (il Master Boot Record), ossia quella parte del disco in cui vengono definiti il codice d’avvio del sistema operativo (oppure del bootloader, dipende dai casi), la firma digitale del disco, la firma digitale dell’MBR stesso e, attenzione, l’importantissima tabella delle partizioni (è inutile dirvi che, senza quella, potete dire addio ai vostri dati, in quanto il sistema non saprà più dove andarli a pescare). In pratica, i 512 byte del settore 0 sono suddivisi in tale maniera:

  • byte da 0 a 439: codice d’avvio del sistema operativo/del bootloader (440 bytes in totale);
  • byte da 440 a 443: firma digitale del disco (4 bytes in totale);
  • byte da 444 a 445: bytes nulli (2 bytes in totale, rappresentano un delimitatore);
  • byte da 446 a 509: tabella delle partizioni (64 bytes in totale);
  • byte da 510 a 511: firma digitale dell’MBR (2 bytes in totale).

I restanti settori del cilindro (da 1 a 62) sono inizialmente vuoti, ma possono essere utilizzati da programmi quali – ad esempio – Grub2, FlexNet ed altri che richiedono spazio e direttive ad un livello ancora più basso rispetto al sistema operativo.

Quale è, quindi, il problema? Se guardate nella suddivisione superiore, noterete che al bootloader sono dedicati soltanto 440 bytes che, ad oggi, a Grub2 non bastano più: è proprio Grub2, quindi, che all’atto dell’installazione va a scrivere il suo codice anche negli altri settori appartenenti al cilindro 0 (con criteri decisi a run-time, quindi non prevedibili). E FlexNet – che come vi dicevo è un gestore di licenze mobili – va a fare esattamente la stessa cosa all’atto dell’installazione. Ragion per cui, se Grub2 trova un settore occupato da FlexNet all’atto della sua installazione, ce lo segnala con il messaggio che vi ho incollato ad inizio articolo: se siamo fortunati, potremmo non avere problemi all’avvio di Grub2… ma non è detto ciò accada. Anzi. La maggior parte delle volte Grub2 si rifiuta di avviare il sistema/i sistemi.

Come fare, quindi, ad ovviare al problema? Come installare Grub2 nonostante ci sia FlexNet che ad andarsene non ci pensa proprio? Spulcellando in giro per vari forums ho letto che il 90% degli utenti suggerisce di formattare a basso livello tutto il disco rigido, ossia – come diciamo noi in gergo – di piallare il disco. Gran fesseria.

Con qualche ben assestato comando da terminale, possiamo tranquillamente (mica tanto!?) andare ad azzerare i primi 64 settori dell’hard disk (oppure, in alternativa, azzerare soltanto il settore occupato da FlexNet) e reinstallare immediatamente dopo Grub2: per me ha funzionato!

Sono in dovere, però, di avvisarvi che la procedura è alquanto rischiosa, rischiate di compromettere il funzionamento del programma/dei programmi che utilizzano FlexNet, o di altri programmi che occupano il cilindro 0 dell’hard disk, e nell’ipotesi più funesta può anche comportare la perdita della tabella delle partizioni, e quindi di tutti i dati presenti sul vostro hard disk. Previo backup, però, cercheremo di ridurre al minimo tale possibilità. Eseguitela a vostro rischio e pericolo.

Il tutto è stato testato su Ubuntu 12.04, Grub 2.00, in multiboot con Windows 7, Windows 8, Mint 13 e Gentoo. AdobeInDesign su Windows 7 ha smesso di funzionare.

Per procedere, dovrete avere accesso ad Ubuntu (dovrete essere in grado di avviare correttamente il sistema operativo), o in alternativa potrete utilizzare una da distribuzione liveSupponiamo che l’hard disk che contiene il nostro Master Boot Record sia /dev/sda (potrete rendervene conto digitando, a terminale, il comando sudo fdisk -lu). Non riavviate per nessuna ragione il computer prima del termine della procedura.

La procedura potrà essere replicata anche su altre distribuzioni oltre che ad Ubuntu (o le distribuzioni Ubuntu-based), fatta eccezione per le modalità di installazione di Grub (che variano da distro a distro).

Parte 1: il backup

Iniziamo con il fare backup dei primi 63 settori dell’hard disk, quelli contenenti tutto (inclusa la tavola delle partizioni). Fatelo, davvero, perchè in caso di problemi potrete evitare il disastro della perdita di dati. Da terminale, digitate

sudo dd if=/dev/sda of=~/backup_settori bs=512 count=63

Spiegazione: dd è un programma che permette la copia in formato raw (senza quindi utilizzare strutture dati) di bytes presenti sull’hard disk. “If” e “of” stanno, rispettivamente, per “input file” ed “output file”, “bs” sta per block-size (dimensione del blocco, ne abbiamo parlato prima) e “count” è il conteggio di quanti blocchi bisogna copiare (da 0 a 62, in totale saranno 63).

Prendete il file backup_settori (che sarà nella vostra home directory/nella home dell’utente live) e spostatelo immediatamente al sicuro, ad esempio su una chiavetta USB. Conservatelo, potrà tornarvi utile in caso di problemi.

Parte 2: la cancellazione

Adesso potrete agire in due modi: o eliminate (riempiendo di zeri)  i settori da 1 a 62 (per pura formalità salveremo l’MBR) dell’hard disk (rischiando però di compromettere eventualmente anche altri programmi che memorizzano dati nel settore d’avvio), oppure potrete eliminare soltanto il settore occupato da FlexNet (che, nel mio caso, è il numero 32).

Nel primo caso, digitate da terminale

sudo dd if=/dev/zero of=/dev/sda bs=512 count=62 seek=1

Mentre, nel secondo caso, digitate

sudo dd if=/dev/zero of=/dev/sda bs=512 count=1 seek=32

Piccola spiegazione: il parametro seek serve a definire il punto del disco da cui iniziare l’operazione. Cambiate il 32 del comando precedente con il settore occupato dal vostro FlexNet.

Parte 3: reinstallare GRUB

Adesso, se NON avete utilizzato la distribuzione live, reinstallate (ed aggiornate) Grub digitando

sudo grub-install /dev/sda
sudo update-grub2

Se, invece, avete utilizzato una live non vi resta che reinstallare Grub2 seguendo questa guida.

Potete adesso, finalmente, riavviare il PC!

Chi sono

Amministratrice e blogger di Chimera Revo fin dagli albori, mi occupo prevalentemente dei settori GNU/Linux e Sicurezza. Nella vita "reale" sono freelancer nel settore della sistemistica informatica, specializzata in networking e sicurezza.

  • Pingback: Frammentazione: Windows vs Linux, ecco il confronto

  • eduardolp3

    Ho seguito la guida in tutti i particolari cancellando i settori da 1 a 60 e reinstallando grub ma non è cambiato nulla; al riavvio il “Mem Test” parte in automatico. Non avevo Windows installato (soltanto una partizione di 15 GB formattata in Dos per aventuale installazione di un’altra distro in dual boot). Grub dovrebbe essere installato su sda1 assieme a Ubuntu, non so più cosa fare. Hai qualche idea su come sistemare il tutto senza dover formattare? Uso ubuntu 12.04 e Grub 1.99-21.

  • Pingback: I migliori articoli su Ubuntu della settimana [13/08/12 - 19/08/12] | Chimera Revo

  • Pingback: [Linux - Ubuntu] Sector XX is already in use by the program FlexNet: cosa significa e come risolvere - Tecnologie - Segnala Feed

  • samajck

    installando adobe reader X su win mi sono ritrovato flexnet nel mio pc. nel mio caso ho azzerato i restanti settori e reinstallato grub senza particolari problemi (NB ho rimosso il reader e ne ho messo uno alternativo)

  • Pingback: [Linux - Ubuntu] Sector XX is already in use by the program FlexNet: cosa significa e come risolvere - Informatica - Tua Notizia

  • http://www.facebook.com/alessandro.kurtoni Alessandro Kurtoni

    Non mi è successa una cosa del genere, forse perché Win non l’ho utilizzato molto prima di toglierlo..
    Però mi è piaciuta la spiegazione nella parte iniziale, e a un’ignorante come mua è una bellesa saperne un po di più, un po più del niente originario!
    Grazie Jessica!

  • LeoZappa

    Ma non dovrebbe essere sufficiente reinstallare Grub2 ad esempio da LiveCD ?? Se ben ricordo in fase di installazione Grub2 controlla se certi settori sono già in uso e li aggira, in modo da installarsi lo stesso e da non disturbare FlexNet. Solo che ovviamente non lo può fare se non DOPO che Flexnet (o altri programmi windows che hanno lo stesso comportamento) sono stati installati.

    • http://www.siliconjey.com Jessica Lambiase

      Non è esattamente così. Grub2 tenta di aggirare i settori in uso, ma non sempre la cosa va a buon fine. Anzi, ti dirò, a me la procedura automatica è sempre terminata con un errore di scrittura. Questione di “fortuna”.

      • LeoZappa

        Capisco. Grazie dell’informazione, a me non è mai successo e mi basavo solo su quel che lessi tempo fa su Planet Gnome. Mi pare che Grub abbia una lista di settori da aggirare, forse è necessario aggiungere il settore di FlexNet a mano, ma sto sparando un po’ a caso :-)