Rimozione di Aufs

Ci accingiamo ora ad eseguire una operazione importante, e allo stesso tempo delicata (dato che daremo molti comandi sulla console, bisogna stare attenti a digitare tutto correttamente), dato che rimuoveremo l’Aufs, toglieremo una partizione e ingrandiremo quella di sistema per portarla fino a 4GB.
Partiamo da dentro la Xandros su una console (CTRL+ALT+T) e digitiamo:

sudo bash
cd /boot
mkdir tmp
cd tmp
gunzip -c ../initramfs-eeepc.img | cpio -i
kwrite /boot/tmp/init

Adesso si è aperto kwrite con il seguente file:

#!/bin/sh
mount -t proc proc /proc
mount -t sysfs sys /sys
echo "0 0 0 0">/proc/sys/kernel/printk
 
if [ -n "$XANDROSBOOTDEBUG" ]; then
    /bin/busybox sh
    set -x
fi
 
ROOT=`cat /proc/cmdline | sed 's/.*root=// ; s/ .*//'`
#VERSION=`cat /proc/version | cut -f3 -d" "`
 
mount -t ext2 -o ro $ROOT /mnt-system
if [ $? -ne 0 ] ; then
    echo Could not mount OS on $ROOT. Starting debugging shell....
    /bin/busybox sh
fi
 
if [ -n "$XANDROSSCAN" ]; then
    exec switch_root /mnt-system /sbin/scanuser.sh
fi
 
if [ -n "$XANDROSRESTORE" ]; then
    exec switch_root /mnt-system /sbin/formatuser.sh
fi
 
if [ -z "`grep nosplash /proc/cmdline`" ]; then
    echo -n "[?25l"
    cp /mnt-system/boot/startup.fb /dev/fb/0
fi
 
if ! mount -t ext3 -o rw,noatime /dev/sda2 /mnt-user; then
    echo Error mounting user partition. Must run filesystem scan!
    exec switch_root /mnt-system /sbin/scanuser.sh
fi 
 
# Factory auto-format functionality
if [ -f /mnt-user/.autoformat ]; then
    umount /mnt-user
    exec switch_root /mnt-system /sbin/formatuser.sh -- --auto
fi
 
#insmod /mnt-system/lib/modules/$VERSION/kernel/fs/aufs/aufs.ko > /dev/null
mount -t aufs -o br:/mnt-user:/mnt-system none /mnt
if [ $? -ne 0 ]; then
    echo Could not mount aufs on USER partition. Starting debugging shell....
    /bin/busybox sh
fi
 
mount --move /mnt-system /mnt/.ro
mount --move /mnt-user /mnt/.rw
 
umount /sys
umount /proc
 
if [ -n "$INIT" ]; then
    if [ -n "$XANDROSBOOTDEBUG" ]; then
    exec switch_root /mnt $INIT /mnt/dev/console
    else
    exec switch_root /mnt $INIT /mnt/dev/null
    fi
else
    exec switch_root /mnt /sbin/fastinit "$@" /mnt/dev/console
fi
 
echo
echo Init Failed. Starting emergency shell....
/bin/busybox sh

Questo è il file che inizializza la distribuzione durante il caricamento (init), anche in base a dei paramentri (ad esempio possiamo vedere che è in questa fase che il paramentro XANDROSBOOTDEBUG è usato per attivare la console di ripristino).
Noi lo dobbiamo modificare in questo modo:

#!/bin/sh
mount -t proc proc /proc
mount -t sysfs sys /sys
echo "0 0 0 0">/proc/sys/kernel/printk
 
if [ -n "$XANDROSBOOTDEBUG" ]; then
    /bin/busybox sh
    set -x
fi
 
ROOT=`cat /proc/cmdline | sed 's/.*root=// ; s/ .*//'`
#VERSION=`cat /proc/version | cut -f3 -d" "`
 
mount -t ext2 -o rw,noatime $ROOT /mnt
if [ $? -ne 0 ] ; then
    echo Could not mount OS on $ROOT. Starting debugging shell....
    /bin/busybox sh
fi
 
#if [ -n "$XANDROSSCAN" ]; then
#    exec switch_root /mnt-system /sbin/scanuser.sh
#fi
 
#if [ -n "$XANDROSRESTORE" ]; then
#    exec switch_root /mnt-system /sbin/formatuser.sh
#fi
 
if [ -z "`grep nosplash /proc/cmdline`" ]; then
    echo -n "[?25l"
    cp /mnt/boot/startup.fb /dev/fb/0
fi
 
#if ! mount -t ext3 -o rw,noatime /dev/sda2 /mnt-user; then
#    echo Error mounting user partition. Must run filesystem scan!
#    exec switch_root /mnt-system /sbin/scanuser.sh
#fi 
 
# Factory auto-format functionality
#if [ -f /mnt-user/.autoformat ]; then
#    umount /mnt-user
#    exec switch_root /mnt-system /sbin/formatuser.sh -- --auto
#fi
 
#insmod /mnt-system/lib/modules/$VERSION/kernel/fs/aufs/aufs.ko > /dev/null
#mount -t aufs -o br:/mnt-user:/mnt-system none /mnt
#if [ $? -ne 0 ]; then
#    echo Could not mount aufs on USER partition. Starting debugging shell....
#    /bin/busybox sh
#fi
 
#mount --move /mnt-system /mnt/.ro
#mount --move /mnt-user /mnt/.rw
 
umount /sys
umount /proc
 
if [ -n "$INIT" ]; then
    if [ -n "$XANDROSBOOTDEBUG" ]; then
    exec switch_root /mnt $INIT /mnt/dev/console
    else
    exec switch_root /mnt $INIT /mnt/dev/null
    fi
else
    exec switch_root /mnt /sbin/fastinit "$@" /mnt/dev/console
fi
 
echo
echo Init Failed. Starting emergency shell....
/bin/busybox sh

Essenzialmente va modificata la riga 14 mettendo rw,noatime al posto di ro e togliendo -system
Vanno aggiunti parecchi commenti nel codice e, per continuare a vedere lo splashscreen di avvio, modificata anche la riga 30, togliendo -system
I commenti aggiunti tolgono i comandi che fanno si che aufs unisca le due partizioni e, dato che non servono più, anche lo scandisk e il ripristino della configurazione iniziale.

Adesso da console scriviamo:

find | cpio -H newc -o | gzip -9 > ../initramfs-eeepc-noaufs-ext2.img
kwrite /boot/tmp/init

All’interno dello stesso file, sempre alla riga 14, sostituiamo EXT2 con EXT3, dato che è nostra intenzione utilizzare un file system journaled ora che la partizione è anche scrivibile. Salviamo e da terminale scriviamo:

find | cpio -H newc -o | gzip -9 > ../initramfs-eeepc-noaufs-ext3.img
cd ..
rm -fr tmp

Ora ci siamo creati i due file immagine da utilizzare per caricare il nostro sistema personalizzato, ma nel punto in cui si trovano (nella seconda partizione), non ci sono utili, perchè dobbiamo portarla sulla prima e ciò è possibile solo utilizzando il rescue mode.
All’interno della console avviata in rescue mode, digitiamo:

mount /dev/sda1 /mnt-system
mount /dev/sda2 /mnt-user
cp /mnt-user/boot/initramfs-eeepc-noaufs*.img /mnt-system/boot/
umount /mnt-system
umount /mnt-user

In pratica abbiamo montato i due dischi (che uniti ci danno l’immagine root del sistema) e copiato dal secondo al primo il file che ci interessa sia visibile in fase di boot da Grub (che vede solo la prima partizione nella fase di boot).
Attenzione, dopo aver dato il comando cp (copia) aspettate qualche decina di secondi, poi date i due comandi di umount (smontaggio) e aspettate altri 30 secondi: così facendo ci assicuriamo che ci sia il flush dei dati su disco. Ora potete riavviare il pc (CTRL+ALT+CANC) e passare al punto successivo: fare il test se la nostra immagine funziona.

Modifichiamo al volo il menu di boot di Grub (come visto in rescue mode): ‘F9’, ‘e’, andiamo sulla 3 riga, ‘e’, modifichiamo

  initrd /boot/initramfs-eeepc.img

in

  initrd /boot/initramfs-eeepc-noaufs-ext2.img

Premiamo invio e poi ‘b’ per fare il boot.

Se il sistema parte, aprite la console (CTRL+ALT+T), e digitate:

kwrite /boot/grub/menu.lst

ora modifichiamo nell’editor la riga 17 da:

initrd /boot/initramfs-eeepc.img

in

initrd /boot/initramfs-eeepc-noaufs-ext2.img

Salviamo e chiudiamo: adesso Grub è istruito per farci partire sempre con la nostra immagine personalizzata (nel caso vorreste lavorare un pochino prima del passo successivo).

Ora dobbiamo partire con la Puppy per finalizzare l’opera.
Apriamo una console e lanciamo gparted, ci comparirà la seguente schermata:

Gparted prima

Posizionaniamoci sulla seconda partizione ed eliminiamola, poi ingrandiamo la prima partizione fino a raggiungere il riempimento di tutto lo spazio libero. Non cancellate le due partizioni FAT, perchè come vi abbiamo già detto, servono per effettuare l’aggiornamento del bios.

Applicate le modifiche al file system (sul mio netbook sono serviti 3m e 20 secondi), poi, nella console di prima, scriviamo le seguenti istruzioni, atte a tasformare il file system da EXT2 a EXT3:

tune2fs -j /dev/sda1
tune2fs -c 0 -i 0 /dev/sda1

Ora apriamo il file /boot/grub/menu.lst e modifichiamo la solita riga 17 mettendo EXT3 al posto di EXT2 e riavviamo il sistema, che si aprirà sulla nuova partizione ingrandita (la /dev/sda1):

finish

L’operazione che abbimo eseguito per rimuovere aufs è stata lunga ed impegnativa, ma adesso abbiamo maggior controllo sul nostro disco e possiamo meglio personalizzare la Xandros come avremo modo di vedere…

13 Risposte a “Rimozione di Aufs”

  1. Consiglio a chi effettua questa procedura (una volta che entrate nel sistema con partizione unica) di cancellare il file nascosto .firstrundone (nella propria home directory), in modo che al riavvio ci venga riproposta la prima configurazione del sistema.
    In questo modo potremo rieseguire gli aggiornamenti già fatti ma che, cancellando la seconda partizione dove resiedevano, non sono più installati nel sistema.

  2. Ho provato e riprovato, ma l’immagine ottenuta non funziona.
    Ho anche ottenuto messaggio di errore dopo:
    “find | cpio -H newc -o | gzip -9 > ../initramfs-eeepc-noaufs-ext2.img”
    che ho aggirato con:
    “find | cpio -H newc -o | gzip -9 > ../initramfs-eeepc-noaufs-ext2.img”
    con questo comando viene creata l’mmagine, ma non c’è verso di farla funzionare (ottengo kernel panic e simili).
    Sarebbe possibile avere (per email o download) le immagini (ext2 e ext3) funzionanti? (i 901 sono tutti uguali o sbaglio?).
    Grazie comunque per l’attenzione.

  3. Ecco i due files per il download:

    http://eeepc901.altervista.org/download/initramfs-eeepc-noaufs-ext2.img
    http://eeepc901.altervista.org/download/initramfs-eeepc-noaufs-ext3.img

    entrambi da 1MB

    Si, i 901 sono uguali, tranne che per le dimensioni del secondo disco ed eventualmente per le prestazioni dei dischi, ma ciò non incide di persè sull’immagine da usare. Forse il 901 G0 ha dell’hardware lievemente differente, ma credo che funzioni allo stesso modo.

  4. Grazie per la pronta risposta e di avere esaudito la mia richiesta. Ho scaricato le 2 immagini e testato la prima (EXT2).
    Sembra funzionare all’inizio ma si ferma quando compare la crocetta del puntatore del mouse. Poi schermo nero :-((
    Le immagini le ho copiate tramite la Puppy (a proposito, l’ho installata in modalità frugal sul 2° HD: va molto meglio che da chiave usb e occupa solo 600Mb). Sempre da Puppy ho modificato il menu di Grub aggiungendo 2 voci uguali alla prima (Normal Boot) tranne che per la 3a riga in cui ho modificato il nome del file immagine da caricare (ovviamente ho aumentato il timeout). Certo il mio 901 (normale con xandros, non “GO”) è stato un po’ … tweakkato (ho aumentato le dimensioni della 2a partizione, installato il Full Desktop ecc.). Forse dovrei ripartire da un ripritino del sistema da CD. Tu che ne pensi?
    Comunque ancora grazie per l’attenzione. Ciao

  5. Quando partivi con la Xandos, il full desktop è attivo da subito? Io, parto sempre in easy mode e poi eventualmente passo al full desktop in un secondo momento se mi serve. Se puoi, prova a partire con l’easy mode per vedere se così si avvia (dato che si blocca subito dopo aver avviato il server grafico X potrebbe essere un problema con il caricamento del desktop, anche se i sintomi sembrano di un freeze di X stesso).

    Teoricamente dicono di applicare questa procedura con il sistema operativo allo stato originario, ma ritengo che questo fosse solo per limitare i problemi di perdere i dati modificati nel frattempo. Infatti se l’operazione va a buon fine ci ritroviamo con la Xandros allo stato iniziale, dato che è quella nella partizione di Auf a sola lettura. Per questo, nel tuo caso stai partendo con la nuova immagine sul sistema operativo originale (non quello tweakkato da te), perciò la differenza che vedo sta in ciò che carica dalle impostazioni relative all’utente salvate nella /home del secondo disco.

    Io invece di mettere un sistema come Puppy sul secondo disco, pensavo in futuro di spostare la Xandros su una partizione del secondo disco (che è più lenta del primo) e installarci li un’altra distribuzione (non ancora scelta). La Xandros mi rimarrebbe per sperimentare con il sistema originale, mentre poi per tutti i giorni utilizzerei quello nuovo.

  6. Grazie ancora per il suggerimento: ti ho dato retta e le cose vanno mooolto meglio: ho disabilitato il full Dektop partendo in Easy. Purtroppo avevo messo una password che, evidentemente, è memorizzata in sda2. Ho aggirato l’ostacolo ripartendo normalmente e abilitando l’accesso diretto. Da qui tutto OK fino alla trasformazione da EXT2 a EXT3. Partendo in Rescue Console ho digitato”tune2fs -j /dev/sda1″ ma ottengo come risposta “tune: not found”. Penso di non avere i diritti di amministratore in questa console. Ho provato con sudo ma ottengo lo stesso risultato (sudo: not found). Per il momento ho pensato di lavorare sulla partizione EXT2 (che del resto va benissimo). Se avrai qualche altro suggerimento sarà comunque bene accetto. Ad esempio: ci si può fidare a dare il comando “tune2fs -j /dev/sda1” da una finestra di terminale (che, abbiamo visto, “prende” sudo bash)?
    In ogni caso spero che la mia esperienza sia utile ad altri: “si può fare”!
    Per quanto riguarda l’idea di spostare xandros su sda2: vedo dei problemi, tipo modificare l’impostazione della /home. Io avrei difficoltà, ma tu sono sicuro che sai come fare. In ogni caso Puppy, installata come frugal, potrà conviverci benissimo, anche se forse 3 Distro per un netbook sono troppe 😉
    Comunque, per non farci mancare nulla, alla lista delle Distribuzioni da installare ti suggerisco di aggiungere DreamLinux: è bella e veloce. L’ho installata direttamente su di una vecchia scheda SD, un po’ lenta per la verità. Va configurata un pochino, ma funziona tutto tranne, per ora, il wireless. Ma ne parleremo un’altra volta, se vuoi. Ciao

  7. Se ti da l’errore “tune not found” allora è colpa mia che non ho specificato bene nell’articolo che la console “di prima” è quella della puppy usata per lanciare gparted per mettere mano alle partizioni. Infatti l’operazione va fatta dalla Puppy (o qualsiasi distribuzione che supporti EXT3 partendo da scheda, pen o secondo disco), non dalla Xandros in rescue mode.
    Il problema d farlo dalla Xandros è che il file system non deve essere in uso in RW, ma solo in lettura e il comando dovrebbe essere dato col percorso esteso /sbin/tune2fs. Premetto però che non ho provato, quindi consiglio di fare l’operazione direttamente da Puppy 😉
    Nel rescue mode comunque dovresti già essere avviato come utente root di default.

    Nel caso di spostare la Xandros, la home rimarrebbe vista dal sistema sullo stesso disco, perchè la partizione per la Xandros la metterei alla fine del secondo disco: quello che cambia è allora proprio la posizione della root / da cambiarsi come abbiamo fatto qui per rimuovere AUFS.

    Vedrò di provare DreamLinux questo weekend…

  8. OK! tutto a posto. Da Puppy funziona, ora ho la mia partizione unica su cui ho installato i Software che mi servono. Una Birra con questo caldo te la sei proprio meritata :-))
    L’unico inconveniente, per il quale chiedo ancora una volta il tuo aiuto, è che non riesco ad installare alcuni aggiornamenti perché, da quello che capisco dal messaggio di errore, manca il mount point per /ro in fstab. Io non ho cancellato nulla, ho solo aggiunto una riga per montare una partizione ntfs che ho “di scambio” su tutti i PC che uso. Devo dire che, anche per questo, c’è un piccolo problema: non viene montata all’avvio come in tutte le altre Distro che uso, ma devo dare manualmente da terminale il comando:
    sudo mount -a.
    Spero di essere stato chiaro e di non avere tediato te e i frequentatori del Blog. Nel caso in frigorifero ho ancora altre birre 😉 . Ciao

  9. Grazie 🙂

    Per aiutarti con l’errore, mi serve vedere l’output della parte finale della fase di installazione (mi sembra strano che il programma neccessiti di avare il filesystem in sola lettura (/ro) in fstab).

    Posta anche il contenuto del tuo /etc/fstab. In teoria ti basta mettere “auto” come parametro di mountpoint (anche se è il default).
    Attento che bisogna anche avere:
    auto generation: off
    altrimenti Xandros potrebbe rigenerare il file fstab.

    In alternativa se editi /etc/rc.local e metti
    mount -a
    prima di
    exit 0
    ottieni di eseguire il mount usando lo script di startup

  10. Come da richiesta posto la parte finale del essaggio di errore dell’aggiornamento del Driver wireless:
    + sudo mount -o remount,ro /ro
    mount: can’t find /ro in /etc/fstab or /etc/mtab
    dpkg: error processing asus-digital-content (–configure):
    subprocess post-installation script returned error exit status 1
    Errors were encountered while processing:
    asus-digital-content
    W: Couldn’t stat source package list http://dccamirror.xandros.com dccri-3.0/main Packages (/var/lib/apt/lists/dccamirror.xandros.com_dccri_dists_dccri-3.0_main_binary-i386_Packages) – stat (2 No such file or directory)
    Sub-process /usr/bin/dpkg returned an error code (1)
    1 not fully installed or removed.

    e il mio fstab:
    # /etc/fstab — static file system information
    # auto generation: on
    # generated by: /sbin/etcdev2fstab
    #
    # NOTE: to make this file readable, it has been formatted for 132 columns
    #
    #
    /dev/sda1 / ext2 defaults 0 0
    /dev/sdb2 /mnt/Dati vfat umask=0000 0 0
    proc /proc proc rw 0 0

    Dove devo impostare “auto generation: off” ?
    Ho comunque modificato il file /etc/rc.local e va bene.

    aggiungo che, effettivamente, prima dell’eliminazione di aufs vedevo 2 directory /ro e /.ro nella root che si riferivano alle 2 partizioni da 7.8 Mb che servirebbero appunto per gli aggiornamenti, se non erro. Queste 2 partizioni, come da tue istruzioni, non sono state toccate, esono ancora presenti, ma i loro mount point no: devo ricrearli?

  11. Credo di aver capito. Nella Xandros ci sono 3 directory: /ro /.ro e /.rw che di per sè non fanno parte delle directory Linux standard.
    Infatti sono usate da Aufs: ad esempio nello script originale si ritrova:

    mount –move /mnt-system /mnt/.ro
    mount –move /mnt-user /mnt/.rw

    in cui vengono rimappate le due partizioni che vanno a formare Aufs nelle due suddette posizioni (a sua volta /mnt in questo caso punta alla / del filesystem). Sembra che gli script di pre/post installazione del pacchetto che installi vadano ad usare in maniera specifica la directory /ro che probabilmente è usata temporanemente.
    Per ovviare al problema vedo due soluzioni:
    1) Trovare il pacchetto interessato da un repository di eeebuntu/ubuntu, perchè se presente, non utilizzerà questi script
    2) Ottenere una copia di /etc/fstab originale (prima della rimozione di aufs), così da ricreare il mount-point giusto a /ro andando a vedere come era la stringa utilizzata per esso

    Ho sempre pensato che le due partizioni piccole in FAT fossero usate dagli aggiornamenti ma riferiti sempre ad operazioni col bios (e quindi non rese visibili normalmente al sistema), invece scopriamo che almeno una è probabilmente utilizzata dal processo stesso di installazione della Xandros.

    in /etc/fstab cambia
    # auto generation: on
    con
    auto generation: off

    questo dovrebbe evitare la rigenerazione del file

    mentre:
    /dev/sdb2 /mnt/Dati vfat umask=0000 0 0
    diventerebbe
    /dev/sdb2 /mnt/Dati vfat defaults 0 0

    per il mount automatico (in rw per root).

    Comunque puoi tenere il mount sullo script di startup se preferisci 😉

  12. Troppo bravo (e gentile) mi sento in divere di offrire un’altra birra, ma è l’ultima per oggi, non vorrei che tu dovessi uidare :-))
    Domani parto per una settimana di ferie (col netbook logicamente). Al mio ritorno vedo se riesco a recuperare la fstab originale, ti farò sapere. Per le altre modifiche: ho provato tutti i tuoi suggerimenti e anche ad aggiungere “sudo” a “mount -a” ma non c’é verso: devo rimontare tutto da console dopo l’avvio, altrimenti “nada”. Poco male, era così anche prima del resto. Alla prossima

  13. Grazie, ma effettivamente son appena tornato in macchina… 🙂

    Vedrò nel frattempo di far delle prove montando in automatico le due partizioni vfat del secondo disco, così da scoprire il perchè il sistema sembra non voler attivarle da solo..

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.