CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: Ivymike con ben 5 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: complicazio con ben 16 Thanks ricevuti negli ultimi sette giorni
Utente del mese: DreamReaper con ben 83 Thanks ricevuti nell'ultimo mese

NEWS DAL BLOG:
Pagina 1 di 4 123 ... ultimoultimo
Ultima pagina
Visualizzazione dei risultati da 1 a 10 su 39
Discussione:

[GUIDA] Anatomia della rom RK29xx

Se questa discussione ti Ŕ stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Androidiano L'avatar di eldiau


    Registrato dal
    Oct 2011
    LocalitÓ
    Torino
    Messaggi
    150
    Smartphone
    Acer Liquid, Mediacom SmartPad

    Ringraziamenti
    29
    Ringraziato 181 volte in 48 Posts
    Predefinito

    [GUIDA] Anatomia della rom RK29xx

    Attenzione: molte delle informazioni che sto per scrivere sono dedotte analizzando la rom e leggendo guide, forum ecc.. ecc.. quindi potrebbero essere imprecise o sbagliate! Mandatemi eventuali correzioni o aggiunte qui nel thread ma anche in messaggio privato dove e' piu' probabile che le veda al volo, cosi' posso integrarle nella quida.

    Per chi: Questa guida e' pensata per dev/cuochi/testers/rom-maniaci con un minimo di conoscenza di linux e dei concetti di boot di un computer

    Per iniziare a sviluppare e compilare rom fortemente customizzate ma anche per cucinare e' necessario avere ben chiaro come e' strutturata la nostra "rom" e come lo smartpad esegue il boot. Quindi prima di compilare kernel o cyanogen vediamo le "basi"...

    I dispositivi RockChip sono degli android atipici e si discostano a volte pesantemente dal tipico telefono, un esempio e' la boot.img che in una android "normale" e' costituita da un kernel accodato da una archivio cpio di boot, su rockchip e' un solo archivio cpio e il kernel vive separatamente.

    Il tablet possiede 4Gb Flash NAND, questa memoria viene utilizzata come un hardisk "partizionato" per accogliere le varie parti di sistema operativo

    La rom viene distribuita sotto forma di un unico file che di solito si chiama update.img, la versione ufficiale si trova sul sito a questo indirizzo Driver e supporto - Mediacom per flasharla occorre utilizzare windows, spegnere il tablet NON collegato al caricabatteria e tenere premuto il tasto volume- mentre lo si collega alla porta usb del computer, in questo modo il tablet esegue un "microboot" partendo con un firmware interno non modificabile (paragonabile al BIOS di un PC) che non fa altro che attendere comandi e dati sulla porta usb per scrivere la flash, per "parlare" col tablet occorre prima installare i driver per windows che si trovano nello stesso archivio e poi utilizzare il programma RKBatchTool.

    Questo microfirmware in altri android si chiama fastboot non e' riscrivibile, quindi in caso di errori di flash con rom non funzionanti dovrebbe sempre essere possibile entrare in modalita' fastboot e flashare un altra rom funzionante, rendendo qausi impossibile brickare il pad. (scordatevi questa ultima frase, non assicuro assolutamente che non ci sia modo di render il pad un fermacarte! ma sono confidente che sia quantomeno molto difficile!)

    In realta' il file update.img e' una pacchetto che contiene una serie di file, si puo' scompattare utilizzando gli rk29xxImageTools di wendal scaricabile qui Rk29xx ImageTools V2.1 - SlateDroid.com basta nominarla "wendal.img", copiarla nella cartella dei tool e lanciare il runme.bat lo script permettera' di scompattare l'immagine nelle sue componenti in Temp/Image inoltre scompattera' la system.img nella cartella system per poterla modificare oltre a copiarci dentro system/bin/su e system/app/superuser.apk, lo stesso script permette di ricompattare system.img e di ricreare la update.img. Questo metodo permette il modding classico della rom dove tipicamente si vanno a cambiare gli apk presenti in system/app inoltre grazie a su e superuser.apk permette di acquisire il root sul dispositivo ma con alcune limitazioni dovute al fatto che nella rom stadard system e' un immagine di tipo cramfs che un filesystem compresso read only quindi anche avendo i diritti di root, una volta caricato android non si potranno fare modifice ai file presenti in /system.
    Bisogna inoltre fare attenzione se si usano le rom mediacom successive dove il cromfs e' stato modificato (immagino per impedire il modding della rom) e quindi bisogna usare la versione dei tools che o modificato io tempo fa per scompattare la nuova versione di system.img

    Per il modding "classico" ci si potrebbe fermare qui le informazioni e i tool sono sufficienti per creare rom customizzate, ma l'idea e' di andare piu' a fondo e magari compilarci noi una rom dai sorgenti cyanogen quindi vediamo meglio i file che compongono la update.img:


    update-script
    E' uno script che dice al programma di flash RKBatchTool cosa fare se si preme il tasto upgrade: riscrive tutte le immagini, il bootloader e il file parameters inoltre formatta le partizioni data (dove ci sono le app installate) e cache (i file ci cache di dalvik, la java machine che fa girare le app di android)

    recover-script
    E' uno script che dice al programma di flash RKBatchTool cosa fare se si preme il tasto restore: riscrive solo l'immagine di system, il resto rimane uguale e formatta data e cache

    package-file
    la lista del contenuto del file update.img

    RK29xxLoader(L)_DDR3_400Mhz_V1.65.bin
    I loader e' il corrispettivo di GRUB o LILO nel modo linux per PC, in pratica e' il primo prgramma che viene caricato dal firmware del tablet e si occupa di caricare in memoria il kernel passandogli il contenuto del campo CMDLINE nel file parameter

    parameter
    Viene scritto da "qualche parte" nella flash e viene letto dal loader. Oltre al gia' citato campo CMDLINE, contiene altre informazioni, come l'indirizzo offset in flash dal quale caricare il kernel (parametro KERNEL_IMG ) la combinazione di tasti da premere per entrare in recovery (COMBINATION_KEY ?forse?) e altre info che non sono riuscito a intuire

    kernel.img
    E' il kernel di linux con in testa un magic (KRNL) qualche byte che da la lunghezza della parte kerbel e in coda un crc e la system.map quindi occhio a sostituire questo file con un semplice kernel in fromato vmlinux... non sara' possibile eseguire il boot.

    boot.img
    Questa immagine viene caricata come root (/) filesystem dal kernel di linux, e' il corrispettivo di initrd nel mondo in linux per PC, contiene principalemnte init che e' il primo prgramma eseguito dal kernel il cui scopo e' configuarare il sistem e caricare i vari servizi e init.rc che e il file di configurazione che init legge per sapere cosa fare. init.rc e' diviso in sezioni, alcune sezioni vengono eseguite in momenti particolari inoltre ogni sezione puo' avere dei parametri che ne determinano il comportamento come per esempio disabled (non viene eseguita). In maniera grossolana ha la funzione sia del vecchio autoexec.bat del dos piu' la gestione servizi di windows. Init prepara le variabili di sistema, monta i filesystem system, data e cache, crea varie cartelle, sostituisce boot.img come root filesystem (/) ricoprendosi con un rootfs (un filesystem che gira in ram e serve a "simulare" /) che prende il suo posto quindi quando facciamo "ls /" a sistema caricato non vediamo piu' il contenuto di boot.img ma un "ramdisk", lancia alcuni servizi importanti come vold che si occupa in montare la sdcard e le chiavette usb e infine lancia il comando /system/bin/app_process. app_process una volta in memoria si cambia il nome in zygote, zygote e' il processo che "da vita" ad android, in pratica e la viartual machine java (o piu' precisamente dalvik) che si occupa di caricare i vari apk fra cui il launcher che ci mostra il desktop di android

    recovery.img
    Questa immagine viene caricata come root dal kernel al posto di boot.img se si tengono premuti i tasti di recovery, di nuovo, e' paragonabile ad un initrd. E' simile ha boot.img sel senso che anche qui viene lanciato init pero' l'init.rc e' molto piu semplice, non monta nessun altro filesystem ma lancia il comando "/sbin/recovery". reovery mostra un meno e premette qualche operazione come formattare le altre partizioni o scrivere una immagine di rom. Il comando "/sbin/recovery" e quello che viene customizzato con la famoza clockworkmod recovery e che permette i backup nandroid, che non sono altro che dei dd (device dump) della partizione system!

    misc.img
    Questo file e' lungo 48Kbyte contiene circa 16Kbyte di zeri poi i codici ascii della stringa "boot-recovery", 48byte di zeri e e la stringa "recovery --wipe_all" e poi un altra 20ina di Kbyte di zeri. ?Penso? che venga letto dal bootloader per decidere cosa fare al prossimo boot, infatti dopo aver flashato la rom il tablet viene reboottato, entra in recovery ed esegue un wipe totale dei dati a questo punto azzera misc.img, non ho provato sperimentalmente ma scommeto che se la si edita con un editor esadecimale (io su linux uso oktet) e si azzerano le locazioni con le stringhe si puo' flashare senza il wipe.

    system.img
    Questa e' l'immagine della partizione che contiene il cuore del sistema, e in particolare la cartella /system/app (la cartella piu' amata dai cuochi :-) ) in cui ci sono tutti gli apk delle app preinstallate ma soprattutto gli apk che costituiscono il framework dell'ambiente android.


    [continua]
    Ultima modifica di eldiau; 10-11-11 alle 02:02

  2. I seguenti 22 Utenti hanno ringraziato eldiau per il post:

    clamel (06-12-11),cyberpunk (10-11-11),deiwid63 (18-03-12),fanny69 (29-12-11),ganassa (19-02-12),gexking (11-11-11),Gian_911 (02-01-12),housepabldroid (11-11-11),isabella (17-11-11),jacock (11-11-11),MagicOne (10-11-11),markpn (10-11-11),maxilomb (10-11-11),mazzzz1 (10-11-11),otticus (10-11-11),Pet2001 (19-12-11),pistoneone (10-11-11),purplebaron (11-11-11),robyxrd (11-11-11),Samhain (10-11-11),simulatorhck (10-11-11),thelupoide (11-11-11)

  3.  
  4. #2
    Androidiano L'avatar di eldiau


    Registrato dal
    Oct 2011
    LocalitÓ
    Torino
    Messaggi
    150
    Smartphone
    Acer Liquid, Mediacom SmartPad

    Ringraziamenti
    29
    Ringraziato 181 volte in 48 Posts
    Predefinito

    Le varie immagini possono essere flashate separamente in maniera molto piu' comoda, specialemte durante lo sviluppo, senza ricompattarle in un file unico con un altro tool (RKAndroid_v1.29 MEGAUPLOAD - The leading online storage and file delivery service) in particolare e' molto utile flashare boot.img e system.img che sono il cuore del sistema. Il programma e' immediato da utilizzare ma occorre verificare che la colonna degli offset rispecchi corretamente gli offset riportati nel parametro mtdparts nella riga CMDLINE del file parameter perche' altrimenti il kernel non trovera' i file systems che gli avete amorevolmente preparato (inoltre se avete cambiato l'mtbparts rispetto all'ultimo flash dovete prima fare un "Erase IDB" sempre dal tool RKAndroid).

    Infatti la flash viene vista dal kernel come partizionata logicamente grazie al parametro mtdparts.
    mtdparts e' in pratica una partition table per le flash NAND e NOR (mtd sta per memory technology devices).
    Di fatto si comporta esattamente con una partition table msdos sull'hard disk di un pc, quindi e' possibile spippolare questi numeri per cambiare il partizionamento della flash, considerando che il significato dei parametri e' dimensione, offset di inizio e nome partizione; esempio estratto dai parameters standard:

    0x00004000@0x0000A000(recovery)
    0x00080000@0x0000E000(system)


    significa che la "partizione" di nome system ha dimensioni 0x80000 (il numero va diviso per due: 0x40000, trasformato da esadecimale a decimale: 262144 e si trova la dimensione in kbyte che divisa per 1024 da esattamente 256Mb) e inizia alla locazione 0xE000, cioe' dove la partizione precedente (recovery) termina (recovery inizia a 0xA000 + 0x4000 di lunghezza = 0xE000)

    Il kernel o piu' precisamente meglio udev crea poi special file in /dev/block per ogni partizione partendo da /dev/block/mtdblock0 e salendo nell'ordine con cui vengono listate in mtdparts.
    Se si cambia il layout delle partizioni, ridimensionandole o spostandole di ordine occore fare attenzione che le rispettive immagini che verranno flashate sulle partizioni modificate non devono essere di dimensioni superiori allo spazio disponibuile e ribadisco che andranno rispecchiate nella colonna degli offset su RKAndroid al momento del flash.


    Ok, dopo questa maratona scrivero' una guida veloce al modding, una su come compilare cyanogen e un altra su come compilare il kernel dai sorgenti... abbiate pazienza spero di aver scritto il tutto per il weekend! A questo punto, con chi e' rimasto in vita :-) dalla noia possiamo partire nel provare a piazzare cyanogen sullo smartpad!

    Diego.

  5. I seguenti 18 Utenti hanno ringraziato eldiau per il post:

    baddemon (10-11-11),bbPhone (11-11-11),cyberpunk (10-11-11),gexking (11-11-11),isabella (17-11-11),jacock (11-11-11),MagicOne (10-11-11),mikegolf (10-11-11),morfances (04-01-12),otticus (10-11-11),pistoneone (10-11-11),ptrac3 (11-01-12),purplebaron (11-11-11),Samhain (10-11-11),simulatorhck (10-11-11),smoker46 (10-11-11),Sredni (10-11-11),thelupoide (11-11-11)

  6. #3
    Androidiano VIP L'avatar di morfances


    Registrato dal
    Sep 2010
    LocalitÓ
    ROMA
    Messaggi
    8,351
    Smartphone
    Nexus 5,Gnex,Galaxy Gi˛

    Ringraziamenti
    1,860
    Ringraziato 3,242 volte in 2,370 Posts
    Predefinito

    Complimenti !!un po di cultura non fa male:-)

  7. #4
    Senior Droid L'avatar di Samhain


    Registrato dal
    Oct 2011
    Messaggi
    473

    Ringraziamenti
    145
    Ringraziato 170 volte in 56 Posts
    Predefinito

    Grande eldiau!!

  8. #5
    Baby Droid L'avatar di markpn


    Registrato dal
    Sep 2011
    LocalitÓ
    San Vito al Tagliamento
    Messaggi
    7
    Smartphone
    lgP500

    Ringraziamenti
    48
    Ringraziato 5 volte in 4 Posts
    Predefinito

    complimenti veramente per l'impegno e la chiarezza

  9. #6
    Baby Droid


    Registrato dal
    Oct 2011
    LocalitÓ
    Roma
    Messaggi
    19

    Ringraziamenti
    1
    Ringraziato 6 volte in 6 Posts
    Predefinito

    Bravissimo...grazie x la chiarezza !!

  10. #7
    Baby Droid


    Registrato dal
    Oct 2011
    Messaggi
    10

    Ringraziamenti
    2
    Ringraziato 0 volte in 0 Posts
    Predefinito

    6 1 grande!
    Ho un'infarinatura di IT e mi interessava, a grandi linee, conoscere le basi del cook del nostro SP.
    Grazie,
    DSmobile

    ---*---*---
    sto convertendo tutti i miei amici e parenti ad Android perchŔ il futuro Ŕ lý!
    ---*---*---

  11. #8
    Baby Droid


    Registrato dal
    Sep 2011
    Messaggi
    18

    Ringraziamenti
    9
    Ringraziato 1 volta in 1 Post
    Predefinito

    Grande Eldiau! Ottimo lavoro. Potresti mettere anche qualche sito di riferimento per approfondire gli argomenti trattati?

  12. #9
    Senior Droid L'avatar di housepabldroid


    Registrato dal
    Sep 2011
    LocalitÓ
    Genova
    Messaggi
    770
    Smartphone
    Pixel XL white

    Ringraziamenti
    244
    Ringraziato 51 volte in 46 Posts
    Predefinito

    davvero un ottimo lavoro.. per me che android e linux sono "arabo", questa discussione Ŕ di grande aiuto..

  13. #10
    Senior Droid L'avatar di jacock


    Registrato dal
    Oct 2011
    Messaggi
    515

    Ringraziamenti
    45
    Ringraziato 37 volte in 21 Posts
    Predefinito

    Quindi cyanogen incooming?

Pagina 1 di 4 123 ... ultimoultimo
Ultima pagina

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy