// Stai leggendo ...

L'angolo dello Smanettone

Acer Aspire One: Storage Expansion su Ubuntu [How To]

acer-aspire-oneUna delle funzioni più “invidiate” alla Linpus Linux installata di default nei nostri Acer Aspire One è la Storage Expansion che permette di “fondere” insieme 2 unità disco differenti (la SSD ed una scheda SD esterna) in modo da aumentare lo spazio di storage a nostra disposizione. Vediamo come emularla perfettamente sulla nostra Ubuntu Jaunty grazie ad un kernel ottimizzato e pochi passaggi di consolle testuale.


Gli Aspire One sono tra i pochi (o meglio i soli) netbook ad essere equipaggiati con 2 lettori di schede: uno sinistro, capace di leggere esclusivamente SD card, ed uno destro, multi formato.
Nelle intenzioni di Acer, almeno per quanto riguarda i netbook dotati di sistema operativo linux, il primo di questi lettori è chiamato ad assolvere una funzione alquanto peculiare ed “innovativa”: espandere lo spazio a disposizione dell’utente “fondendo” tra loro 2 periferiche differenti (il disco interno ed una card esterna).
Scelta certamente condivisibile e lungimirante se si considera che l’hardware che monta il sistema operativo Linpus Linux di norma dispone di un disco SSD da 8 o 16 GB. Pochi, soprattutto se confrontati alle offerte della concorrenza.

La storage expansion è dunque la risposta di Acer alla nostra esigenza di “maggior spazio”.

Come ben evidenziato nel blog di Macles, il funzionamento di questa utilità è alquanto semplice: 2 directory “fisiche” facenti capo rispettivamente al disco interno (/home/user) e all’unità esterna (/media/disk) vengono “fuse” in un unica cartella “virtuale” (/mnt/home) che poi viene utilizzata da tutti i programmi (divenendo di fatto la “vera” home directory per l’utente).

E’ possibile replicare, con qualche adattamento, questo comportamento anche con Ubuntu: non essendo possibile (o per lo meno io non ne sono stato capace) ridirezionare le “chiamate” di tutto il software presente verso una nuova cartella (/mnt/home) ci limiteremo ad “aggirare” l’ostacolo spostando la nostra /home directory in una differente locazione per poi montare la cartella virtuale li dove il software se lo aspetta (/home/utente1, /home/utente2 …).
Il vantaggio di questa soluzione è che, a differenza di Linpus, qualora siano presenti più utenti nel nostro sistema è possibile utilizzare lo storage expansion per tutti.

INSTALLAZIONE KERNEL OTTIMIZZATI:
Il primo necessario passaggio consiste nell’installazione dei nuovi kernel ottimizzati “patchati” con aufs (il filesystem che permette il “miracolo”).
E’ sufficiente seguire le indicazioni fornitevi nella mia guida, anche qualora l’abbiate già seguita in precedenza (i nuovi kernel skumpic-aao-r3 e skumpic-initrd-aao-r3 sono stati oggi alle 18) e che qui andrò a ripetere per chiarezza e completezza:

Da terminale digitate:

wget http://blog.liberailvoip.it/wp-content/uploads/skumpickernel
chmod +x ./skumpickernel

Tutti i nuovi kernel sfruttano TUXONICE per gestire l’ibernazione e la sospensione. Per farlo correttamente, oltre ad una partizione sufficientemente capiente (almeno 900mb), dovremo istruire grub sulla posizione della nostra partizione di swap.

Digitiamo:

sudo gedit /boot/grub/menu.lst

Quindi cercate una riga simile alla seguente (dovrebbe essere la 85):

# defoptions=quiet splash

che dovrete far divenire come segue:

# defoptions=quiet splash resume=swap:/dev/sda3

Dove /dev/sda3 è la vostra partizione di swap ( la vostra potrebbe trovarsi in posizione differente).
Una volta salvato il file, digitate da terminale:

sudo update-grub

A questo punto non resta che differenziare l’installazione in base alla volontà di utilizzare un kernel privo o dotato di initrd: vi ricordo che qualora sceglieste un kernel privo di initrd a fronte di un avvio più rapido di qualche secondo perdereste la possibilità di visualizzare la barra di caricamento del sistema al boot.

ASPIRE ONE CON DISCO A STATO SOLIDO (SSD)
- A110L, A110X, ZG5 -

Per la versione priva di initrd

  • Installazione kernel ottimizzato:
sudo ./skumpickernel aao

Solo per i kernel privi di initrd e necessario andare ad effettuare un’ ulteriore modifica a grub. Da terminale digitate:

sudo gedit /boot/grub/menu.lst

Sfogliate il testo fino a trovare una riga con contenuto simile a questo (dovrebbe essere la 66):

# kopt=root=UUID=6c6814e2-5ee3-4dc3-b772-9c72f7c20edd ro

che dovrete far divenire:

# kopt=root=/dev/sda1 ro

Dove /dev/sda1 è la partizione in cui si trova la vostra cartella root (ATTENZIONE: potrebbe essere diversa qualora abbiate installato più distribuzioni sulla medesima SSD)
Dopo aver salvato il file, da terminale digitate:

sudo update-grub
  • Installazione headers (necessari solo se dovete compilare del software manualmente):
sudo ./skumpickernel aao-headers
  • Rimozione delle ottimizzazioni e ripristino del sistema allo stato precedente:
sudo ./skumpickernel restore-aao



mentre per quella dotata di initrd

  • Installazione kernel ottimizzato:
sudo ./skumpickernel aao-initrd
  • Installazione headers (necessari solo se dovete compilare del software manualmente):
sudo ./skumpickernel aao-initrd-headers
  • Rimozione delle ottimizzazioni e ripristino del sistema allo stato precedente:
sudo ./skumpickernel restore-aao

ATTIVAZIONE STORAGE EXPANSION:

Conclusa l’installazione riavviamo il nostro netbook e una volta scomparso lo splash screen di Acer premiamo il TASTO ESC alla visualizzazione del “conto alla rovescia” di grub.

Avviamo il sistema in “safe mode” (il nostro Aspire dovrà poter correttamente accedere alla rete ad esempio per mezzo di un cavo lan) selezionando la voce:

kernel 2.6.30-5-skumpic-initrd-aao-r3 (recovery mode)

o in alternativa

kernel 2.6.30-5-skumpic-aao-r3 (recovery mode)

Ultimato l’avvio del sistema visualizzeremo un pop-up azzurro nel quale andremo a scegliere la voce

netroot (Drop to root shell prompt with networking)

Installiamo quanto necessario:

apt-get install aufs-tools

PREPARAZIONE SD CARD

Quindi inseriamo la SD card che intendiamo utilizzare come storage expansion nello slot SINISTRO (assicurandoci che NON sia presente alcuna card nello slot DESTRO) e formattiamola.
A preferenza potremo utilizzare il filesystem ext2

mkfs.ext2 /dev/mmcblk0p1

o ext3

mkfs.ext3 /dev/mmcblk0p1

o ancora ext4

mkfs.ext4 /dev/mmcblk0p1

(lascio agli utenti più smaliziati le istruzioni per XTF,BTRF ecc ecc che comunque sono supportati dal kernel ottimizzato).

Aufs (il filesystem virtuale incaricato di “fondere” tra loro quelli reali) infatti ci permette di mixarli a piacimento. Potremo addirittura ricorrere ai “tradizionali” fat32 e fat16, ma in questo caso non saremo in grado di gestire correttamente i permessi di scrittura e lettura dei dati salvati sull’unità esterna.

A questo punto digitiamo da terminale:

ls -l /dev/disk/by-uuid/

che andrà a restituirci qualcosa di simile a questo:

lrwxrwxrwx 1 root root 15 2008-08-28 22:05 e2ef0737-45d2-406a-9c6d-1136362670fd -> ../../mmcblk0p1
lrwxrwxrwx 1 root root 10 2008-08-28 22:05 e4ed8e21-5328-4fa1-a9fe-7e59a01163fa -> ../../sda1

Annotiamo i dati dello UUID relativi alla nostra scheda esterna (e2ef0737-45d2-406a-9c6d-1136362670fd in questo caso).

SPOSTAMENTO HOME (ATTENZIONE A QUESTO PASSAGGIO)


Digitiamo:

cp -r -p /home /mnt
rm -rf /home/*

ATTENZIONE: questi passaggi sono fondamentali e delicati!
INVIATE I PRECEDENTI COMANDI ESATTAMENTE COME INDICATO.
Qualora visualizzaste qualche errore NON digitate assolutamente la seconda istruzione.Rischiereste di compromettere il vostro sistema!

/ETC/FSTAB

Finalmente siamo pronti ad attivare la funzione di storage expansion.
Creiamo la cartella in cui andremo a montare la SD card esterna

mkdir /mnt/sd

e successivamente andiamo a modificare /etc/fstab:

nano /etc/fstab

Qui aggiungiamo in coda al file le 2 seguenti stringhe:

UUID=e2ef0737-45d2-406a-9c6d-1136362670fd     /mnt/sd   ext3    noatime    0    1
none     /home     aufs     br=/mnt/sd=rw:/mnt/home=rw,create=mfs:30    0   1

Per quanto riguarda la prima delle 2 stringhe:

UUID=e2ef0737-45d2-406a-9c6d-1136362670fd     /mnt/sd   ext3    noatime   0    1

vi ricordo che ovviamente dovrete sostituire:

UUID=e2ef0737-45d2-406a-9c6d-1136362670fd

con il valore che avete precedentemente ottenuto e

ext3

con il filesystem con cui avete deciso di formattare la vostra SD card.

A questo punto premete la combinazione di tasti CTRL + X e salvate le modifiche apportate premendo Y.

Non vi resta che riavviare il sistema.

FAQ:
D: La funzionalità di storage expansion è disponibile anche sui tuoi kernel ottimizzati per Acer Aspire dotati di disco rigido?
R: E’ tecnicamente possibile ma non l’ho fatto. Mi pareva oggettivamente inutile.

D: E’ possibile inserire la card nello slot di sinistra a sistema già avviato?
R: NO. La card nello slot a sinistra va SEMPRE inserita prima di avviare il pc.
Qualora avviassi il netbook senza inserire la SD card questo si caricherà normalmente, ma non sarà possibile fruire della funzione di storage expansion (ed ovviamente se alcuni dati fossero stati salvati sulla SD card questi non sarebbero accessibili).
Lo slot di destra è utilizzabile “a caldo” come sempre.

D: Voglio cambiare la SD card.
R: Puoi farlo, ma ricordati di formattarla correttamente, copiare i dati presenti nella card che vai a sostituire (con il comando cp -r -f in modo da non alterare i permessi di scrittura e lettura dei files), e modificare correttamente le impostazioni di /etc/fstab

D: Come funziona Aufs e dove salva i dati?
R: Con le attuali impostazioni (create=mfs) Aufs salva i dati sul device che ha maggior spazio libero. Nel 90% dei casi questo è ovviamente la SD card esterna (a meno che non vogliate utilizzare una scheda da 128 MB!!).
Questa dovrebbe essere molto più veloce del disco SSD del nostro Aspire: tutto il sistema dovrebbe beneficiarne.
E’ possibile utilizzare anche altre impostazioni di salvataggio (round robin …); leggi il manuale di aufs per approfondire.

D: Quindi nei nuovi kernel skumpic-r3 lo slot di sinistra non funziona più “a caldo”?
R: NO. Funziona esattamente come prima (“a caldo”, senza che sia necessario inserire la card nello slot prima di accendere il pc). Solo se vuoi utilizzare la funzionalità di storage expansion offerta da Aufs è necessario che sia inserita a pc spento.

D: Utilizzo i tuoi precedenti kernel 2.6.30
R: Leggi l’ultima FAQ presente in questo articolo.

D: Non voglio più utilizzare Aufs e lo storage expansion
R: Riavvia il sistema in “recovery mode”.
Elimina le ultime 2 righe inserite in /etc/fstab.
Riavvia il sistema nuovamente in recovery mode SENZA aver inserito la SD card nello slot sinistro.
Da terminale digita:

cp -r -p /mnt/home/* /home
rm -rf /mnt/*

Perderai tutti i dati salvati sulla SD card a meno che tu non li copi a mano.

D: Farai uno script per automatizzare il tutto?
R: Non a breve!

Commenti

commenti


I commenti all'articolo

9 commenti for “Acer Aspire One: Storage Expansion su Ubuntu [How To]”

  1. [...] AGGIORNAMENTO: Aggiunta funzionalità di STORAGE EXPASION come sulla Linpus. Vedi questo articolo per le impostazioni. [...]

    Commentato da Acer Aspire One: Kernel 2.6.30-5 ottimizzato per Ubuntu e Debian | Libera il VoIP | | settembre 11, 2009, 00:30 |
  2. Ciao, guida spettacolare! Però ho una domanda: sul wiki di ubuntu si segnale che sospendere il laptop con una scheda sd inserita può causare perdite di dati sulla medesima. Questo vorrebbe dire che se uso la storange expansion non posso più sospendere. Col nuovo kernel il problema è risolto? A te a mai dato problemi? Sono su uno ZG5..

    Altra cosa: su una sdhc classe 6 da 16GB consigli EXT4? o XFS o EXT2?

    Commentato da vervelover | settembre 23, 2009, 22:25 |
    • Personalmente utilizzo EXT4. E’ possibile sospendere ed ibernare anche mentre si utilizza la funzione di storage expansion.
      Il kernel è stato impostato con alcune voci “ad hoc” per permetterlo. Ovviamente tra una sospensione e/o ibernazione ed il successivo riavvio la card non deve venire estratta.

      Commentato da skumpic | ottobre 4, 2009, 22:46 |
  3. Ciao, ho installato Aufs e gparted mi rileva etx4 senza journal come filestystem sconosciuto, come risolvo?Ale

    Commentato da Alessandro | ottobre 13, 2009, 16:23 |
  4. Bell’HowTo, pero’ non ho capito perche’ non si riesce a conservare la possibilita’ di poter togliere e mettere la SD come sulla Linpus. E’ proprio necessario “ingessare” il tutto nell’fstab?

    In ultimo una piccola richiesta…. un kernel aggiornato? :)

    Commentato da gabriele | dicembre 13, 2009, 15:33 |
    • Il rischio a mio avviso (ed era il motivo per cui sconsigliavo di farlo) è che togliendo e rimettendo la scheda ci potremmo ritrovare senza file essenziali.
      Faccio un esempio. Monto la mia cartella /home con aufs utilizzando le impostazioni di default (scrivi prima sul supporto che ha più spazio libero): togliendo la SD potrei ritrovarmi con un sistema privo di tutti i files scaricati o di alcuni files di configurazione che sono stati salvati sulla SD (il device con più spazio libero).

      Il tutto può essere gestito anche in modo “più dinamico” montando e smontando le partizioni da riga di comando o con script, ma servono “skills” che non si prestano molto a guide elementari come le mie :)

      Per quanto riguarda il kernel: non sono ancora riuscito ad ottenere le stesse prestazioni in termini di consumi energetici ottenibili con il generic di ubuntu :(

      Commentato da skumpic | dicembre 15, 2009, 14:39 |

Lascia un commento

Devi essere autenticato per lasciare un commento.