[Guida] Compilare il kernel per il Liquid - In costruzione

Discussione in 'Guide per Acer Liquid/E' iniziata da foreman, 29 Lug 2010.

Condividi questa Pagina

  1. foreman

    foreman Worker Droid

    Iscritto:
    7 Lug 2010
    Messaggi:
    71
    "Mi Piace":
    0
    [La guida è in costruzione, per cui ci potrebbero essere degli errori o dei passaggi non chiari]

    [Premetto che non sono riuscito a fare un immagine boot.img funzionante, penso che sia per colpa dei .config che ho usato, o dei sorgenti]


    Salve a tutti, di seguito una guida per compilare il kernel del nostro disposivo android.

    L'articolo sarà volutamente semplice (per gli addetti ai lavori) e si concentrerà più sui comandi da dare che sulle spiegazioni! Se avete qualche domanda, chiedete pure!

    Per compilare il kernel sono necessari alcuni pacchetti, presenti in tutte le distribuzioni linux più comuni.
    Ad esempio per ubuntu, potete installare tutto quanto con questo comando:
    Codice:
    sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind
    Visto che il nostro cellualre ha un'archiettura diversa da quella del nostro pc (ARM), è necessario un compilatore apposito, che potete scaricare da qui:
    http://www.codesourcery.com/sgpp/lite/a ... plate=lite
    Scegliete IA32 GNU/Linux Installer e installatelo seguendo la procedura guidata.

    Impostiamo le variabili di ambiente:
    Codice:
    echo "export ARCH=arm
    export CROSS_COMPILE=arm-none-linux-gnueabi-
    export PATH=$PATH:~/CodeSourcery/Sourcery_G++_Lite/bin" > export_arm.sh
    . export_arm.sh
    Bene adesso il nostro pc + pronto per compilare, adesso abbiamo bisogno di reperire i sorgenti del kernel.
    Possiamo scaricarli o in formato tar.gz e decomprimerli in una directory, oppure scaricare direttamente i sorgenti dal repository con git.

    nel caso abbiamo necessità di aggiornare i nostri sorgenti con gli aggiornamenti del repository git:
    per copilare il kernel abbiamo bisogno di una configurazione di partenza che poi possiamo modificare a nostro piacimento.
    Possiamo prenderla dal nostro cellulare, oppure prendere quella del repository, o da qualche parte in giro per la rete.
    Attenzione al fatto che ogni versione di kernel ha il suo file .config (per rendere compatibile il file .config con versioni nuove: make oldconfig)

    Possiamo prendere il file .config anche dal nostro cellulare:
    Codice:
    adb pull /proc/config.gz ~/kernel_source/kernel
    cd ~/kernel_source/kernel
    gunzip config.gz
    una volte reperito il nostro file .config e posizionato nella directory dei nostri sorgenti diamo:
    Codice:
    make menuconfig
    e impostiamo la configurazione desiderata
    poi
    Codice:
    make
    e partirà la procedura di compilazione, se tutto è andato bene troveremo il nostro kernel qui:
    Codice:
    ~/kernel_source/kernel/arch/arm/boot/zImage
    Adesso dobbiamo "fondere" insieme il nostro kernel con il ramdisk, da cui verrò fuori il nostro boot.img

    Possiamo prendere il ramdisk, da un altro boot.img (reperito in rete) o anche dal nostro cellulare:
    Codice:
    adb shell
    cat /dev/mtd/mtd2 > /sdcard/running.img
    exit
    adb pull /sdcard/running.img ~/kernel_source/
    cd ~/kernel_source/
    cp running.img boot.img
    Adesso che abbiamo il boot.img, scompattiamolo:
    Codice:
    ./unpack-bootimg.pl boot.img
    Volendo possiamo modificare il nostro ramdisk, una volta fatto dobbiamo ricomprimere la directory:
    Codice:
    cd boot.img-ramdisk
    find . | cpio -o -H newc | gzip > ../newramdisk.cpio.gz
    Adesso ricreiamo il boot.img:
    Codice:
    ./liquidmkbootimg --cmdline 'panic=10 no_console_suspend=1 console=null' --kernel zImage --ramdisk newramdisk.cpio.gz -o newboot.img
    Se non abbiamo un liquid, ma un altro terminale android:
    Codice:
    ./mkbootimg --cmdline 'panic=10 no_console_suspend=1 console=null' --kernel zImage --ramdisk newramdisk.cpio.gz -o newboot.img
    Adesso possiamo trasferirlo sul cellulare, copiamo il nostro boot.img nella directory tools di sdk di android (quella dove c'è adb).
    Abilitiamo il debug USB del nostro terminale android.

    Attenzione, adesso procedete a vostro rischio e pericolo.
    Vi consiglio di salvarvi il vostro boot.img prima di procedere.

    Codice:
    adb reboot bootloader
    fastboot -i 0x0502 flash boot boot.img
    echo Rebooting...
    fastboot -i 0x0502 reboot
    Se l'immagine che abbiamo preparato non dovesse funzionare, possiamo ripristinare la vecchia con questa procedura:
    togliere la batteria
    attendere 10 secondi
    rimettere la batteria
    attaccare il cavo usb al pc
    quando compare l'immagine della batteria premere: BACK e CAMERA
    entreremo in fastboot

    adesso ripete la procedura di flash del boot, ma usiamo il boot.img funzionante.
     
  2. Suxsem

    Suxsem Bronze Droid

    Iscritto:
    28 Apr 2010
    Messaggi:
    906
    "Mi Piace":
    0
    ok stamattina ci provo :)