Quali sono le principali differenze tra questi due grandi sistemi operativi? Vediamo di scoprirlo! Le differenze tra Windows e Linux sono moltissime, tanto che si potrebbe dire che sono due cose completamente differenti!! Ma analizzando i due sistemi da un punto di vista pratico, dell'utilizzatore, possiamo evidenziare alcune principali e più evidenti differenze.
Preciso che, in questo articolo, il termine "Linux" è utilizzato in maniera impropria per indicare la maggior parte delle distribuzioni. Fatta questa premessa veniamo subito alle differenze:
» Leggi: Anatomia di una distro Linux
1- Struttura dei file
In Windows ogni file è contenuto in una o più unità distinguibili da una lettera maiuscola. L'unità principale dove è installato il sistema operativo è, per convenzione, C:. Un altro eventuale disco (o masterizzatore DVD) sarà D: oppure E: oppure... . Windows distingue così i file dalle unità hardware.
Linux non distingue nella stessa maniera file e dispositivi hardware ma sia i primi che i secondi sono rappresentati nella stessa maniera (ecco perché si dice che "su Linux tutto è un file"). In pratica ogni file e dispositivo hardware è contenuto nella directory principale detta "radice" (root) e indicata dal simbolo / . Il disco dove sarà installato il sistema potrebbe essere il primo e quindi lo troveremo nel percorso /dev/sda . Ogni altro disco sarà /dev/sdb, /dev/sdc, ... ; un masterizzatore DVD sarà /dev/sr0, ... .
La rappresentazione di Windows è, in questo caso, molto più intuitiva: ho un disco C: dov'è installato il sistema. In Linux, invece, è più complessa e porta ad una specie di paradosso: ho un disco in /dev/sda dove è installato il sistema che... contiene il disco! Non ci perdiamo in questo paradosso perché si tratta solo di una astrazione!!
Anche se la versione di Windows può sembrare migliore, la cosa cambia se prendiamo in esame dischi con più partizioni. Su Windows, infatti, ogni partizione sarà vista come una unità diversa, ognuna avrà la sua bella lettera (F:, G:, H:,... ) e questo ci lascerà nel dubbio se un'unità è un disco intero oppure è una di N partizioni di un disco (per toglierci il dubbio dovremo andare in Gestione disco).
Su Linux la differenza sarà subito evidente: ogni partizione di un disco avrà un numero che la identifica così che /dev/sda1, /dev/sda2, /dev/sda3 saranno 3 partizioni dello stesso disco.
Non finisce qui: su Linux, la cosa si complica ulteriormente perchè il percorso dei dischi (/dev/sda, /dev/sdb, ... ) non è direttamente fruibile all'utente. Accedendo a questi percorsi non vedremo la lista delle cartelle e dei file contenuti perchè i dati qui sono presentati in maniera "grezza". Per avere accesso ai nostri file, dovremo eseguire l'operazione di mount con la quale si indica al sistema con che tipo di filesystem sono stati formattati i dischi. Farà piacere sapere che in quasi tutte le moderne distro c'è un demone (l'equivalente di un servizio di Windows) che si occupa di rilevare i dischi connessi e montarli in automatico. In questo modo i dati grezzi dei dischi possono venire interpretati secondo il filesystem indicato e i file contenuti saranno accessibili. I dischi, se non specificato diversamente, saranno montati, secondo lo standard di gerarchia dei filesystem di Linux, nella cartella /mnt/.
Nell'immagine sopra possiamo vedere un parallelo tra le principali cartelle di Windows e quelle che, per certi aspetti, possono essere considerate le corrispondenti in Linux.
2- Slash e backslash
Un'altra differenza è la sintassi utilizzata per descrivere un percorso (path) ad un file. Windows utilizza il backslash \ mentre Linux utilizza lo slash /. Questo perché Linux riprende la sintassi del primo sistema Unix (nato circa nel 1970), mentre Windows non utilizza questo standard (utilizzato anche nelle URL dei siti web) perché quando è nato (circa nel 1985) era basato su DOS e questo sistema operativo, in origine, non supportava le directory (per cui non c'era bisogno di indicare nessun path) e lo slash veniva utilizzato per passare delle opzioni hai programmi.
3- Case sensitive
Windows non distingue le lettere maiuscole dalle minuscole, per lui scrivere "A" oppure "a" è la stessa cosa, mentre per Linux sono due cose diverse. Quindi mentre su Windows è impossibile nominare più file con nome simile come per esempio Ciao.jpg, ciao.jpg, ciao.JPG, ... su Linux possiamo farlo. Per contro, quando scriviamo un path su Windows possiamo scriverlo senza fare caso se il Caps Lock è attivo oppure no, mentre in Linux dovremo stare attenti a digitare correttamente le lettere maiuscole o minuscole.
4- Estensioni dei file
Come abbiamo visto, Windows utilizza le estensioni per "riconoscere" il tipo di file con cui abbiamo a che fare mentre Linux utilizza la "firma" contenuta nel file per riconoscerlo (anche se alcune interfacce grafiche disponibili, utilizzano le estensioni per l'assegnazione delle icone e del programma per l'apertura in maniera simile a Windows).
Un caso particolare sono i file eseguibili: in Windows hanno estensione .exe (ma potrebbe anche essere .cmd, .bat, ... ); in Linux gli eseguibili binari non hanno estensione (andate a vedere dentro la cartella /bin/) e un file può essere eseguibile o meno grazie ad un particolare permesso assegnato al file in questione che ovviamente deve contenere delle istruzioni che il sistema può eseguire (possiamo anche assegnare il permesso di esecuzione ad una foto ma non dovremo aspettarci niente di interessante quando ci faremo doppio click o lo lanceremo dal terminale... ).
5- File nascosti
Windows nasconde alcuni file che, secondo lui, non dovrebbero interessare all'utente. Fa questo grazie ad un attributo del file stesso
Su Linux invece i file nascosti sono quelli il cui nome inizia con un punto. In realtà parlare di file nascosti non è molto corretto, Linux non nasconde niente, ma per convenzione si utilizza questa forma per escludere alcuni file quando, per esempio, si genera un elenco del contenuto di una directory con il comando ls (ma il discorso vale per ogni comando!!). La scelta del punto prima del nome è una conseguenza che deriva dalla necessità di escludere la directory corrente e la directory superiore (quella che contiene la directory corrente) che si rappresentano rispettivamente con . e .. .
6- Proprietari, gruppi e permessi
Sia Windows che Linux utilizzano un sistema per il controllo dell'accesso ai file (siano essi eseguibili o meno) che si compone di proprietari, gruppi proprietari e permessi. Questo sistema è utilizzato principalmente per separare le attività di un utente da un altro e per proteggere i file più importanti per il funzionamento del sistema. Una cosa in comune, quindi? Quasi; in entrambi i casi proprietari, gruppi proprietari e permessi sono proprietà attribuite ad un file (o cartella) ma molto diverso è l'approccio che i due sistemi hanno nel mettere in pratica questa funzione.
In Windows, infatti, si possono specificare, per ogni file, quanti proprietari e gruppi proprietari si vuole (scegliendoli ovviamente tra gli utente presenti sul sistema) e si può arrivare a gestire fino a 7 permessi (per le cartelle, 6 per i file; ma si può arrivare anche a 13 con le Autorizzazioni avanzate!!!), da permettere, bloccare o lasciare "in bianco", per ognuno dei proprietari presenti. Alla fine fra tutti questi permessi ci potrebbe essere qualche conflitto e in questo caso vince il permesso espressamente bloccato. Insomma, non si può certo biasimare l'utente medio di Windows che non conosce e non si preoccupa di questi permessi!!!
In Linux invece il sistema è molto più semplice, ma non per questo meno efficace: ogni file qui può avere solo un proprietario e solo un gruppo proprietario poi ci sono "tutti gli altri" e per ognuno di queste 3 entità ci sono 3 semplici permessi per un totale di 9 (a cui si possono aggiungere 2 permessi speciali). Questi 3 permessi sono leggere (indicato dalla lettera r), scrivere (w) ed eseguire (x) e valgono sia per i file che per le directory (in questo caso, il permesso di esecuzione viene utilizzato per consentire l' "attraversamento" della directory). Quando un utente "tenta" un'operazione su un file, Linux procede in maniera metodica: controlla prima se è il proprietario, se sì controlla che abbia il permesso per eseguire l'operazione richiesta (e di conseguenza, la permette o restituisce un errore), se no controlla se l'utente fa parte del gruppo proprietario; di nuovo, in caso di risposta affermativa controlla se a quel gruppo è consentita l'operazione richiesta (permettendola o restituendo un errore), se no quell'utente viene considerato come "tutti gli altri" e anche questa volta procede a controllare se l'operazione è consentita (permettendola) o no (restituendo un errore). In pratica nella rappresentazione dei permessi dell'output di ls, si procede a controllare i permessi da sinistra verso destra e il primo permesso incontrato valido (consentito o negato che sia) per l'utente che esegue un'operazione fa terminare il controllo dei restanti permessi.
Questa semplicità nei permessi porta ad un'altra grande differenza: i permessi dell'utente amministratore (che su Linux è chiamato "root", proprio come la radice del sistema). Infatti su Windows alcuni file sono off-limits anche per l'amministratore di sistema mentre su Linux si dice che "root è dio" perché ha accesso a qualunque file ed ha quindi potere di vita o di morte sul sistema!! Di fatto, quando l'utente root compie un'operazione su un file, il controllo dei permessi non viene nemmeno fatto.
7- Registro
Il registro è dove Windows salva tutte le preferenze, le impostazioni, le configurazioni del sistema, degli utenti e dei programmi, tutto ordinato in una struttura ad albero. Ogni volta che si compie un'operazione (ad esempio, aprire un programma) Windows "legge" il registro (contente la configurazione del programma che si vuole aprire... ma anche la configurazione di tutti gli altri programmi!) per sapere esattamente quello che deve fare. In passato (e/o con sistemi poco performanti) era spesso causa di rallentamenti perché per sua natura tende, con l'installazione e disinstallazione dei programmi, ad aumentare sempre più in dimensioni.
Linux da questo punto di vista è molto più ordinato infatti salva tutte queste informazioni su più file (archiviati in /etc/) che va a leggere solo quando necessario (facendo lo stesso esempio dell'apertura di un programma, andrà a leggere solo il file di configurazione di quel programma). Questo metodo di salvare le informazioni su singoli file ha anche un altro vantaggio: si possono identificare facilmente le informazioni riguardanti un determinato programma (in quanto i file salvati in /etc/ avranno lo stesso nome del programma).
8- Driver
Installando Windows può capitare che alcune periferiche non funzionano e hanno bisogno dei driver del produttore per far sì che vengano riconosciute. Anche se questo è sempre meno necessario, in passato l'installazione di Windows era solo metà del lavoro: l'altra metà era inserire uno alla volta i cd che accompagnano le varie periferiche.
In Linux tutti i driver disponibili sono contenuti nel kernel (o forniti come moduli del kernel). Questi driver a differenza di quelli specifici dei produttori delle periferiche, sono generici e questo garantisce che, se Linux è in grado di riconoscere una periferica, questa semplicemente funzionerà. Niente ricerca dell'ultimo driver disponibile, quindi, e dimenticatevi tutti quei programmi in avvio automatico, per il controllo fine della scheda video, per il controllo della scheda audio, per il controllo del touchpad, per il controllo della stampante, per il controllo ... . Questo ovviamente ha anche lati negativi: non sarà possibile modificare in maniera agevole questi controlli ma occorrerà magari modificare a mano qualche file di configurazione (indovinate dove si troveranno?) e alcune volte dovremo rinunciare ad alcune funzioni più o meno utili (ad esempio, a secondo di marca e modello, il controllo dell'inchiostro della stampante).
Il problema più grande però si avrà quando Linux non è in grado di riconoscere una periferica: in questo caso si può solo sperare in un rapido aggiornamento del kernel o, che il produttore di un determinato hardware, abbia rilasciato un driver specifico per Linux (come fa, per esempio, nVidia).
Se vogliamo utilizzare Linux su un nuovo computer meglio prepararsi prima e consultare le tante liste disponibili con hardware linux-compatibile (ecco qui alcuni esempi: [1], [2], [3], ... )
» Leggi: Linux-hardware.org: un database di periferiche amiche del pinguino
9- Interfaccia grafica
L'interfaccia grafica di Windows è cambiata notevolmente nelle ultime versioni ma rimane più o meno fedele all'impostazione di sempre. Se non vi piace, può essere personalizzata con vari temi o con altri programmi con un compito ben preciso (rimpiazzare il tasto start, per esempio).
Su Linux si può scegliere fra oltre 10 ambienti desktop completi ognuno diverso dall'altro non solo come aspetto ma anche come funzionamento (e naturalmente con centinaia di temi diversi disponibili!) a cui si possiamo aggiungere moltissimi gestori di finestre che possono essere utilizzati come base per creare un ambiente desktop personalissimo oppure modificare gli ambienti desktop esistenti. Le possibilità di personalizzare l'aspetto non si limitano a queste ma è già possibile capire che anche l'utente con i gusti più difficili può essere accontentato.
10- Ricerca e installazione programmi
L'ultima differenza che andremo a vedere è il metodo di ricerca e installazione dei programmi. L'utente Windows è abituato a cercare il nome di un programma su Google e cliccare su uno dei primi link che si presentano (speriamo almeno che abbia aggiunto "official site" alla sua ricerca!!), scaricare il file eseguibile, fare doppio click sull'installer, leggere attentamente la licenza di utilizzo, rimuovere programmi o toolbar promozionali.
Su Linux invece è generalmente presente un gestore di pacchetti tramite il quale si può installare il programma desiderato (o una valida alternativa), senza preoccuparsi di aver scaricato un programma farlocco o dell'installazione di fastidiose toolbar. Alcune distro (come Ubuntu) hanno un comoda interfaccia grafica per la ricerca e l'installazione dei programmi che si presenta come un "App Store" e che è stato copiato prima da MacOS e ultimamente anche da Windows. Ma, attenzione, questi store anche se concettualmente possono sembrare uguali, hanno un grossa differenza di fondo: i programmi che trovate grazie al gestore pacchetti di Linux sono compilati e distribuiti dai manutentori della distribuzione stessa mentre nel caso di Windows (e MacOS) lo store è solo una piattaforma di distribuzione di programmi compilati da sviluppatori indipendenti. Ne consegue che i programmi che trovate su Linux potete stare certi che sono genuini, mentre quelli trovati su Windows non è detto che lo siano anche se ultimamente la situazione è notevolmente migliorata.
Conoscete qualche altra differenza tra i due sistemi?