Linux incontra Star Trek: teletrasportare una installazione

“Là dove nessun pinguino è mai stato prima”

Smanettando (come sempre) con installazioni, partizionamenti e reinstallazioni varie, mi è sorta una domanda: si può trasferire un’installazione da un disco o da una partizione ad un’altra? E se sì, come? E perché? Chi sono io? Cosa ci faccio qui? No, scusate, ho avuto un momento di smarrimento…

Come il buon James T. Kirk si faceva scarrozzare su e giù dall’Enterprise da Scotty, così volevo tentare di teletrasportare da una parte all’altra un’installazione già pronta e configurata (è un peccato buttarla via), invece di reinstallare da capo nella nuova destinazione.

L’unico modo per scoprire se ciò era possibile era armarsi di apposito hardware e opportuno software e tentare qualche esperimento, seguendo il folle principio di non cercare nessuna guida a riguardo. Non voglio rovinare il finale, ma alla fine non è scoppiato nulla.

Specificamente, ho utilizzato Virtualbox per creare ciò che mi serviva, con la tranquillità di non toccare i sistemi operativi sul pc fisico e di poter rifare tutto da capo in caso di irreversibile sminchiamento del “sistema di test”. Così avrete anche voi per le mani “quello con l’uniforme rossa” (i fan di Star Trek sanno di cosa parlo ;-)).

Una particolarità che credo valga la pena di sottolineare è che la procedura non richiede nessun software aggiuntivo rispetto alla normale dotazione di un live CD o di un’installazione standard. So dell’esistenza di programmi come Clonezilla che dovrebbero fare più o meno le stesse cose ma non ho mai avuto la necessità di usarli, quindi mi è sembrato più naturale affidarmi a quello che avevo già disponibile ed alle mie traballanti conoscenze di GNU/Linux.

I motivi per contattare il signor Scotty anziché armarsi di santa pazienza e reinstallare/”clonezillare” possono essere diversi:

  • siete/siamo/sono nerd senza speranza di redenzione,
  • lo spazio sul disco dell’installazione da migrare si sta esaurendo,
  • il disco sta dando segni di cedimento e deve essere rimosso/sostituito,
  • l’installazione viene spostata su un disco più “performante”,
  • nello spostamento si vogliono conservare le personalizzazioni già effettuate (temi grafici, programmi, impostazioni, etc.) anziché perdere tempo a rifarle da zero,
  • una voce nella vostra testa vi ha detto che ciò è bene.

Qualunque sia la vostra motivazione, andiamo a cominciare.

Piccola fondamentale avvertenza: occhi aperti e attenzione a dove mettete le mani, non state per cambiare lo sfondo del desktop. La responsabilità di eventuali perdite di dati è vostra così come la cura di mettere in salvo i file importanti prima di cominciare. La procedura che descriverò ha funzionato per me e finora non ha mostrato problemi nell’uso del sistema trasferito: tuttavia non ho potuto testare tutte le condizioni di utilizzo. In caso di problemi riscontrati aggiornerò questo post. Se qualche passaggio non dovesse risultare chiaro, chiedete pure. Suggerimenti e osservazioni sono più che benvenuti.

#0: “La flotta stellare” – Hardware

Dischi collegati alla macchina

Come detto ho utilizzato Virtualbox, creando una macchina virtuale alla quale ho collegato due dischi, contenenti ciascuno un’installazione di Kubuntu, rispettivamente la 10.04 “Lucid” sul disco di “destinazione” (/dev/sda, 20GB) e 12.04 “Precise” sul disco di “origine” (/dev/sdd, 20GB).

Lo scopo specifico è quello di ottenere un dual boot con le due differenti release: anche questa condizione particolare però non è limitante per l’esecuzione della procedura. Si può infatti anche trasferire un’installazione su un disco vuoto o contenente un sistema operativo non GNU/Linux alla stessa maniera.

All’avvio della macchina tramite CD live di Kubuntu Precise, la situazione che si presenta è illustrata nell’immagine.

Alla stessa macchina ho anche aggiunto due piccoli dischi, che poi non si sono rivelati utili per la procedura: Backup (/dev/sdb, 6GB) e 10GBDISK (/dev/sdc, 10GB).

Nel caso più generale, i dischi di origine e destinazione possono anche essere montati esternamente (via USB) e collegati successivamente al pc. Questa situazione comporta delle piccole variazioni nella procedura che non sono qui riportate.

#1: “Signor Sulu, propulsori di manovra!” – Preparare il disco di destinazione

Effettuerò lo spostamento di Precise sul disco che contiene Lucid, in una partizione dedicata. La procedura è identica indipendentemente dal fatto che origine e destinazione siano dischi o partizioni.

Partizionamento di /dev/sda

Avviato il pc da live (dovendo agire sulle partizioni), ricavo su /dev/sda lo spazio destinato ad ospitare Precise. Ho dedicato qui circa 8 GB alla nuova partizione primaria /dev/sda3 formattandola poi in ext4.

#2: “Energia!” – Trasferimento dei file

Il gestore delle partizioni ha una utile funzione di “copia-incolla” che permette di duplicare con pochi click una partizione. L’operazione però è consentita solo se la partizione di destinazione è di dimensioni maggiori o uguali a quella di origine. Questo criterio non considera l’effettiva quantità di dati presenti. Un trucchetto per aggirare questa limitazione potrebbe essere quello di ridimensionare la partizione di origine quanto basta per renderla più piccola della destinazione.

Nel mio caso ho scoperto e provato questa funzionalità con i due dischi di “appoggio” da 6 e 10 GB, riuscendo ad effettuare l’operazione appunto dal più piccolo verso il più grande. L’operazione copia dati e filesystem dall’origine alla destinazione: sempre nel mio esempio, sdb1 originariamente formattata in ext4 è stata trasformata in ext3 come sdc1.

Copia partizione da “Backup” (6 GB)

▼▼▼

Incolla partizione su 10GBDISK (10 GB)

In generale e senza limitazioni sulle dimensioni delle partizioni coinvolte si può usare un semplice cp (copia) per migrare tutti i file preservandone proprietario e attributi (importante!). Andiamo per ordine e per prima cosa montiamo la partizione di destinazione, creando un punto di mount se necessario:

$ sudo mkdir /media/precisesdd

e quindi

$ sudo mount /dev/sda3 /media/precisesdd

A questo punto possiamo avviare la copia dall’origine (nel mio caso montata in /media/Precise) verso la destinazione, con le opzioni “-r” (copia ricorsiva, include tutte le cartelle) e “–preserve=all” (conserva tutti gli attributi dei file):

$ sudo cp -r --preserve=all /media/Precise/* /media/precisesdd/

Il meno è fatto.

#3: “Tutti i sistemi regolari e funzionanti” – GRUB e fstab

Rimozione del disco origine (Virtualbox)

Terminato lo spostamento sulla partizione di destinazione, bisogna adesso “adattare” il neo-arrivato pinguino, spiegandogli che questa è la sua nuova casa. La prima cosa da fare però è rimuovere il disco o la partizione di origine, in modo da non farla rilevare a GRUB nelle fasi successive. Dovremo quindi cancellare/formattare la partizione d’origine o rimuovere fisicamente il disco in questione (anche nel caso della macchina virtuale utilizzata).

Fatto ciò, l’istinto mi ha suggerito di dover trafficare in qualche modo con GRUB e /etc/fstab della nuova installazione. Dopo qualche tentativo infruttuoso, che mi portava solo inesorabilmente alla busybox con errori relativi agli UUID della partizione, ho pensato che potesse essere risolutivo il ripristino del GRUB secondo la procedura descritta nella wiki di Ubuntu. In sintesi, pur avendo già modificato grub.cfg e fstab, “qualcosa” a me non noto puntava ancora verso l’identificativo della vecchia partizione. Accetto suggerimenti e delucidazioni in merito. Sospetto un sabotaggio dei Romulani ma non ho conferme in merito.

Comunque sia, sempre da live seguo le istruzioni della wiki applicate alla installazione migrata (/dev/sda3) e, sorpresa, “it works like a charm!”. Da ultimo (adesso è il momento giusto) sostituisco gli UUID “vecchi” in /etc/fstab con quelli nuovi. Mi informo, se serve, della natura e dell’indice delle partizioni presenti con

$ sudo fdisk -l

il cui output è

Disco /dev/sda: 21.5 GB, 21474836480 byte
255 testine, 63 settori/tracce, 2610 cilindri
Unità = cilindri di 16065 * 512 = 8225280 byte
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificativo disco: 0x00091d34

Dispositivo Boot      Start         End      Blocks   Id  System
/dev/sda1   *           2        1414    11349922+  83  Linux
/dev/sda2            2497        2611      916481    5  Esteso
/dev/sda3            1415        2496     8691165   83  Linux
/dev/sda5            2497        2611      916480   82  Linux swap / Solaris

Quindi ricavo gli UUID con

$ sudo blkid

che mi restituisce

/dev/sda5: UUID="4f505803-cca8-475e-92da-ad2b9be1d675" TYPE="swap"
/dev/sda1: LABEL="Lucid" UUID="cf4b9093-bde0-4159-be79-a5f121b7bd88" TYPE="ext4"
/dev/sda3: LABEL="Precise" UUID="e2795fb1-a973-4389-a792-d1a03a77dfe4" TYPE="ext4"

Posso ora correggere fstab ed informare il sistema dove sono le nuove root e swap. Allo stesso modo potrei aggiornare le informazioni relative ad un’eventuale /home separata o altre partizioni migrate.

#4: “Velocità curvatura, signor Scott.” – Avvio del sistema

Finalmente è tempo di abbandonare la sessione live ed avviare (si spera) il sistema. Se il ripristino di GRUB non ha dato problemi, ci si dovrebbe ritrovare con qualcosa di simile all’immagine qui sotto:

Menu GRUB

Precise (kernel 3.2) e Lucid (kernel 2.6) ci sono e questo è un buon segno. Poiché Lucid era già su disco e non è stata toccata, l’avvio con questa release non presenterà problemi. Dunque proviamo a partire con il nuovo inquilino:

Avvio – Precise

E son soddisfazioni!

Advertisements

Informazioni su Man from Mars

https://extendedreality.wordpress.com/

  1. obo

    Io avrei usato proprio clonezilla. In ogni caso si, son proprio soddisfazioni 😀

    Mi piace

    • Lo sperimenterò presto però ammettilo, da smanettone a smanettone: quanto è più bello “sfruculiare” i file di sistema e vedere che alla fine tutto funziona? E poi il fatto di non usare niente che già non ci sia nel sistema mi intrigava (sono molto per il minimal…) 😎

      Mi piace

  2. icittadiniprimaditutto

    Reblogged this on i cittadini prima di tutto.

    Mi piace

  3. Pingback: When Linux meets Star Trek: teleporting an installation | Extended Reality

Dimmi che ne pensi o fai "Ciao ciao!" con la manina // Share your thoughts or just say "Hello!"

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: