ToolBox Logo  home  up


Piccolo Cane

posta


 
 
 
Colpa di Linux? No, tutta del DOS!
 
 
     Sapevo da un po' che il DOS e i suoi figli avevano un modo ben strano di gestire, ed in specie nominare, le partizioni dei dischi fissi. Ci sono partizioni primarie e estese contenenti unità logiche (secondarie), e l'inserimento di una nuova partizione può cambiare il nome, o meglio la lettera, che il DOS assegna ad un'unità, creando problemi a tutti i riferimenti (link, path, ecc.) a queste unità.

     Prevedendo di installare Linux, avevo tentato di cautelarmi da questi problemi, creando una configurazione che mi sembrava non avesse alcuna probabilità di essere "letta male" dal DOS. Invece, visto le stranezze suddette, proprio queste cautele mi hanno causato ulteriori problemi.

     Io ho due dischi su cui ho lavorato molto con PartitionMagic ed installazioni varie. La tragica situazione è come segue. Un disco piccolo e più vecchio (disco logico C), contiene i sistemi operativi ed è diviso in quattro partizioni, una con il boot manager (di OS/2), e le altre tre con Windows 3.1, Windows 95 e Windows 98. L'altro, più grande, ha i dati in due partizioni primarie (unità D ed E). Avrei voluto usare un'unica grande partizione per essi, in modo che fossero visibili a tutti i sistemi operativi caricati dal disco piccolo, ma i primi due non vedono la FAT32, e quindi hanno bisogno di una vecchia FAT16, che però da sola non può coprire solo una piccola parte di disco, poiché arriva al massimo a 2 GB. Lo spazio libero è nell'ultima parte del secondo disco, e lì volevo installare Linux. Sperando fosse possibile.

     L'idea iniziale era di usare partizioni primarie solo sul primo disco e solo per i sistemi operativi Microsoft, che hanno queste pretese. Sul secondo volevo mettere solo una partizione estesa divisa nel numero di unità logiche che mi fossero servite. Tra queste avrei ricavato le due partizioni dati per DOS/Windows, e le partizioni per Linux, che sapevo poteva stare senza problemi anche su partizioni secondarie.

     Il manuale di PartitionMagic diceva però che, se un sistema operativo creava una partizione primaria sul secondo disco, il DOS l'avrebbe classificata prima delle unità logiche contenute nella partizione estesa, chiamandola unità D e sconvolgendo così la nomenclatura iniziale.

     Non sapendo a priori cosa avrebbe fatto l'installazione della distribuzione Linux che avrei usato solo molto tempo dopo, come vi sareste comportati voi? La risposta mi sembrava ovvia: usa due primarie per i dati DOS, cosicché, qualsiasi tipo di partizione ti crei l'installazione Linux, verranno classificate prima di queste, mantenendo i loro nomi. Al momento non sapevo che alcune installazioni Linux prevedono più di due partizioni, e mi pareva che la possibilità residua di creare altre due partizioni primarie sul disco (root + swap) fosse sufficiente, anche perché ero certo che Linux non facesse distinzioni sul tipo di partizione da usare.

     Adesso, visto che voglio utilizzare l'installazione automatica per workstation, e questa crea tre partizioni (boot, root e swap), almeno due di queste dovranno essere partizioni logiche. A posteriori vi posso dire che per la partizione di swap Red Hat ha usato una primaria, mentre le altre due sono state create come unità logiche di una partizione estesa.

     Prima di installare, giusto per sicurezza faccio una prova, creando con PartitionMagic due partizioni logiche estranee al DOS, e, sopresa! il DOS (Windows) ha problemi, causati dai primi anelli "alieni" della catena di secondarie. Cosa è successo?

     La realtà, confermata, oltre che dall'esperienza diretta, anche dalla lettura delle note informative che accompagnano FIPS, supera ogni immaginazione. L'ordinamento che mi aspettavo è quello che anche i creatori di Linux sembrano aver ritenuto il più logico. Infatti in Linux le partizioni hanno un nome (nel caso siano sul primo disco) tipo hdaX, dove X è 1, 2, 3 o 4 per le partizioni primarie, delle quali una può essere estesa e contenere unità logiche che hanno un X a partire da 5 in poi. In questo schema le unità logiche (secondarie) seguono sempre le partizioni primarie. L'ordinamento cervellotico del DOS è invece il seguente: prima viene la prima primaria del primo disco, seguita dalla corrispondente, se c'è, degli altri dischi, poi vengono tutte le secondarie del primo disco, seguite dalle eventuali secondarie degli altri dischi, ed infine arrivano le primarie residue sui vari dischi nell'ordine, tenendo conto che quelle sul primo disco sono considerate anche illegali, in quanto il DOS ne vorrebbe una sola.

     Questo schema sembra sia stato studiato apposta per far sì che ogni minimo inserimento di una nuova partizione crei il massimo sconvolgimento nel modo in cui sono nominate tutte le altre. Nel mio caso succedeva questo: le due partizioni logiche create da Red Hat, che non aveva alternative, si sarebbero inserite nell'ordine tra D, prima primaria del secondo disco, ed E, seconda primaria, che avrebbe ricevuto così la lettera G. Per di più, invece che non occuparsi di partizioni "aliene", ad ogni avvio il DOS avrebbe segnalato: "Supporto di memorizzazione non valido nell'unità E (e subito dopo F): Annulla, Riprova, Tralascia?".

     Ecco quindi che si potrebbe pensare "Cosa diavolo mi ha combinato Red Hat", quando invece la colpa è tutta del ridicolo modo in cui il DOS gestisce la partizione dei dischi rigidi. E pensare che, per essere compatibili con esso, anche tutti gli altri sistemi operativi debbono finire per conoscere ed usare il suo stesso schema!

     Se vi interessano i dettagli del funzionamento delle partizioni secondo il DOS, che è un argomento importante nonostante gli stupidismi che lo popolano, potete leggerli qui.

     La soluzione del mio problema momentaneo era quello di convertire la seconda primaria (E) in una secondaria. Purtroppo il magico PartitionMagic, almeno nella versione 3, non è poi così magico, e questa operazione non riusciva a farla. Per venirne fuori ho dovuto: 1) dimezzare la dimensione di E, cancellando prima un sacco di roba, per avere lo spazio per 2) farne una copia nell'ultima parte di disco; 3) cancellarla e sostituirla con una partizione estesa vuota; 4) copiare la copia di E all'interno dell'estesa, in modo che risultasse una partizione secondaria invece che primaria; 5) cancellare la copia; 6) ingrandire nuovamente la partizione; 7) reinstallare quanto avevo dovuto cancellare.

     E tutto questo bordello sarebbe stato evitabile, sempre se il DOS non avesse altre superbe proprietà. Quali? In sostanza quella che, nonostante cilindri, testine e settori non significhino più nulla dal punto di vista fisico, certe strutture debbono iniziare o finire al confine di cilindro o di testina. Se non fosse per questo, trasformare una partizione primaria in secondaria sarebbe solo questione della modifica, che si potrebbe fare manualmente avendo a disposizione programmi come il Diskedit di Norton, di qualche byte nelle strutture descrittive delle partizioni, cioè nell'MBR e nel boot record.