
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 live. Supponiamo 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!






Pingback: Frammentazione: Windows vs Linux, ecco il confronto
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
Pingback: [Linux - Ubuntu] Sector XX is already in use by the program FlexNet: cosa significa e come risolvere - Informatica - Tua Notizia