Ricerca nel sito web

Floppy disk contro Linux del 21° secolo


Su questa pagina

  1. Storia
  2. Il dilemma
  3. La soluzione
  4. Aggiungi un indicatore di avanzamento
  5. Semplificare l'utilizzo
  6. Gestione degli errori
  7. Utilizzo dei file immagine
  8. Conclusione

I titoli dei giornali proclamano la fine del supporto del kernel per le unità floppy. Ecco cosa fare con la tua collezione di dischetti e come farlo.

Philip L. Gilmer, 11 agosto 2019

I titoli recenti proclamano l'imminente fine del supporto per il venerabile floppy disk nel kernel di Linux. Il mio stomaco si agitava e il mio cuore tremava o due. Sono in questo settore da diversi anni e la mia collezione di floppy disk risale a 8 pollici. \Non di nuovo! Ho pensato.

Fortunatamente, ulteriori ricerche hanno indicato che i titoli sopravvalutavano in qualche modo la situazione. Tutto il supporto floppy non scomparirà, ma solo il supporto per le unità collegate a controller floppy dedicati. L'unità USB che hai acquistato per portare la capacità di lettura/scrittura del dischetto ai computer più recenti utilizza un meccanismo di supporto diverso e continuerà a essere supportata, per ora. Tuttavia, sembrava che fosse il momento giusto per fare qualcosa con tutti questi dischetti.

Storia

I primi floppy disk avevano un diametro di 8 pollici e furono introdotti da IBM alla fine degli anni '60 come componenti per mainframe. IBM li ha designati come \Dischetto di tipo 1 ma il termine \floppy disk ha preso piede molto rapidamente. Le ultime versioni a doppia faccia erano in grado di contenere circa 1,2 megabyte di dati.

Presto seguirono unità da 5-1/4 pollici. Sebbene meno costosi, potevano contenere solo una modesta quantità di dati. Inizialmente detenendo solo circa 72 kilobyte di dati, la concorrenza ha aumentato le capacità a circa 630 kilobyte.

Il primo floppy drive da 3-1/2 pollici è stato una meraviglia a suo tempo. Il floppy disk non era più così floppy. I primi computer Apple Macintosh utilizzavano una dimensione di 400 kilobyte. IBM ha introdotto il fattore di forma nel 1986 per la sua linea IBM PC Convertible, offrendoci la possibilità di memorizzare un enorme 720 kilobyte. La successiva serie PS/2 di PC IBM ha aumentato la capacità a 1,44 e persino a 2,88 megabyte di dati. Ma il tempo avanza. Innovazioni come le unità Iomegas SuperDisk LS-120 e LS-240 hanno portato capacità fino a 750 megabyte.

I progressi nelle tecnologie di CD e DVD hanno praticamente segnato la fine dei floppy. Sebbene i CD fossero inizialmente supporti di sola lettura, i dispositivi scrivibili divennero presto disponibili e spinsero le capacità di archiviazione da 650 megabyte alla gamma dei gigabyte con DVD a doppio strato con una capacità di 8 gigabyte.

Le chiavette USB sono le armi preferite dalla maggior parte di noi in questi giorni. Piccoli, economici e maneggevoli forniscono capacità di archiviazione che ora si avvicinano a un terabyte.

Grande! Uso le nuove tecnologie come tutti gli altri. Ma cosa ci faccio con tutti questi floppy che ho?

Il dilemma

A dire il vero, molti di questi vecchi dischetti contengono file di dati di un tipo o dell'altro e i file potrebbero essere copiati in una directory del mio sistema Linux. Dato che uso Linux Mint KDE, non devo nemmeno montare manualmente i dischetti. Mint si offrirà di farlo per me quando il dischetto sarà inserito. Apri il mio file manager e posso semplicemente trascinare e rilasciare i file nelle loro nuove posizioni.

Altre distribuzioni Linux potrebbero farlo in modo leggermente diverso, ma la maggior parte ti darà un modo per montare facilmente un'unità floppy. Fare clic sulla voce del dischetto e verranno visualizzate le opzioni. Seleziono \Apri con File Manager” per visualizzare i file sul dischetto.

Copia i file nella directory di tua scelta semplicemente trascinandoli e rilasciandoli.

Cosa fare con altri dischetti non era così semplice. Per essere utili, dovevano essere utili come dischetti. Ho realizzato immagini di dischetti sotto DOS e Windows. Ma è stato tanto tempo fa. E i programmi che ho usato sono programmi DOS a 16 bit e non funzioneranno su nessuna versione di Windows da Windows XP.

Fortunatamente il processo per farlo è semplice. E non hai bisogno di alcun programma di fornitori di terze parti per farlo. Linux contiene tutto il necessario per svolgere il lavoro.

La soluzione

Useremo un programma chiamato dd per creare effettivamente l'immagine.

La prima cosa che dobbiamo fare è scoprire dove è montata l'unità floppy.

Collega l'unità USB al sistema, attendi qualche secondo, quindi dai il comando:

dmesg | tail

L'output sarà simile a questo:

L'ultima riga qui indica che il floppy è designato /dev/sdb.

Se utilizzi un'unità floppy collegata a un controller dedicato, il tuo dispositivo avrà un aspetto simile a /dev/fd0 o /dev/floppy. Inserisci un floppy e usa il comando df per vedere il dispositivo utilizzato:

Nel nostro esempio il dispositivo assegnato è /dev/fd0. Se questa è la tua configurazione, utilizza questo dispositivo ovunque venga utilizzato /dev/sdb negli esempi seguenti.

Inserisci un floppy di cui creare l'immagine, passa alla directory in cui deve essere memorizzata l'immagine e dai il comando:

dd if=/dev/sdb of=test.img

Spero che vedrai qualcosa di simile a questo:

Ci sono un paio di problemi nell'usare dd nella sua forma più semplice.

Uno, non importa quanto o quanto poco viene utilizzato il dischetto, l'immagine creata rifletterà la dimensione del dischetto, in questo caso 1,44 megabyte. Possiamo comprimere il file usando il comando gzip:

gzip test.img

con il seguente risultato:

Il file test.img viene compresso e sostituito da test.img.gz, che è più piccolo di quasi la metà.

Due, il programma dd non gestisce gli errori come vorremmo. Per impostazione predefinita, se incontra un errore, ad esempio un settore danneggiato, segnala il problema e si chiude.

Fortunatamente dd ha i mezzi per permetterci di gestire alcuni errori.

Aggiungeremo i parametri per ignorare l'errore e proseguire. Inoltre, facciamo in modo che riempia la sezione illeggibile con zeri, in modo da non avere dati troncati. Modificherò la dimensione del blocco della copia da 512 byte a 1024 byte, in modo che il conteggio dei record ora sia uguale alla capacità del disco (in kilobyte). La nostra copia ora ha questo aspetto:

Come prima, possiamo comprimere il file usando l'utility gzip.

Sarebbe davvero bello farlo in un solo passaggio. Usando l'operatore pipe (\|) possiamo farlo. Daremo il seguente comando:

sudo dd if=/dev/sdb bs=1024 conv=sync,noerror | gzip > test.img.gz

Con il seguente risultato:

Poiché forniamo un nome che termina con l'estensione del file .gz, il programma gzip utilizza il resto del nome del file come nome del file interno, \test.img . Consiglio vivamente questa convenzione di denominazione. Senza di essa gzip e gunzip si confondono e i risultati possono essere imprevedibili. Quindi usa +\.img\+ \.gz\. Se il tuo nome contiene spazi vuoti o altri caratteri speciali, racchiudi il nome intero tra virgolette.

Se apriamo il nostro file nell'archiviatore, possiamo vedere il nome effettivo del file:

Aggiungi un indicatore di avanzamento

I nostri comandi funzionano, ma non puoi davvero vedere cosa sta succedendo. Sarebbe bello poter vedere se le cose si stanno muovendo come dovrebbero.

C'è una piccola utility chiamata pv che farà il lavoro. Installalo dai repository delle tue distribuzioni. Linux Mint usa il gestore di pacchetti apt, quindi lo installiamo usando il comando:

sudo apt install pv

Usando pv ora abbiamo il nostro indicatore di avanzamento. Quindi il nostro processo di creazione dell'immagine ora assomiglia a questo:

pv -tpreb /dev/sdb | dd bs=1024 conv=sync,noerror | gzip > test.img.gz

Allo stesso modo, il nostro processo di ripristino del dischetto diventa:

sudo pv -tpreb test.img.gz | gunzip -c | dd of=/dev/sdb

Rendere questo più facile da usare

Per rendere questi comandi più facili da usare, ho creato un paio di script bash. Per creare l'immagine di un dischetto, usa imgcreate.sh:

#! /bin/sh
#!
#! imgcreate.sh - Shell to create diskette image file from floppy diskette
#! Author - Philip L. Gilmer, 11-Aug-2019

#!pv -tpreb /dev/sdb | dd bs=1024 conv=sync,noerror,excl | gzip > "$1"

exit 0

Invoke utilizzando il nome e il nome del file compresso.

Per ricreare il floppy, usa imgrestore.sh:

#! /bin/sh
#!
#! imgcreate.sh - Shell to create diskette image file from floppy diskette
#! Author - Philip L. Gilmer, 11-Aug-2019
#!

pv -tpreb /dev/sdb | dd bs=1024 conv=sync,noerror,excl | gzip > "$1"

exit 0

Ricordati di cambiare il nome del dispositivo se l'unità floppy non è /dev/sdb.

Affrontare gli errori

Ok, eravamo occupati come può essere l'imaging dei nostri dischetti e succede qualcosa del genere:

Dovrebbe mostrare 720 record letti. Ops! 104? Non del tutto inaspettato. Alcuni di questi dischetti hanno 30 anni. E ora? Ho provato a usare il comando fsck, ma non ho ottenuto ottimi risultati. Fortunatamente, il comando dosfsck può aiutarci. Questo comando fa parte del pacchetto repository dosfstools. Se non è già installato sul tuo sistema, installa il pacchetto. Su un sistema basato su Debian come Linux Mint, puoi installare con il comando:

sudo apt install dosfstools

Il tuo sapore può variare.

Immetti il comando come segue:

sudo dosfsck -w -r -l -a -v -t /dev/sdb

Non appena inserito, dosfsck tenterà di riparare il disco automaticamente elencando i nomi dei file mentre vengono elaborati, contrassegnando i cluster illeggibili come non validi e scrivendo immediatamente le modifiche sul disco. Controllare la pagina man per ulteriori informazioni. Per il nostro attuale dischetto otteniamo il seguente output:

Questo dischetto non è realmente utilizzabile. Troppi file sono danneggiati e contengono cluster illeggibili. I file interessati dovrebbero essere recuperati da un'altra fonte. Spesso, tuttavia, i cluster illeggibili si trovano al di fuori dei cluster allocati di qualsiasi file. Il disco riparato può quindi essere ripreso. Rieseguire dosfsck mostra che ha ripulito il dischetto nel miglior modo possibile:

Quindi ora proviamo a ricreare l'immagine del dischetto:

È possibile eseguire l'imaging dell'intero disco. Ricorda che tutti i file con cluster danneggiati non saranno utilizzabili.

Utilizzo dei file immagine

Per utilizzare il file immagine, prima decomprimilo.

Per ispezionare il file, montalo sul dispositivo di loopback:

sudo mount -o loop -t msdos ./test.img /mnt

Sfogliando il nostro mount point /mnt possiamo vedere i file:

Il file .img può essere utilizzato anche come disco floppy virtuale in un'unità virtuale definita sul computer guest in una VM VirtualBox. Il file immagine deve risiedere sul disco rigido hosts.

Seleziona la voce evidenziata e sfoglia.

Conclusione

L'introduzione di nuove tecnologie potrebbe aver reso i dischetti meno utili nel corso degli anni. Tuttavia possono essere insostituibili quando si ha a che fare con macchine virtuali che eseguono programmi e sistemi meno recenti. Le distribuzioni Linux del 21° secolo includono ancora molti strumenti per supportare la vecchia tecnologia, ma per quanto tempo la tecnologia continuerà a essere supportata nessuno può dirlo.

Quindi procurati l'immagine di quei dischetti il prima possibile, capito? Vorrei ancora aver fatto qualcosa con quei floppy da 8 pollici!