Forum AndroidWorld.it

[GUIDA]Memoria Interna da 1Gb!!!

Discussione: [GUIDA]Memoria Interna da 1Gb!!!

  1. L'avatar di Doc_cheilvenerdi.org

    Ha detto Doc_cheilvenerdi.org :

    Cool [GUIDA]Memoria Interna da 1Gb!!!

    Al mio segnale... scatenate l'inferno!




    Prima la memoria interna era così:
    prima.png

    Adesso è così:
    dopo.png

    Come ho fatto?

    Prima di tutto devo essere in grado di aprire, modificare e richiudere il file boot.img del mio firmware e devo saperlo flashare con Odin (Ho spiegato come faccio in questa altra discussione).

    Poi devo avere buone conoscenze di Linux e riuscire a compilare il Kernel di Android.

    RISPOSTA BREVE


    FASE 1
    Ho preso una microSD da 8Gb e l'ho partizionata in quattro (bastano due ma ho anche altre idee in cantiere... ):
    la prima partizione da 6Gb di tipo FAT (sarà la sdcard usata normalmente)
    la seconda da 256Mb di tipo ext2 (temporanea ma per garantire la funzionalità di Link2SD nelle fasi di test della procedura)
    la terza da 256Mb di tipo ext4 (la userò successivamente - per ora non serve)
    la quarta da 1Gb sempre di tipo ext4 (userò questa per intero al posto della memoria interna!!!)


    FASE 2
    Ho fatto un dump della partizione originaria /data e l'ho usato per popolare in maniera identica la quarta partizione della microSD (una copia esatta)...
    Se ne parla qui, quello che io chiamo "L'inizio di tutto"!


    FASE 3
    Ho Compilato i moduli del kernel necessari per il filesystem ext4 e li ho messi nel ramdisk in questa posizione:
    codice: [Visualizza]
    /lib/modules/jbd2.ko
    /lib/modules/ext4.ko
    Poi ho modificato il file init.rc da così:
    codice: [Visualizza]
    # mount mtd partitions
    # Mounting of /cache
    mount rfs /dev/stl14 /cache nosuid nodev check=no
    
    # Mounting of system/userdata is moved to 'on emmc' and 'on nand' sections
    # We chown/chmod /data again so because mount is run as root + defaults
    mount rfs /dev/stl13 /data nosuid nodev check=no
    chown system system /data
    chmod 0771 /data
    
    # Mount /system rw first to give the filesystem a chance to save a checkpoint
    mount rfs /dev/stl12 /system ro check=no
    a così:
    codice: [Visualizza]
    # insmod jbd2/ext4 modules
        insmod /lib/modules/jbd2.ko
        insmod /lib/modules/ext4.ko
    
    # mount mtd partitions
    # Mounting of /cache
    mount rfs /dev/stl14 /cache nosuid nodev check=no
    
    # Mount /system rw first to give the filesystem a chance to save a checkpoint
    mount rfs /dev/stl12 /system ro check=no
    
    # mount /data using "service" mode
    service init_data /system/bin/sh /init.data.sh
        oneshot
    
        chown system system /data
        chmod 0771 /data
    N.B. La soluzione non è splendida ma funziona (a breve produrro però codice un pò più pulito)

    Ho aggiunto nel ramdisk il file init.data.sh con questo contenuto:
    codice: [Visualizza]
    #!/system/bin/sh
    #added by Doc
    sleep 5
    /toolbox mount -o nosuid,nodev -t ext4 /dev/block/mmcblk0p4 /data
    sleep 5

    FASE 4
    Ho preparato il file per Odin e ho flashato poi reboot ed infine


    STANDING OVATION !!!







    Cosa fa il nuovo boot.img:
    • carica il kernel
    • carica i moduli ext4
    • monta la partizione /data prendendola non da qui (/dev/stl13 di 190Mb) ma da qui (microSd di 1Gb)
    • poi parte Gingerbread e il resto è storia...
    RISPOSTA DETTAGLIATA
    A seguire, nei post seguenti fornirò, nei prossimi giorni, tutti i dettagli necessari per rendere questa procedura ripetibile da chiunque compresi i link ai file che ho compilato e/o modificato!

    Nel frattempo vado a riempire un pò il Giga nuovo nuovo della mia memoria interna anabolizzata!




    ---
    EDIT (20/11/2011): ATTENZIONE:

    nel Post n. 38 e nel Post n. 39 ho apportato delle migliorie significative al codice utilizzato dalla procedura!

    ---
    Ultima modifica di Doc_cheilvenerdi.org; 20-11-2011 a 11: 06 Motivo: Aggiornati riferimenti ai post 38 e 39
  2. L'avatar di pablo_a3

    Ha detto pablo_a3 :
    ma è possibile anche con il galaxy ace?
  3. L'avatar di artic80

    Ha detto artic80 :
    Quote Originariamente inviato da pablo_a3 Visualizza il messaggio
    ma è possibile anche con il galaxy ace?
    credo proprio di si, basta replicare i passaggi. In realtà ricompilando il kernel come spiegato da Doc, non fai altro che modificare i riferimenti, ossia gli dici che invece di andare ad aprire la cartella Pippo, deve aprire la cartella Pluto!!!
  4. L'avatar di pablo_a3

    Ha detto pablo_a3 :
    capito.. grazie mille artic...
  5. L'avatar di Doc_cheilvenerdi.org

    Ha detto Doc_cheilvenerdi.org :
    Nel caso specifico - vista la richiesta trasversale - sará mia premura evidenziare tutti i punti della guida che potrebbero cambiare a seconda del cellulare usato!

    Chiaramente, avendo io solo un Samsung Galaxy Next, aspetteró eventuali feedback caso per caso.


    GT-S5570 on Train
  6. L'avatar di Doc_cheilvenerdi.org

    Ha detto Doc_cheilvenerdi.org :

    Cool Menu -> Gestione attività -> Riepilogo

    gestione.png





    Questo è l'obiettivo che voglio raggiungere (eh eh... che ho raggiunto)!


    ATTENZIONE:
    Da questo Post in avanti utilizzerò in maniera molto aggressiva Linux cercando, però, di rendere universali i comandi e le procedure descritte. Per fare questo senza escludere gli utenti Windows consiglio a questi di installare una macchina virtuale Linux (Nel mio caso userò una "Debian Squeeze 32bit o i686" virtuale dentro una "Gentoo amd64 No Multilib" usando VirtualBox versione 4.1.6).
    Per la parte conclusiva con Odin, invece, userò un "Asus EeePc 701" con installata una versione ultralite di Windows XP (praticamente oltre al Desktop e al file Manager c'è davvero proprio solo Odin)...
    P.S. Sconsiglio, invece o salvo smentite, l'utilizzo di Windows XP virtuale per usare Odin rimanendo dentro un ospite Linux (la virtualizzazione delle porte USB è ancora piuttosto "Luci ed Ombre" quando la periferica si attacca/stacca durante la fase di Flash).


    Sgranchiamo i Muscoli
    Visto che ci saranno molte cose da compilare comincio con le "Guest Additions" di VirtualBox.
    Nel sistema ospitante ho l'ultima versione di VirtualBox: la 4.1.6
    Appena ho finito di installare Debian Squeeze mi accorgo di avere preinstallati alcuni pacchetti, invece, della versione 3.2.10...
    ...troppo vecchi...
    ...usando il "Gestore pacchetti" dal menu "Sistema -> Amministrazione" li disinstallo tutti. Poi, se non l'ho fatto in precedenza, spengo la macchina virtuale e la riaccendo dopo avere detto al Gestore di VirtualBox che nel lettore CD è inserito il cdrom virtuale delle "Guest Additions"... al riavvio successivo vedo la sua icona sul desktop.

    debian_box.png

    Procedo ad installare i pacchetti minimi indispensabili per compilare usando il "Gestore Pacchetti": build-essential...
    ...tutti gli altri dovrebbero essere già al loro posto...

    Apro un "terminale root" oppure apro un "terminale" e da lì acquisisco i diritti di superutente e digito questi comandi:
    codice: [Visualizza]
    root@debianoid:/home/doc# mount -o remount exec /media/cdrom0
    root@debianoid:/home/doc# cd /media/cdrom0/
    root@debianoid:/media/cdrom0# ./VBoxLinuxAdditions.run
    Il primo comando mi permette di eseguire i programmi direttamente da cdrom, altrimenti Debian ha una policy di sicurezza ultra-intransigente al riguardo; con il secondo e il terzo compilo, invece, i drivers di VirtualBox per il sistema ospitato!

    Se il risultato è simile a questo (io ne ho approfittato per aggiornare dalla versione 4.1.4 alla 4.1.6) è andato tutto bene!
    codice: [Visualizza]
    root@debianoid:/media/cdrom0# ./VBoxLinuxAdditions.run 
    Verifying archive integrity... All good.
    Uncompressing VirtualBox 4.1.6 Guest Additions for Linux.........
    VirtualBox Guest Additions installer
    Removing installed version 4.1.4 of VirtualBox Guest Additions...
    Removing existing VirtualBox DKMS kernel modules ...done.
    Removing existing VirtualBox non-DKMS kernel modules ...done.
    Building the VirtualBox Guest Additions kernel modules ...done.
    Doing non-kernel setup of the Guest Additions ...done.
    You should restart your guest to make sure the new modules are actually used
    
    Installing the Window System drivers
    Installing X.Org Server 1.7 modules ...done.
    Setting up the Window System to use the Guest Additions ...done.
    You may need to restart the hal service and the Window System (or just restart
    the guest system) to enable the Guest Additions.
    
    Installing graphics libraries and desktop services components ...done.
    root@debianoid:/media/cdrom0#
    Se qualcosa è andato storto può darsi che l'ambiente di compilazione (il building environment) sia configurato male o che manchino dei pacchetti (purtroppo va risolto caso per caso... magari ne parliamo via PM e riassumiamo i risultati in un post a problema risolto)


    FASE 1: La MicroSD
    Appena Collegata la MicroSD, mi assicuro che venga rilevata correttamente dal sistema. Nel caso di una macchina virtuale la cosa non è immediata: dopo averla connessa e aspettato che il sistema ospitante l'abbia vista e/o configurata (è spesso il caso di Windows - a volte serve un reboot del computer) e poi dal menù di virtualbox della Virtual Machine scelgo:

    Dispositivi -> Dispositivi USB -> Generic Mass Storage

    (questo è il mio caso, ma il nome potrebbe anche essere diverso da Generic Mass Storage)
    Subito dopo con lo Strumento di Sistema "Visualizzatore di file di registro" controllo il contenuto del file messages e verifico che la scheda sia stata rilevata correttamente:
    codice: [Visualizza]
    Nov  9 19:39:15 debianoid kernel: [  513.916122] usb 1-1: new high speed USB device using ehci_hcd and address 2
    Nov  9 19:39:15 debianoid kernel: [  514.150593] usb 1-1: New USB device found, idVendor=1307, idProduct=0310
    Nov  9 19:39:15 debianoid kernel: [  514.150598] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    Nov  9 19:39:15 debianoid kernel: [  514.150603] usb 1-1: Product: Mass Storage Device
    Nov  9 19:39:15 debianoid kernel: [  514.150606] usb 1-1: Manufacturer: Generic
    Nov  9 19:39:15 debianoid kernel: [  514.150609] usb 1-1: SerialNumber: 00000000000006
    Nov  9 19:39:15 debianoid kernel: [  514.151588] usb 1-1: configuration #1 chosen from 1 choice
    Nov  9 19:39:16 debianoid kernel: [  514.595100] Initializing USB Mass Storage driver...
    Nov  9 19:39:16 debianoid kernel: [  514.595245] scsi3 : SCSI emulation for USB Mass Storage devices
    Nov  9 19:39:16 debianoid kernel: [  514.595510] usbcore: registered new interface driver usb-storage
    Nov  9 19:39:16 debianoid kernel: [  514.595514] USB Mass Storage support registered.
    Nov  9 19:39:21 debianoid kernel: [  519.642384] scsi 3:0:0:0: Direct-Access     Generic  USB  SD Reader   0.00 PQ: 0 ANSI: 2
    Nov  9 19:39:21 debianoid kernel: [  519.643931] sd 3:0:0:0: Attached scsi generic sg2 type 0
    Nov  9 19:39:21 debianoid kernel: [  519.656972] sd 3:0:0:0: [sdb] 1961984 512-byte logical blocks: (1.00 GB/958 MiB)
    Nov  9 19:39:21 debianoid kernel: [  519.665948] sd 3:0:0:0: [sdb] Write Protect is off
    Nov  9 19:39:21 debianoid kernel: [  519.711593]  sdb: sdb1
    Nov  9 19:39:21 debianoid kernel: [  519.750252] sd 3:0:0:0: [sdb] Attached SCSI removable disk
    Se la scheda ha già partizioni pronte mi appaiono le corrispondenti icone sul Desktop.
    Prima di procedere devo smontarla/e senza rimuoverla/e: da "Terminale root", supponendo di averne una sola, digito
    codice: [Visualizza]
    root@debianoid:/home/doc# umount /dev/sdb1 
    root@debianoid:/home/doc#
    N.B. la stringa "sdb1" è quella trovata nel log generato dopo l'inserimento della MicroSD (dispositivi USB -> ecc...).

    Adesso sono pronto per partizionarla a mio piacimento!
    Il programma che normalmente utilizzo è fdisk da linea di comando, ma per l'occasione ci provo con gparted che ha l'interfaccia grafica (Non è, però, installato di default quindi provvedo con il "Gestore pacchetti" che me lo farà trovare in Sistema -> Amministrazione -> GParted).

    ATTENZIONE: L'operazione seguente è pericolosa!!! Occhio al dispositivo che si altera!!!
    Se ne partiziono uno diverso...

    Scelgo il dispositivo /dev/sdb (lo stesso del LOG), cancello la - o "le" - partizioni preesistenti e ne creo due, tre o quattro a seconda delle intenzioni future.

    Precisazione:
    Ovviamente due partizioni sono più che sufficienti:

    • la prima per le foto, ecc...
    • la seconda per la futura memoria interna



    In caso si stia usando Link2SD ne consiglio, comunque, tre:

    • la prima per le foto, ecc...
    • la seconda per le applicazioni attualmente gestite da Link2SD (ma solo per il tempo necessario a spostarle nella terza partizione!)
    • la terza per la futura memoria interna



    In caso si abbia intenzione di seguire le follie del sottoscritto in un altra discussione ancora da creare (ma se funziona!!! ) ne consiglio quattro:

    • la prima per le foto, ecc...
    • la seconda sempre per le applicazioni gestite da Link2SD
    • la terza per il sistema intero (/system)
    • la quarta per la futura memoria interna



    Una cosa assolutamente importante è che la prima partizione sia FAT32, che la seconda sia ext2 o dello stesso tipo di quella usata da Link2SD (quasi sempre ext2), la terza e la quarta - invece - di tipo ext4 (ma è solo un consiglio spassionato!!! vanno bene anche ext2 o ext3; più avanti, però, spiegherò perchè io ho scelto ext4!)

    Un'altra cosa assolutamente obbligatoria è che le quattro partizioni SIANO TUTTE PRIMARIE!

    Finito di lavorare con GParted (o qualunque altro software del genere) tolgo la scheda e la rimetto...
    ATTENZIONE: se sto usando una macchina virtuale NON la tolgo fisicamente ma la deseleziono dal menu dispositivi e poi la riseleziono (equivale a togliere e rimettere)!

    Ecco cosa mi dice il "visualizzatore dei file di registro" subito dopo:
    codice: [Visualizza]
    Nov  9 20:09:46 debianoid kernel: [ 2344.204123] usb 1-1: new high speed USB device using ehci_hcd and address 5
    Nov  9 20:09:46 debianoid kernel: [ 2344.410614] usb 1-1: New USB device found, idVendor=1307, idProduct=0310
    Nov  9 20:09:46 debianoid kernel: [ 2344.410619] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
    Nov  9 20:09:46 debianoid kernel: [ 2344.410624] usb 1-1: Product: Mass Storage Device
    Nov  9 20:09:46 debianoid kernel: [ 2344.410627] usb 1-1: Manufacturer: Generic
    Nov  9 20:09:46 debianoid kernel: [ 2344.410630] usb 1-1: SerialNumber: 00000000000006
    Nov  9 20:09:46 debianoid kernel: [ 2344.411570] usb 1-1: configuration #1 chosen from 1 choice
    Nov  9 20:09:46 debianoid kernel: [ 2344.413979] scsi6 : SCSI emulation for USB Mass Storage devices
    Nov  9 20:09:51 debianoid kernel: [ 2349.459475] scsi 6:0:0:0: Direct-Access     Generic  USB  SD Reader   0.00 PQ: 0 ANSI: 2
    Nov  9 20:09:51 debianoid kernel: [ 2349.461266] sd 6:0:0:0: Attached scsi generic sg2 type 0
    Nov  9 20:09:51 debianoid kernel: [ 2349.475719] sd 6:0:0:0: [sdb] 1961984 512-byte logical blocks: (1.00 GB/958 MiB)
    Nov  9 20:09:51 debianoid kernel: [ 2349.484647] sd 6:0:0:0: [sdb] Write Protect is off
    Nov  9 20:09:51 debianoid kernel: [ 2349.529603]  sdb: sdb1 sdb2 sdb3 sdb4
    Nov  9 20:09:51 debianoid kernel: [ 2349.568709] sd 6:0:0:0: [sdb] Attached SCSI removable disk
    Nov  9 20:09:53 debianoid kernel: [ 2351.708435] EXT4-fs (sdb3): mounted filesystem with ordered data mode
    Nov  9 20:09:53 debianoid kernel: [ 2351.829162] EXT4-fs (sdb4): mounted filesystem with ordered data mode
    Inoltre se ho usato GParted le partizioni sono state anche formattate e quindi mi si sono aperte ben quatttro cartelline sul Desktop!!!

    N.B. Attenzione: altri software (è il caso, per esempio, di fdisk) dopo avere partizionato non formattano un bel niente! Da "Terminale Root" risolvo così:
    codice: [Visualizza]
    root@debianoid:/home/doc# mkfs.vfat -F 32 /dev/sdb1 
    root@debianoid:/home/doc# mkfs.ext2 /dev/sdb2
    root@debianoid:/home/doc# mkfs.ext4 /dev/sdb3
    root@debianoid:/home/doc# mkfs.ext4 /dev/sdb4
    Io gli 8 Gb li ho divisi così:

    • 6Gb per i dati (foto, musica, backups, ecc...)
    • 256Mb per il transitorio di Link2SD
    • 256Mb per il /system (se ci riesco! - di più non servono)
    • 1Gb di memoria interna... ma potrebbero essere 30?



    Fase1 Conclusa!

    EASY PLAY!

    Ultima modifica di Doc_cheilvenerdi.org; 11-11-2011 a 21: 21 Motivo: Continua al Post n. 12
  7. Ha detto emerjay :
    doc io ti stimo! con calma in sti giorni vedo di seguire la tua guida...
  8. Ha detto pierlux :
    piccola curiosità: posso superare il gb? ho una microsd da 16 gb, di cui 10 effettivamente utilizzati. ci sarebbero altri (quasi) 5 gb... posso impostare come valore 2gb? così sarei contento e felice per molto tempo
  9. L'avatar di Doc_cheilvenerdi.org

    Ha detto Doc_cheilvenerdi.org :
    La dimensione che puoi impostare é a tuo piacimento! Se hai una SD da 64 Gb li puoi usare anche quasi tutti (serve sempre una partizione minima per /sdcard)! Io peró ne consiglio di meno perché preferisco piú spazio per i miei dati... Per riempire 1Gb di apps penso ci si debba proprio impegnare!

    GT-S5570 on Train
  10. L'avatar di JacopoAndroid

    Ha detto JacopoAndroid :
    Ma quindi se ho capito bene viene tolta una parte di memoria alla SD e spostata al telefono ? Se la volessi mettere ad esempio in una fotocamera, avrei i GB meno di quelli effettivi ? Per avere il giga la memoria deve essere sempre inserita ?
    Questo procedimento può influenzare la garanzia ? Funziona su tutti i FW?