www.dedoshop.com
Pagina 1 di 2 12 UltimaUltima
Risultati da 1 a 20 di 28
Like Tree17Likes

Discussione: [Tutorial] Linux su Xbox 360. Parte Seconda. XeLL ed il Kernel.

  1. #1
    Homebrew Developer
    Data Registrazione
    Feb 2012
    Località
    Roma
    Messaggi
    231

    [Tutorial] Linux su Xbox 360. Parte Seconda. XeLL ed il Kernel.

    Linux su Xbox 360. Seconda parte del Tutorial.

    Bene. Avevo terminato la prima parte del Tutorial parlando dell'hardware della Xbox 360 e dei driver che è necessario implementare, sia a livello di S.O. che di Kernel per rendere possibile al S.O. di interagire con i vari dispositivi hardware della console.

    Vi consiglio, prima di iniziare la lettura di questa seconda parte del Tutorial, di rileggervi attentamente la prima parte, perchè possiate avere tutto ben presente.

    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    1. "Xenon Linux Loader" aka XeLL.

    Questo software lo conoscete tutti. Era XeLL(ous) per le console con dashboard vulnerabile ad SMC Hack (JTAG). E' XeLL Reloaded per le console che sfruttano l'exploit Reset Glitch Hack.

    Lo conoscete perchè è quello che vi permette di leggere la famosa CPU Key abbinata alla DVD Key.

    Ma XeLL è molto...molto di più. Gli sviluppatori l'hanno reso il "punto di partenza" per permettere l'esecuzione di software homebrew, fino ad arrivare a rendere possibile l'installazione di Linux.

    Ad esempio: Queste sono le stringhe di codice che rendono possibile la visualizzazione a schermo degli eFUSE, la CPU Key e la DVD Key:

    Codice:
    #ifndef NO_PRINT_CONFIG
    printf(" * FUSES - write them down and keep them safe:\n");
    char *fusestr = FUSES;
    for (i=0; i<12; ++i){
    u64 line;
    unsigned int hi,lo;
    
    line=xenon_secotp_read_line(i);
    hi=line>>32;
    lo=line&0xffffffff;
    
    fusestr += sprintf(fusestr, "fuseset %02d: %08x%08x\n", i, hi, lo);
    }
    printf(FUSES);
    
    print_cpu_dvd_keys();
    network_print_config();
    #endif
    Non ci capite molto, lo so. Ma quello che è importante, per ora, è che vediate cos'è, praticamente, XeLL.

    XeLL-Reloaded cattura i threads della CPU, li inizializza ed ha la capacità di avviare un file .elf da dispositivi USB (fat-fat32), HDD (fat-fat32), rete (tftp) o CDROM (ISO9660).
    E' diviso in stage. Il primo stage inizializza l'hardware, poi decomprime ed inizializza il secondo stage.
    Il secondo stage carica i driver richiesti (network, sata, input) ed esegue i compiti descritti in basso.


    Cos'è un thread? Il thread è l'unità minima di un processo.

    Ogni volta che deve eseguire un'operazione inizializza un processo. Per inizializzarlo gli assegna uno stack (uno spazio) virtuale di memoria. Due processi che devono comunicare fra loro posson farlo solo attraverso il kernel. I processi sono costituiti da threads, che sono l'unità più piccola di istruzioni che può essere eseguita dal sistema operativo. I threads condivisono lo spazio virtuale degli indirizzi di memoria e possono scambiarsi informazioni senza invocare il sistema operativo.

    XeLL è basato su LibXenon. Cosa può fare?

    Oltre ai compiti già conosciuti:

    - Può decomprimere e caricare file compressi (gzip). Es. InitRamFS.
    - Supporta l'alta definizione (HDMI) alla risoluzione di 1280x720p. Cambia la modalità di visualizzazione da NTSC a PAL se opportuno.
    - Attiva tutti i core della CPU alla loro massima velocità.
    - Supporta USB 2.0, grazie a TinyEHCI, quindi abbiamo 480Mbps teorici in I/O con HDD e USB Keys.
    - Supporta funzionalità di rete grazie a lwIP 1.4, indirizzamento dinamico e assegnazione di indirizzo statico se il DHCP è assente.
    - Permette l'accesso al lettore DVD via DMA (accesso più rapido).
    - L'accesso a XeLL è consentito anche da parte di un'applicazione homebrew.
    - Crea un server web minimale in grado di fornire CPU e DVD Key e il Dump della NAND.
    - Permette l'aggiornamento tramite il caricamento da dispositivo di memorizzazione di massa o ottico di un file chiamato "updxell.bin"
    - Tramite una funzione di loop continua a fare il polling dei dispositivi finchè non viene caricato un file valido (".elf", "kboot.conf","zImage.z","vmlinux").
    - Esegue il parsing e la decrittazione del keyvault.
    - Supporta file di configurazione kboot.conf.
    - Permette il caricamento opzionale di un initramfs esterno.
    - Visualizza un menu che permette il caricamento di file LibXenon eseguibili.

    E tutto questo, ragazzi, in soli 256 KByte di codice compilato!

    XeLL è in continua fase di miglioramento.

    L'ultima distribuzione pubblica ufficiale al momento di scrivere (14.02.2012) risale al 23.09.2011.
    E le sue funzionalità erano molto minori a quelle descritte più sopra.

    Il 19 Febbraio 2012 è stata rilasciata una nuova release: 0.991 che porta numerosi miglioramenti. Ad ogni modo alla data dell'aggiornamento, 1 Marzo 2012, ci sono stati già ulteriori miglioramenti, quindi la scelta migliore è sempre quella di compilarsi da sè il proprio kernel.
    Adesso quindi vedremo come compilarci l'ultima versione disponibile di XeLL-Reloaded ancora in testing.

    *** Attenzione *** Alla data di oggi, dopo la release 0.991 la scelta migliore sta nel compilare il sorgente di xell, invece che Xell-Testing, perchè il codice verrà aggiornato spesso anche nella release ufficiale oltre che quella di test. Lascio comunque i passaggi per fare il build della versione testing sotto spoiler.

    Quindi, per compilare XeLL:

    1. Do per scontato che abbiate già compilato la vostra libreria LibXenon.

    Se non lo aveste fatto, dalla vostra home:

    Codice:
    sudo su
    git clone https://github.com/Free60Project/libxenon
    cd libxenon/toolchain
    ./build-xenon-toolchain toolchain
    Alla fine della procedura, meglio descritta nel tutorial "La Libreria LibXenon e le applicazioni", bisogna esportare le variabili d'ambiente.

    La procedura aggiornata è questa (da root):

    Codice:
    touch /etc/profile.d/devkitxenon.sh
    nano /etc/profile.d/devkitxenon.sh
    Il file dovrà avere questo aspetto:

    Codice:
    #!/bin/bash
    export DEVKITXENON="/usr/local/xenon"
    export PATH="$PATH:$DEVKITXENON/bin:$DEVKITXENON/usr/bin"
    Riavviate la macchina.

    Adesso copiate sul vostro computer il sorgente di XeLL:

    Codice:
    sudo git clone https://github.com/Free60Project/xell
    cd xell
    sudo make
    Questa è la procedura per compilare Xell-Testing.



    La compilazione avverrà correttamente e al termine vi ritroverete 3 file compilati:

    - xell-gggggg.bin ==> Questo è il binario di XeLL che, rinominato in updxell.bin permette di aggiornare XeLL nella nostra memoria NAND.
    - xell-1f.bin ======> Questa è la versione di XeLL per le console che sfruttano l'exploit SMC Hack (JTAG).
    - xell-2f.bin ======> Questa è la versione di XeLL per le console che sfruttano l'exploit RGH.


    Adesso procedete all'aggiornamento di XeLL nella vostra console. Quindi, al contrario dei vecchi metodi utilizzati finora:

    - Rinominate il file xell-gggggg.bin appena compilato in updxell.bin ed inseritelo nella root di una penna USB o di un CD/DVD-ROM ed avviate XeLL. Questi troverà il file updxell.bin e lo eseguirà. Al riavvio avrete la nuova versione di XeLL.


    XeLL ha anche la capacità di flashare la NAND, perchè include il codice del Rawflasher (v4).
    In questo caso ovviamente dovete avere il dump della NAND già remappato e reso valido con la vostra CPU Key. Rinominate il vostro dump in
    "updflash.bin" e copiatelo nella root di una penna USB o di un CD/DVD-ROM. Avviate XeLL. Questi troverà il file updflash.bin e lo eseguirà.


    Adesso occupiamoci del secondo tassello del puzzle. Il file kboot.conf.

    2. Kboot.conf

    Questo file di configurazione è fondamentale perchè assolve diversi compiti:

    1. Permette di impostare un indirizzo IP statico sulla nostra console.

    2. Permette di impostare un indirizzo IP per il server TFTP (copriremo questo argomento in seguito).

    3. Esegue il parsing della modalità video disponibile sul nostro monitor, TV ed imposta quella più appropriata.

    4. Abilita i core della CPU ed i threads per avere la massima velocità disponibile. (Altrimenti sarebbe necessario avviare prima la Dashboard e poi XellLaunch, in questo modo la Xbox avrebbe già abilitato tutti i threads e i core.

    5. Permette di eseguire e mostrare a video un menu di scelta dei file da eseguire, impostandone volendo uno di default nel caso non venga selezionata una scelta.

    6. Permette di passare parametri di boot al Kernel Linux! Questo è quello che ci interessa moltissimo.

    In questo modo potremo rendere l'avvio del kernel dinamico, aggiungere o rimuovere parametri di boot che normalmente e com'è stato fatto finora andavano specificati nel kernel (stringa CONFIG_CMDLINE). Il problema è che se uno di quei parametri confliggeva con la nostra installazione o desideravamo aggiungere funzionalità aggiuntive (es. la persistenza ad una distro Live), dovevamo ogni volta riconfigurare e ricompilare il kernel!

    Allora, il miglior modo per spiegarvi questo file di configurazione è farvelo vedere. Qui vi aggiungo due modelli del file che uso io. Ve li differenzio per praticità, può benissimo esistere un solo file di configurazione sia per avviare Linux, sia per le applicazioni LibXenon.

    Kboot.conf commentato e completo di indicazioni. Permette di lanciare Kernel Linux e Applicazioni LibXenon.


    Codice:
    #KBOOTCONFIG
    ; #KBOOTCONFIG Solo questa stringa dev'essere presente alla prima linea del file.
    
    # General XeLL options
    ; netconfig - L'IP descritto verrà settato solo se valido. Se non è valido o è commentato XeLL  ; userà o il DHCP o se questo non è disponibile, questo indirizzo IP/netmask statico            ; (192.168.1.99/255.255.255.0)
    
    ip=192.168.1.22
    netmask=255.255.255.0
    gateway=192.168.1.1
    
    ; Impostazione di un server TFTP
    ; Se nessun server TFTP viene specificato o è invalido/commentato, XeLL userà un indirizzo ; IP ; richiesto al DHCP o nel caso questi non sia disponibile il seguente indirizzo IP statico:	; 192.168.1.98
    tftp_server=192.168.1.2
    
    ; Imposta la modalità video che dev'essere presentata a schermo. Se il valore non è valido o ; commentato XeLL farà un parsing per trovare la modalità valida e imposterà quella  ; automaticamente.
    ;  0: VIDEO_MODE_VGA_640x480
    ;  1: VIDEO_MODE_VGA_1024x768
    ;  2: VIDEO_MODE_PAL60
    ;  3: VIDEO_MODE_YUV_480P
    ;  4: VIDEO_MODE_PAL50
    ;  5: VIDEO_MODE_VGA_1280x768
    ;  6: VIDEO_MODE_VGA_1360x768
    ;  7: VIDEO_MODE_VGA_1280x720
    ;  8: VIDEO_MODE_VGA_1440x900
    ;  9: VIDEO_MODE_VGA_1280x1024
    ; 10: VIDEO_MODE_HDMI_720P
    ; 11: VIDEO_MODE_YUV_720P
    ; 12: VIDEO_MODE_NTSC
    
    videomode=10
    
    ; Abilita i core della CPU e i threads. Se il valore non è valido o è commentato, XeLL lascerà ; la velocità della CPU invariata.
    ; 1: XENON_SPEED_FULL
    ; 2: XENON_SPEED_3_2
    ; 3: XENON_SPEED_1_2
    ; 4: XENON_SPEED_1_3
    ; If no value is set/set invalid/commented, XeLL won't change CPU Speed
    
    speedup=1
    
    
    # Menu di Boot per Linux o Applicazioni LibXenon
    # La configurazione è opzionale. Non indicando nulla, XeLL cercherà di eseguire i file # eseguibili standard.
    
    ; Voce di Menu di default - 
    ; Se non viene specificato nulla o la stringa non è valida, XeLL farà il boot della prima voce.
    default=zlx_browser_usb
    
    ; Timeout del Menu. "0" equivale all'esecuzione automatica senza scelta da parte dell'utente!
    
    timeout=10
    
    ; Voci di Menu. Sia per Linux che per le Applicazioni LibXenon.
    ; Il primo parametro dev'essere il kernel o l'eseguibile LibXenon!
    
    zlx_browser_usb="uda:/xenon.elf"
    Kboot.conf usato per avviare Linux.

    Codice:
    #KBOOTCONFIG
    
    ; ip=192.168.1.22
    ; netmask=255.255.255.0
    ; gateway=192.168.1.1
    
    ; tftp_server=192.168.1.3
    
    videomode=10
    
    speedup=1
    
    default=ubuntu_from_usb
    
    timeout=10
    
    ubuntu_from_usb="uda:/vmlinux root=/dev/sda6 ip=dhcp console=tty0 video=xenonfb fb=false panic=60 maxcpus=3 --"
    ubuntu_from_hdd="uda:/vmlinux root=/dev/sda1 ip=dhcp console=tty0 video=xenonfb fb=false panic=60 maxcpus=3 --"
    Sezione di Kboot.conf usato per INSTALLARE Linux.

    Codice:
    install_from_usb="uda:/vmlinux initrd=uda:/ubuntuppcnetload.gz preseed/file=/hd-media/oneiric.preseed priority=critical auto=true ip=dhcp console=tty0 video=xenonfb fb=false panic=60 maxcpus=3 --"
    ubuntu_from_dvd="dvd:/vmlinux initrd=dvd:/ubuntuppcnetload.gz preseed/file=/cdrom/oneiric.preseed priority=critical auto=true ip=dhcp console=tty0 video=xenonfb fb=false panic=60 maxcpus=3 --"
    ubuntu_from_tftp="vmlinux initrd=ubuntuppcnetload.gz preseed/url=(ftp://nostro_server_ftp/oneiric.preseed priority=critical auto=true ip=dhcp console=tty0 video=xenonfb fb=false panic=60 maxcpus=3 --"
    ubuntu_ripristino="uda:/vmlinux initrd=uda:/ubuntuppcnetload.gz rescue/enable=true console=tty0 video=xenonfb panic=60 maxcpus=3 --"
    Come potete capire, in fase d'installazione chiederemo a XeLL di caricare, oltre al Kernel, un'immagine compressa di un file system minimale che contiene i moduli del kernel necessari a montare il filesystem in "/" (percorso di root) ed uno o più script che caricano questi moduli montano il FS del Sistema Operativo ed eseguono init, che completerà l'avvio del sistema operativo, impostante l'ambiente dell'utente e permettendo l'interazione dell'utente ed il login.
    L'initrd che caricheremo è un'immagine standard utilizzata per l'installazione da rete Internet di una distribuzione. Questa è una caratteristica meravigliosa della modularità di Linux, cosa che non credo con Windows si vedrà mai. Attenzione, quest'immagine AVVIA SOLTANTO IL PROCESSO DI INSTALLAZIONE. Per tutto il resto ci affideremo al file di preconfigurazione "oneiric.preseed".

    Per questo, per chi già non sapesse farlo, abbiamo bisogno di imparare a creare un nostro server FTP che poi farà da base per tutti quegli elementi che devono essere personalizzati. Queste nozioni verranno affrontate nella terza parte del Tutorial.

    E passiamo al terzo tassello. Il Kernel.

    3. The Linux Kernel (dirlo in inglese suona più figo :P)

    Mi sembra di aver già accennato cosa fosse un Kernel. E' il cuore del S.O., che contiene le istruzioni base, i moduli, i driver e le configurazioni necessarie al suo funzionamento. Niente Kernel, Niente Sistema Operativo.

    Veniamo alla parte pratica.

    Linux. Distribuzione Debian Squeeze. Il Kernel base utilizzato è il 2.6.32.X. Quindi per i nostri scopi, la versione Kernel che compileremo (2.6.38.8) sarà più che sufficiente.

    Linux. Distribuzione Ubuntu Oneiric Ocelot. Il Kernel base utilizzato è il 2.6.38.8. Qualsiasi versione inferiore o non funzionerà o genererà instabilità, quindi nemmeno provateci.


    I passi fondamentali sono 3:

    1. Download e Decompressione del Kernel.

    2. Applicazione di un file .diff.

    3. Applicazione di un file di configurazione del Kernel.

    4. (Opzionale) Modifica della configurazione del Kernel.


    Ma prima di vedere all'opera l'intero processo, dobbiamo fare una premessa, indispensabile.

    Con l'attuale versione di LibXenon, che utilizza il compilatore GCC alla versione 4.6.1, la compilazione non riuscirà e verrà restituito un errore.

    Risolvendo l'errore il Kernel compilerà correttamente, ma quando andremo ad utilizzarlo per avviare Linux, scaturiranno tantissimi errori nell'inizializzazione del modulo ATA del Kernel (non dipende dal nostro modulo SATA per la Xbox, quello è OK).

    Altro problema che potrebbe venir fuori sarebbe quello della diversa assegnazione della periferica SATA. Il nostro HDD, invece di essere inizializzato come "/dev/sda", potrebbe essere inizializzato al minimo come "/dev/sdb" o "/dev/sdX" a seconda del numero di dispositivi di memorizzazione di massa connessi alla console.


    Attualmente GCC 4.6.1 funziona correttamente solo per Kernel inferiori alla versione 2.6.32.

    Stiamo facendo un'analisi dettagliata per adattare il compilatore alle versioni attuali del Kernel, ma non abbiamo ancora una soluzione completa.

    Quindi, perchè il Kernel sia compilato correttamente dobbiamo creare una sub-istanza di LibXenon che utilizza GCC 4.4.0.

    Dalla vostra home:

    Codice:
    git clone https://github.com/Free60Project/libxenon libxenon-gcc4.4
    Questo comando clona il codice sorgente della libreria nella cartella "libxenon-gcc4.4".

    Andate poi nella cartella Toolchain della libreria appena scaricata. Mi raccomando a non confondervi andando in quella della libreria originale.

    Dalla vostra home:

    Codice:
    cd libxenon-gcc4.4/toolchain
    e con il vostro editor di testo preferito, es. gedit o nano, editate lo script "build-xenon-toolchain".

    Seguite alla lettera la lista delle modifiche da fare:

    - Alla riga 12 sostituite: "GCC=gcc-4.6.1" con "GCC=gcc-4.4.0"

    - Alle righe 7 - 37 - 57 - 58 - 59, sostituite "/usr/local/xenon" con "/usr/local/xenon_old"


    Salvate ed uscite.

    Perchè il compilatore GCC funzioni per LibXenon ha bisogno di essere patchato. Questo avviene anche per la compilazione della libreria LibXenon corrente, anche se non ve ne accorgete.

    La patch ve la fornisco io, perchè in rete non è disponibile da nessuna parte. Rinominate l'estensione del file da ".txt" a ".diff".

    La patch, dal nome "gcc-4.4.0.diff" andrà copiata nella cartella Toolchain di libxenon-gcc4.4.


    Per chi adesso pensa "ora cerco il file su google", cercate di capire che i ".diff" sono specifici per architettura, versione e hardware. Il .diff per GCC per LibXenon è unico e non può essere sostituito con un altro .diff generico.

    Ora, iniziate il processo di compilazione come ormai già sapete.

    Dalla vostra home:

    Codice:
    ./build-xenon-toolchain toolchain
    Le fasi della compilazione sono identiche a quelle per la compilazione della libreria LibXenon originale.

    ***Attenzione*** Alla fine del processo di compilazione NON DOVRETE INSERIRE LE VARIABILI ALL'INTERNO DEL FILE .BASHRC anche se questo viene specificato dallo script.

    Una volta finito, andate a fare la spesa:

    Ecco la lista:

    - Kernel Linux 2.6.38.8 ==>
    Codice:
    wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.8.tar.xz
    - File .diff per il Kernel ==>
    Codice:
    wget https://github.com/Free60Project/linux-kernel-xbox360/raw/master/2.6.38/patch-2.6.38.8-xbox0.11.1.diff
    File .config per il Kernel ==>
    Codice:
    wget https://github.com/Free60Project/linux-kernel-xbox360/raw/7f1f245a7df9c10b3aafe11bd530323b4b48d33c/xenon_config


    Estraete il kernel nella vostra home:

    Codice:
    tar Jxvf linux-2.6.38.8.tar.gz
    Rinominate "xenon-config" in ".config" e copiate il file ".diff" e il file ".config" nella cartella del kernel.

    Codice:
    cp patch-2.6.38.8-xbox0.11.1.diff linux-2.6.38.8/patch.diff
    mv xenon-config linux-2.6.38.8/.config
    Codice:
    cd linux-2.6.38.8
    Applichiamo la patch del file .diff

    Codice:
    patch -p1 < patch.diff
    Applichiamo il file .config al Kernel

    Codice:
    make CROSS_COMPILE=xenon- ARCH=powerpc oldconfig
    Questo comando applica la configurazione al kernel che permette il caricamento di moduli e driver dei componenti e delle periferiche della Xbox 360.

    Avete una minima idea di quanto è complicato il file testuale di configurazione del Kernel?

    Volete davvero mettervi a configurare stringhe del genere?

    Codice:
    CONFIG_HIGH_RES_TIMERS=y
    CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
    # CONFIG_HZ_100 is not set
    # CONFIG_HZ_250 is not set
    CONFIG_HZ_300=y
    # CONFIG_HZ_1000 is not set
    CONFIG_HZ=300
    CONFIG_SCHED_HRTICK=y
    # CONFIG_PREEMPT_NONE is not set
    CONFIG_PREEMPT_VOLUNTARY=y
    # CONFIG_PREEMPT is not set
    CONFIG_BINFMT_ELF=y
    CONFIG_COMPAT_BINFMT_ELF=y
    # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
    # CONFIG_HAVE_AOUT is not set
    # CONFIG_BINFMT_MISC is not set
    CONFIG_HUGETLB_PAGE_SIZE_VARIABLE=y
    CONFIG_IOMMU_HELPER=y
    # CONFIG_SWIOTLB is not set
    Per rendervelo più comprensibile e permettervi di avere un'interfaccia più intuitiva, soprattutto per capire cosa state configurando,

    Codice:
    apt-get install ncurses-dev
    Al termine, sempre dalla cartella del Kernel,

    Codice:
    make CROSS_COMPILE=xenon- ARCH=powerpc menuconfig
    Questo comando aprirà un'interfaccia grafica di configurazione del Kernel, dove i parametri di configurazione sono molto più comprensibili.

    Per il momento, il mio consiglio è quello di lasciare tutto com'è e non toccare niente. Quel file di configurazione ha tutti i parametri necessari per un avvio pulito delle distribuzioni Linux.

    Unica eccezione, per Ubuntu, prima di compilare il Kernel, aprite con un editor il file .config:

    Codice:
    gedit .config
    E cercate queste stringhe:

    Codice:
    CONFIG_INPUT_EVDEV=m
    # CONFIG_INPUT_KEYBOARD is not set
    # CONFIG_INPUT_MOUSE is not set
    E sostituitele con:

    Codice:
    CONFIG_INPUT_EVDEV=y
    CONFIG_INPUT_KEYBOARD=y
    CONFIG_INPUT_MOUSE=y
    Salvate ed uscite.
    Il perchè di questa modifica lo spiegherò nella terza parte del tutorial.

    Adesso, finalmente, siamo pronti alla compilazione.

    Dalla cartella del kernel lanceremo il comando Make. Ma, come cross compiler invece che CROSS_COMPILE=xenon-,daremo il percorso per intero che punta al compilatore GCC 4.4.0 e non al 4.6.1 della LibXenon attuale.

    Codice:
    make CROSS_COMPILE=/usr/local/xenon_old/bin/xenon- ARCH=powerpc all
    Ricordatevi, se avete un processore multicore, che potete velocizzare la compilazione utilizzando,dopo il make, l'opzione -j(X) dove X è il numero di core.

    Verranno compilati i driver e i moduli del kernel.

    Alla fine del processo di compilazione, nel percorso "linux-2.6.38.8/arch/powerpc/boot" troverete il file zImage.xenon.

    Quello è il vostro sudato Kernel Linux compilato, che andrà rinominato, a vostra scelta, "vmlinux", "xenon.elf", "zImage.z".

    Perchè a vostra scelta?

    Perchè ciò che conta è l'intestazione del file.

    Adesso bisogna compilare i moduli:

    Dalla cartella del kernel:

    Codice:
    make CROSS_COMPILE=xenon- ARCH=powerpc INSTALL_MOD_PATH=/home/NOMEUTENTE/modules modules_install
    Questo comando installa i moduli del Kernel.

    I moduli sono dei driver che non vengono incorporati all'interno del kernel, ma vengono caricati dal kernel durante l'avvio del Sistema Operativo, ad esempio per rendere il kernel più leggero.

    Se avete notato, alla fine della compilazione del kernel, leggete stringhe come questa:

    Codice:
    LD [M]  drivers/scsi/scsi_wait_scan.ko
    Questi sono i moduli. Il comando dato sopra crea una cartella modules con alcuni file all'interno. Per ora non toccatela. Ci servirà dopo aver installato Linux.

    E con questo, anche la seconda parte è terminata. Rimane l'ultima parte dove vedremo l'installazione di Linux.

    Probabilmente non la scriverò subito. A parte i miei impegni personali, siamo in fase di testing sia per gli Homebrew che per Linux quindi ho davvero poco tempo. Intanto prendete confidenza con questi comandi e questo e gli altri tutorial.

    @Electron
    Appena posso ti posto il login della Xbox360 con LUbuntu ^_^

    Ethereal
    File Allegati File Allegati
    Ultima modifica di Ethereal; 07-03-12 alle 01: 12
    Raiden, brunosso, jonblu and 10 others like this.

  2. #2
    Regular Member L'avatar di Black_Ram
    Data Registrazione
    Dec 2011
    Località
    Caltagirone
    Messaggi
    198
    Fantastico come sempre, sei un grande..! Queste cose ora le so grazie a te
    Da presupporre che tu le abbia imparate da qualcun'altro xD. Non si nasce imparati LOL

  3. #3
    Homebrew Developer
    Data Registrazione
    Feb 2012
    Località
    Roma
    Messaggi
    231
    Autoapprendimento, posso dire con orgoglio, anche se con un pò di disappunto, perchè ci dovrebbe essere più condivisione della conoscenza ^_^.

    Ahm, postate i commenti nella discussione apposita. Il tutorial lo proseguirò domani.
    Black_Ram likes this.

  4. #4
    Vip Member
    Data Registrazione
    Oct 2011
    Località
    Vicino a Torino
    Messaggi
    1,520
    Citazione Originariamente Scritto da Ethereal Visualizza Messaggio
    Autoapprendimento, posso dire con orgoglio, anche se con un pò di disappunto, perchè ci dovrebbe essere più condivisione della conoscenza ^_^.
    Su LibXenon.org non è spiegato quasi niente, senza contare che non è per niente aggiornato su molte cose!
    My 2 Xbox 360
    The first: (risen from RROD)___________________________The second:
    - Drive: Hitachi v78FK________________________________- Drive: LiteOn 0225
    - Mobo: Xenon_____________________________________- Mobo: Trinity
    - Dashboard: 2.0.7371.0 -> 2.0.13604.0_________________- Dashboard: 2.0.14699.0
    - Booter: Original____________________________________- Booter: RGLoder Dev (0v170)
    - MFR date: 18/08/2006______________________________- MFR date: 14/01/2011

    GamerTag: xX Luke69 Xx

  5. #5
    Vip Member L'avatar di brunosso
    Data Registrazione
    Jul 2011
    Località
    Ragusa
    Messaggi
    1,302
    Volevo aggiungere una chicca dato che io odio la scrittura delle date in americano!

    editate il file Makefile_lv2.mk e sostituite la riga 133

    Codice:
    @date +'#define DATE "%F"' >> $@
    con questa

    Codice:
    @date +'#define DATE "'$(shell date "+%d/%m/%Y")'"' >> $@
    Il risultato è la data scritta correttamente in GG/MM/AAAA

    PS fatelo prima del make!

  6. #6
    Open Member L'avatar di Tommybig86
    Data Registrazione
    Aug 2011
    Località
    Grumo Nevano (NA)
    Messaggi
    583
    ciao ethernal, allora poiche nn ho fatto la macchina virtuale senza scaricare xell in testing, volevo aggiornare xell reloaded sulla mia rgh in quanto ho notato che se la avvio da tasto eject si avvia con sfondo nero e l'emulatore psx1 non funge bene, se avvio xell da xell launch questo si avvia con sfondo azzurro e avvia l'emulatore e rom in modo perfetto avviando l'audio anke su hdmi.... allora mi sono detto che xell avviato da xell lanch era aggiornato mentre quello da eject ( ovvero in nand) no... quindi mi sono scaricato la versione di settembre su xbins e ho rinominato xell-gggggg.bin in updxell.bin, msso su una penneta in fat 32 xell mi da questo errore

    could'nt locate Xell Binary in NAND. Aborted!

    come mai???

  7. #7
    Vip Member L'avatar di brunosso
    Data Registrazione
    Jul 2011
    Località
    Ragusa
    Messaggi
    1,302
    Citazione Originariamente Scritto da Tommybig86 Visualizza Messaggio
    ciao ethernal, allora poiche nn ho fatto la macchina virtuale senza scaricare xell in testing, volevo aggiornare xell reloaded sulla mia rgh in quanto ho notato che se la avvio da tasto eject si avvia con sfondo nero e l'emulatore psx1 non funge bene, se avvio xell da xell launch questo si avvia con sfondo azzurro e avvia l'emulatore e rom in modo perfetto avviando l'audio anke su hdmi.... allora mi sono detto che xell avviato da xell lanch era aggiornato mentre quello da eject ( ovvero in nand) no... quindi mi sono scaricato la versione di settembre su xbins e ho rinominato xell-gggggg.bin in updxell.bin, msso su una penneta in fat 32 xell mi da questo errore

    could'nt locate Xell Binary in NAND. Aborted!

    come mai???
    l'errore te lo da xell in avvio da Eject, oppure lo xell che lanci da dashlaunch?

  8. #8
    Homebrew Developer
    Data Registrazione
    Feb 2012
    Località
    Roma
    Messaggi
    231
    Tommybig86, hai letto il titolo della discussione?

    Parla per caso di emulatore psx o di xell scaricato da xbins?

    In più questa discussione è dedicata al Tutorial, non a questi commenti.

    Mi meraviglia dover ancora specificare queste cose...

    Se un moderatore chiude la discussione per favore.
    jonblu likes this.

  9. #9
    Vip Member
    Data Registrazione
    Oct 2011
    Località
    Vicino a Torino
    Messaggi
    1,520

    XeLL v0.991 - Modifica colori

    Per chi volesse cambiare i colori del nuovo XeLL v0.991 ecco una piccola mini-guida:
    Codice:
    git clone https://github.com/tuxuser/xell
    Codice:
    cd xell/source/lv2/
    Codice:
    gedit main.c
    A questo punto vi si aprirà il file main.c con l'editor di testo "gedit", cercate la riga
    Codice:
    console_set_colors
    Ce ne saranno due, voi modificate solo la prima e la seconda lasciatela stare, vi si presenterà così:
    Codice:
    console_set_colors(CONSOLE_COLOR_BLUE,CONSOLE_COLOR_RED); // White text on blue bg
    Il primo colore è lo sfondo di Xell, il secondo è il colore delle scritte ^^
    Tutto quel che è scritto dopo // è un commento quindi lasciatelo stare.

    Modificate come più vi piace, poi salvate e chiudete, a questo punto potete dare il "make"


    Ecco qui alcuni link al download per gli sfaticati:
    - [URL="http://www.mediafire.com/?9khclm14ni8zlss"]XeLL v0.991 - Scritte BLU, sfondo NERO[/URL]
    - [URL="http://www.mediafire.com/?s2hdwkos6qos1zn"]XeLL v0.991 - Scritte ROSSE, sfondo NERO[/URL]
    - [URL="http://www.mediafire.com/?ok0u90q3eg37v5w"]XeLL v0.991 - Scritte VERDI, sfondo NERO[/URL]
    - [URL="http://www.mediafire.com/?tck35cmyb0bum4z"]XeLL v0.991 - Scritte ROSSE, sfondo BLU[/URL]

    Download versioni per RGLoader Dev (0v170): (testate e funzionanti)
    - [URL="http://www.mediafire.com/?fiatmqt0e2m4on1"]XeLL v0.991 - Scritte BLU, sfondo NERO[/URL]
    - [URL="http://www.mediafire.com/?b11bbv7qc37lcb7"]XeLL v0.991 - Scritte ROSSE, sfondo NERO[/URL]
    - [URL="http://www.mediafire.com/?s975mlkl5enqeqj"]XeLL v0.991 - Scritte VERDI, sfondo NERO[/URL]
    - [URL="http://www.mediafire.com/?cc4g2iebsgji7fe"]XeLL v0.991 - Scritte ROSSE, sfondo BLU[/URL]

    Io ho testato personalmente solo i files XeLL-gggggg.bin di ogni pacco e tutti i pacchi per RGLoader Dev (0v170), gli altri non dovrebbero comunque dare problemi ma li testate a vostro rischio e pericolo!

    Per usare le versioni RGLoader Dev dovete seplicemente sostituire il vecchio Xell-gggggg.bin nella cartella del builder con quello nuovo!
    Ultima modifica di Luke69; 01-05-12 alle 14: 09
    jonblu and Tommino81 like this.
    My 2 Xbox 360
    The first: (risen from RROD)___________________________The second:
    - Drive: Hitachi v78FK________________________________- Drive: LiteOn 0225
    - Mobo: Xenon_____________________________________- Mobo: Trinity
    - Dashboard: 2.0.7371.0 -> 2.0.13604.0_________________- Dashboard: 2.0.14699.0
    - Booter: Original____________________________________- Booter: RGLoder Dev (0v170)
    - MFR date: 18/08/2006______________________________- MFR date: 14/01/2011

    GamerTag: xX Luke69 Xx

  10. #10
    Open Member
    Data Registrazione
    Aug 2011
    Messaggi
    509
    Luke69, questi Xell modificati sono per rgh o per Jtag?

  11. #11
    Vip Member
    Data Registrazione
    Oct 2011
    Località
    Vicino a Torino
    Messaggi
    1,520
    Ci sono sia gli xell-1f che i 2f che i gggggg ^^
    Quelli per RGLoader Dev ovviamente sono solo i XeLL-gggggg.bin
    My 2 Xbox 360
    The first: (risen from RROD)___________________________The second:
    - Drive: Hitachi v78FK________________________________- Drive: LiteOn 0225
    - Mobo: Xenon_____________________________________- Mobo: Trinity
    - Dashboard: 2.0.7371.0 -> 2.0.13604.0_________________- Dashboard: 2.0.14699.0
    - Booter: Original____________________________________- Booter: RGLoder Dev (0v170)
    - MFR date: 18/08/2006______________________________- MFR date: 14/01/2011

    GamerTag: xX Luke69 Xx

  12. #12
    Regular Member
    Data Registrazione
    Feb 2012
    Località
    Cava de tirreni
    Messaggi
    101
    Ragazzi solo una cosa devo corregere...
    - xell-gggggg.bin ==> Questo è il binario di XeLL che, rinominato in updxell.bin permette di aggiornare XeLL nella nostra memoria NAND.
    - xell-1f.bin ======> Questa è la versione di XeLL per le console che sfruttano l'exploit SMC Hack (JTAG).
    - xell-2f.bin ======> Questa è la versione di XeLL per le console che sfruttano l'exploit RGH.
    è sbagliato
    xell-gggggg.bin è la versione per RGH
    xell-2f.bin è la versione per JTAG (SMC hack)
    xell-1f.bin è la versione per le devkit o per le console JTAG che montano solo xell (senza freeboot) scritto dal primo blocco...

  13. #13
    Homebrew Developer
    Data Registrazione
    Feb 2012
    Località
    Roma
    Messaggi
    231
    Ragazzi, nel tutorial principale è indicato tutto ciò che avete bisogno di sapere a riguardo. Evitiamo di fare confusione postando commenti inesatti.

  14. #14
    Founder Admin L'avatar di Raiden
    Data Registrazione
    Jul 2011
    Messaggi
    3,995
    Eth che faccio chiudo la discussione ? Dimmi tu ...
    [EMAIL="obcj@libero.it"][/EMAIL][URL="http://obcj@libero.it"][/URL]

  15. #15
    Homebrew Developer
    Data Registrazione
    Feb 2012
    Località
    Roma
    Messaggi
    231
    Raiden, ti ringrazio. Andrebbe ripulita e chiusa.

  16. #16
    Regular Member
    Data Registrazione
    Feb 2012
    Località
    Cava de tirreni
    Messaggi
    101
    Ma perchè sto sbagliando? xell-1f e xell-2f ci sono da molto prima dell'rgh

  17. #17
    Regular Member
    Data Registrazione
    Feb 2012
    Località
    Cava de tirreni
    Messaggi
    101
    vabbe ho capito questo forum è come era console-inf un tempo, molto dettagliato e tecnico, ma vi perdete su sciocchezze come il parlare con i vostri membri, se mi sbaglio ditemi il perchè, non parlate tra di voi facendo gli altezzosi e facendo capire sottilmente "chi ne sa meno di noi deve tacere"... io sulla mia jtag ho fatto sempre l'aggiornamento con il file xell-2f e sulle rgh con il file xell-gggggg, poi non so...

  18. #18
    Homebrew Developer
    Data Registrazione
    Feb 2012
    Località
    Roma
    Messaggi
    231
    Va bene...ormai tocca anche questo:

    1*** ==> QUESTO E' UN TUTORIAL. I TUOI COMMENTI DEVONO ANDARE NELLA SEZIONE APPOSITA, quella dov'è scritto [Bug Reporting e Commenti]. Se vuoi dare visibilità al tuo commento NON DEVI postare nel tutorial di un altro, ma apri una nuova discussione. QUESTO NON TE LO VIETA NESSUNO.

    2*** ==> DAL README UFFICIALE del Free60 Project

    Version depending on the used hack (JTAG XeLL: xell-1f, RGH XeLL: xell-gggggg)
    Per RGH Xell si intende la NAND. Per XeLL avviabile su console RGH via XeLLlaunch ci vuole Xell-2f. Il resto si commenta da solo.

    Io non lo so tu che cosa ci fai sulla tua jtag, io a volte ci poso la tazza con il caffè, ma non lo scrivo su un tutorial! Se io nel tutorial, e per scrivere un tutorial vuol dire che ho la conoscenza adeguata per farlo (non, "io ho sempre fatto così", ma qual'è la maniera giusta per farlo) ho specificato per bene quali versione di XeLL va bene per quale console, secondo te, se tu mi inserisci quel commento nel tutorial, aiuti la gente a capire o a confondersi?

    3*** ==> Ragazzo, qui nessuno fa l'altezzoso. Se qualcuno non scrive esattamente due secondi dopo che hai scritto tu, probabilmente è perchè ha anche qualcos'altro da fare. Non lo vedo per niente corretto, giudicare un forum e chi vi partecipa attivamente dopo i primi 2 post...
    Agli Admin la valutazione.
    Ultima modifica di Ethereal; 27-02-12 alle 18: 54

  19. #19
    Regular Member
    Data Registrazione
    Feb 2012
    Località
    Cava de tirreni
    Messaggi
    101
    Scusatemi ho sbagliato a scagliarmi in questo modo e dò ragione a Ethereal su quello che ha detto, ho sbagliato a dire quelle cose, ma per quanto riguarda XeLL continuo a dirti che la versione 2f è per JTAG, la versione 1f è per essere usata senza freeboot o sulle dev kit... e poi io mi sono registrato al vostro forum perchè trovavo molto interessante la guida, e su questo ti faccio i miei complimenti Ethereal, l'ho commentata pensando che fosse un errore di distrazione quello di xell e pensavo di essere d'aiuto. Poi della JTAG e quello che ci faccio non lo venivo a dire sotto un tutorial, ma era un esempio per dire che ne sono sicuro che xell-2f è per Jtag, magari funziona con XellLaunch anche su RGH, ma come updxell.bin sulle jtag si usa il 2f se anche il freeboot è installato, la 1f solo se è presente solo xell nella nand... Mi scuso con tutti per il mio comportamento di prima e sopratutto per aver scritto sotto un tutorial, ma era il modo più semplice per permettere la correzione dell' errore...

  20. #20
    Homebrew Developer
    Data Registrazione
    Feb 2012
    Località
    Roma
    Messaggi
    231
    Per chiuderla qui:

    Io ho detto che:

    - xell-1f.bin ======> Questa è la versione di XeLL per le console che sfruttano l'exploit SMC Hack (JTAG).
    - xell-2f.bin ======> Questa è la versione di XeLL per le console che sfruttano l'exploit RGH.
    - xell-gggggg.bin ==> Questo è il binario di XeLL che, rinominato in updxell.bin permette di aggiornare XeLL nella nostra memoria NAND.

    E precisando che ognuna di loro può essere rinominata in updxell.bin a seconda dei nostri scopi, che non stavo prendendo in considerazione alcun devkit,

    Xell-2f.bin viene usato in abbinamento a XellLaunch su RGH, rinominato in Xell.bin. Si, può servire anche per JTAG, il tutorial che ho scritto è orientato su RGH, per questo ho coperto gli usi che se ne fanno con RGH.

    Xell-1f.bin viene usato su JTAG, [url=http://free60.org/SMC_Hack]SMC Hack - Free60[/url] per ulteriori informazioni in merito.

    Per quello che può riguardare la parte hardware;

    Xell-1f non fa uso di rebooters e viene scritto nei blocchi 0x40-0x4f. Xell-2f, venendo usato con i rebooters and viene scritto nei blocchi 0x30-0x3f.

    Xell-gggggg.bin si usa per RGH, per essere scritto in NAND. [url=http://www.free60.org/Reset_Glitch_Hack]Reset Glitch Hack - Free60[/url] per ulteriori informazioni.

    The End.

Pagina 1 di 2 12 UltimaUltima

Segnalibri

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  

realizzazione siti internet ed e-commerce mugello