Jump to content

Enoch Bootloader


ErmaC
 Share

1,086 posts in this topic

Recommended Posts

ciao a tutti, approfitto di questo topic in italiano per fare i complimenti agli sviluppatori di enoch perché trovo sia un'ottima risorsa.

Però chiedo qualche spiegazione perché non trovo un howto su tutti i parametri impostabili.

In particolare con Sierra sul dell m6400 in firma ho problemi a caricare il webdriver Nvidia e non riesco a caricare alcun kext da E/E: in fase di avvio non appare alcuna scritta tipo "attempting to loading drivers from extra repository" e dunque vengono ignorati i kext presenti in quella cartella.

Per quanto riguarda il webdriver Nvidia, riesco a caricarlo correttamente solo con l'utilizzo del modulo fileNVRAM, che in precedenza però non utilizzavo. In pratica seguendo questo metodo.

Però credo di capire che in questo modo E/E verrà sempre ignorata.

Senza il modulo fileNVRAM ho provato diversi flag senza successo, dopo il boot ritrovo sempre settati i driver apple.

Qualche suggerimento?

Link to comment
Share on other sites

  • 1 month later...

ciao a tutti, approfitto di questo topic in italiano per fare i complimenti agli sviluppatori di enoch perché trovo sia un'ottima risorsa.

Però chiedo qualche spiegazione perché non trovo un howto su tutti i parametri impostabili.

In particolare con Sierra sul dell m6400 in firma ho problemi a caricare il webdriver Nvidia e non riesco a caricare alcun kext da E/E: in fase di avvio non appare alcuna scritta tipo "attempting to loading drivers from extra repository" e dunque vengono ignorati i kext presenti in quella cartella.

Per quanto riguarda il webdriver Nvidia, riesco a caricarlo correttamente solo con l'utilizzo del modulo fileNVRAM, che in precedenza però non utilizzavo. In pratica seguendo questo metodo.

Però credo di capire che in questo modo E/E verrà sempre ignorata.

Senza il modulo fileNVRAM ho provato diversi flag senza successo, dopo il boot ritrovo sempre settati i driver apple.

Qualche suggerimento?

Ciao c0ke

 

vedo solo adesso il tuo post...

I modulo FileNVRAM era diventato praticamente inutilizzabile dopo Maveric erano cambiate molte cose a livello

di sistema operativo il quale lo rendevano praticamente inutile per le versioni successive do OS X.

 

Recentemente (Gennaio 2017) un nostro caro amico Micky1979 ha ripreso il modulo abbandonato e lo ha aggiornato e sistemato

(per dirtela in termini brevi) rendendolo compatibile con El Capitan -> High Sierra aggiungendogli funzionalitá come ad esempio

l'uso dei WebDriver.

 

Enoch é cresciuto moltissimo,

tra le versioni di Chameleon é la piú aggiornata la piú completa e la piú performante persino del suo "papá"... Chameleon stesso

 

Enoch fa uso di due nuovi .plist il kernel.plist ed il kext.plist rispettivamente per patchare al volo (durante l'avvio)

il kernel ed gli Kext...

 

da Maverick in su risulta veramente complicato usare un bootloader che non abbia tali caratteristiche...

Fai conto che giá (se non ricordo male) da Snow Leopard mamma Apple ha reso difficile il caricamento degli Kext che non fossero quelli contenuti

all'interno di S/L/E cosa che Enoch permette grazie al parametro KernelBooter_kexts = yes settato nel kernel.plist e quindi carica i nostri Kext preferiti da E/E :D

 

esempio del kernel.plist lo puoi trovare sul mio repo in github o sull'SVN ufficiale di Chameleon

kernel.plist -> https://github.com/fabiomartino/Enoch/blob/master/package/kernel.plist

kext.plist -> https://github.com/fabiomartino/Enoch/blob/master/package/kexts.plist

 

Per i WebDriver ed la sua attivazione ed utilizzo ti consiglio di dare una lettura al topic di Chameleon/Enoch sull'Internazionale intorno alla pagina 210 http://www.insanelymac.com/forum/topic/231075-chameleon-24svn-official-pkg-installer/page-210

 

ErmaC

Link to comment
Share on other sites

  • 2 weeks later...

(...)

all'interno di S/L/E cosa che Enoch permette grazie al parametro KernelBooter_kexts = yes settato nel kernel.plist e quindi carica i nostri Kext preferiti da E/E :D

(...)

 

Ciao ErmaC,

grazie della tua risposta! Gran bel lavoro, uso Chameleon/Enoch ormai da qualche anno e lo trovo veramente efficace.

Non ho provato ancora kext.plist, ma a breve lo testerò perché a quanto ho capito potrebbe aiutarmi a patchare AppleGraphicsPowerManagement, che tuttora devo ritoccare manualmente ad ogni upgrade.

Rigurardo il quote qui sopra su E/E ti confermo di aver settato il parametro KernelBooter_kexts su Yes su kernel.plist situato nella cartella Extra. tuttavia ho provato a mettere Nullcpupowermanagement in E/E (solo per provare l'efficacia della funzionalità), ma a quanto vedo non viene caricato.

Non mi è chiaro se con KernelBooter_kexts -> Yes durante il verbose boot dovrei nuovamente leggere il messaggio "attempting to loading drivers from extra repository", perché è un bel pezzo che non lo vedo più.

Inoltre su system profiler nella sez. estensioni non c'è traccia alcuna dei kext che metto su E/E.

Per ora cerco di fare a meno di fileNVRAM. successivamente approfondirò il perché i webdriver caricano solo in presenza di questo modulo. 

credo che allo stato attuale E/E venga ignorata, ma non capisco perché.

 

grazie ancora!

Link to comment
Share on other sites

  • 8 months later...
Ciao a tutti,
Ho appena realizzato (ben tardi è vero) che la fonazione
"long NTFSGetUUID (CICell ih, char * uuidStr)" da "\ chameleon \ branches \ ErmaC \ Enoch \ i386 \ libsaio \ ntfs.c" (linea 310)
non può restituire l'UUID di una partizione o di un volume NTFS perché il numero di serie che è modificare per creare l'UUID, viene generalmente utilizzato nell'UUID di un volume NTFS n ma non è l'UUID di un volume NTFS. Per trovare l'UUID di un volume NTFS è necessario eseguire diverse ricerche descritte di seguito
 
Su una partizione NTFS l'UUID è circa 3352 byte dall'inizio della MFT, per trovare l'offset della MFT è necessario leggere gli 8 byte che partono dal byte 48 dell'inizio della partizione, Questi 8 byte una volta convertiti darà l'offset del settore in cui inizia la MFT. Per ottenere l'offset della MFT, gli 8 byte convertiti devono essere moltiplicati per il numero di byte per settore (512) e il numero di settori per cluster (8) (8 e 512 sono i valori predefiniti per una partizione NTFS).

Ad esempio, gli 8 byte che iniziano alla 48a (in lettura sono due caratteri per un byte) possono essere 0x698c670000000000 che dovranno essere invertiti 0x0000000000678c69 e convertiti in decimale 6786153. Quindi applicare la formula (6786153 * 8 * 512) o ( 6786153 * 4096) = 27796082688 (offset della MFT) + 3352 (offset UUID) = 27796086040. così nella partizione se passiamo al byte 27796086040 troveremo l'UUID della partizione su 16 byte che dovrà essere convertito in esadecimale e invertito per i primi 8.

Non c'è molto interesse nel modificare l'UUID di una partizione NTFS, Microsoft a quanto pare non lo usa, Mac OS X visualizza gli UUID delle partizioni. Non c'è molto commento sull'UUID delle partizioni NTFS.

Una precisione sull'offset UUID nella MFT di un volume NTFS, 3320 o 3352. La differenza deriva dall'origine della formattazione. Se si formatta un hdd o un vhd da Microsoft Windows, l'offset per l'UUID nella MFT sarà 3352 byte dall'inizio della MFT. Se si formatta un volume o VHD da Mac OS X, con Diskutil l'offset dell'UUID sarà 3320 byte dall'inizio della MFT. Tutto questo per un volume (o VHD) NTFS, ovviamente
Link to comment
Share on other sites

  • 1 month later...

Ciao a tutti,

Sotto, la funzione "long NTFSGetUUID (CICell ih, char * uuidStr)" è stata modificata per visualizzare l'UUID effettivo di una partizione o di un volume NTFS, tutte le funzioni elencate sono in "

~/chameleon/branches/ErmaC/Enoch/i386/libsaio/ntfs.c

 

".

Per chiamare la funzione

Definisci ih, CICell ih;

e

char uuidstr [40];

Ho creato la chiamata della funzione in "void NTFSGetDescription (CICell ih, char * str, long strMaxLen)"
 
Quote

NTFSGetUUID(ih, uuidstr);


 

Quote

 

long NTFSGetUUID(CICell ih, char *uuidStr)
{
bool NTFSProbe(const void*);

long long mftOffset;

char sero[20];

const unsigned char bufff[32];
    struct bootfile *boot;
    void *buf = malloc(MAX_BLOCK_SIZE);
    if ( !buf )
    {
        return -1;
    }
    bzero(buf,MAX_BLOCK_SIZE);

    /*
     * Read the boot sector, check signatures, and do some minimal
     * sanity checking.     NOTE: the size of the read below is intended
     * to be a multiple of all supported block sizes, so we don't
     * have to determine or change the device's block size.
     */
    Seek(ih, 0);
    Read(ih, (long)buf, MAX_BLOCK_SIZE);

    boot = (struct bootfile *) buf;

    // Check for NTFS signature
    if ( memcmp((void*)boot->bf_sysid, NTFS_BBID, NTFS_BBIDLEN) != 0 )
    {
        // If not NTFS, maybe it is EXFAT
        free(buf);
        return EXFATGetUUID(ih, uuidStr);
    }

    // Check for non-null volume serial number

    if( !boot->bf_volsn )
    {
        free(buf);
        return -1;
    }

    free(buf);

    sprintf(sero,"%016llx",boot->bf_volsn);

    sprintf(sero,"%c%c%c%c-%c%c%c%c-%c%c%c%c-%c%c%c%c",sero[0],sero[1],sero[2],sero[3],sero[4],sero[5],sero[6],sero[7],sero[8],sero[9],sero[10],sero[11],sero[12],sero[13],sero[14],sero[15]);

    verbose("Numero de Serie %s\n " ,sero);

    mftOffset = (boot->bf_mftcn * boot->bf_bps * boot->bf_spc);

    bzero((void*)bufff,32);

    bzero(uuidStr,40);
    
    Seek(ih, mftOffset);

    Read(ih, (long)bufff, 5);
    
  if((unsigned char )bufff[4]==0x30)
        mftOffset = (mftOffset + 3352);
    else
        mftOffset = (mftOffset + 3320);

    bzero((void*)bufff,32);

    Seek(ih, mftOffset);

    Read(ih, (long)bufff,16);


    snprintf(uuidStr,
             37,
             "%02X%02X%02X%02X-"
             "%02X%02X-"
             "%02X%02X-"

             "%02X%02X-"
             "%02X%02X%02X%02X%02X%02X",
             bufff[3], bufff[2], bufff[1], bufff[0],
             bufff[5], bufff[4],
             bufff[7], bufff[6],
             bufff[8], bufff[9],
             bufff[10], bufff[11], bufff[12], bufff[13], bufff[14], bufff[15]);

    verbose("UUID : %s\n\n" ,uuidStr);

         return 0;
}

 

 

 

 

Edited by deek5
Link to comment
Share on other sites

  • 3 weeks later...

Hi Ermac

1. Can Enoch dump virgin dsdt/ssdt like clover? somehow the dsdt linux and windows different..
2. The SkipNvidiaGfx s could stop optimus? i  usually removed the kext Geforce kext ad NV kext, otherwise it will no run. yes i need to kill it via dsdt....
3. The HDAEnabler in 2700 built somehow it not replaced the layoutid, apple-layoutid, and alc-layoutid. it stay on 7 and 0c/12 eventhough has set to 03000000 in com.chameleon.boot.plist. i had use the dsdt patch directly.
4. Does it work with lilu and applealc ? (need -lilubeta -alcbeta -kext-dev-mode=1 ?)
5. Does it patch the vanilla kext via plist like clover for applehda?
6. Does it has macOS Native CPU/IGPU Power Management like Plugintype=yes?
 

 

UPDATE: just tested

2. the nvidia off still need dsdt patches.

3. HDAEnabler can't change directly if had layoutid dsdt patches at mbr partition

4. it works well with lilu and applealc, i am suing flag kernel -kext-dev-mode=1 -lilubeta -alcbeta , so none patches to applehda

 

5. can it do kext patches to wifi io kext, especially i had 9285 (8211 bluetooth + 9002 Wifi)

 

 

----


1. Può Enoch scaricare vergine dsdt / ssdt come trifoglio? in qualche modo il dsdt linux e windows diversi ..
2. SkipNvidiaGfx s potrebbe fermare optimus? di solito ho rimosso il kext Geforce kext ad NV kext, altrimenti non funzionerà. sì ho bisogno di ucciderlo via dsdt ....
3. L'HDAEnabler nel 2700 ha costruito in qualche modo non sostituito il layoutid, apple-layoutid e alc-layoutid. rimane su 7 e 0c / 12 anche se è impostato su 03000000 in com.chameleon.boot.plist. ho usato direttamente la patch dsdt.
4. Funziona con lilu e applealc? (necessario -lilubeta -alcbeta -kext-dev-mode = 1?)
5. Applica la vaniglia kext tramite plist come il trifoglio per applehda?
6. Ha MacOS Native CPU / IGPU Power Management come Plugintype = sì?

 

Edited by Babiloe
Link to comment
Share on other sites

  • 4 months later...
On 6/20/2018 at 10:43 AM, deek5 said:

 

 

 

 

 

Buongiorno,
per essere più preciso e sicuro di trovare l'offset UUID di una partizione NTFS (3352 o 3320 potrebbero non riuscire a seconda dell'applicazione utilizzata per formattare in NTFS) Ho trovato l'offset UUID a 3324 byte. Quindi, per l'effettivo offset di un UUID, ho cercato qualsiasi formattazione, un elemento comune a tutte le partizioni NTFS, sapendo che l'UUID è dopo 3300 byte dell'offset della MFT. l'elemento comune è "(" o 0x28 in esadecimale, si trova dopo "$ V olume", questo "(" si trova 20 byte dall'UUID.) Per trovare l'UUID prendo un campione di 40 byte dopo i ($ MFT +3300) byte, faccio un confronto di caratteri trovo il "(" e aggiungo 20 byte, che mi consente per il momento di trovare l'offset dell'UUID di una partizione NTFS.

Di conseguenza, ho cambiato la funzione "long NTFSGetUUID (CICell ih, char * uuidStr)"

 

/chameleon/branches/ErmaC/Enoch/i386/libsaio/ntfs.c

 

 

long NTFSGetUUID(CICell ih, char *uuidStr)
{

 

    bool NTFSProbe(const void*);

   

long long mftOffset;
    
    int i=0;

    char sero[20];

   

const unsigned char bufff[32];
    
    struct bootfile *boot;
    
    void *buf = malloc(MAX_BLOCK_SIZE);
    
    if ( !buf )
    {
        return -1;
    }

 

    bzero(buf,MAX_BLOCK_SIZE);

 

    /*
     * Read the boot sector, check signatures, and do some minimal
     * sanity checking.     NOTE: the size of the read below is intended
     * to be a multiple of all supported block sizes, so we don't
     * have to determine or change the device's block size.
     */

 

    Seek(ih, 0);
 

    Read(ih, (long)buf, MAX_BLOCK_SIZE);

 

    boot = (struct bootfile *) buf;

 

    // Check for NTFS signature
    if ( memcmp((void*)boot->bf_sysid, NTFS_BBID, NTFS_BBIDLEN) != 0 )
    {
        // If not NTFS, maybe it is EXFAT
        free(buf);
        return EXFATGetUUID(ih, uuidStr);
    }

    // Check for non-null volume serial number
    if( !boot->bf_volsn )
    {
        free(buf);
        return -1;
    }
    free(buf);

    sprintf(sero,"%016llx",boot->bf_volsn);
    sprintf(sero,"%c%c%c%c-%c%c%c%c-%c%c%c%c-%c%c%c%c",sero[0],sero[1],sero[2],sero[3],sero[4],sero[5],sero[6],sero[7],sero[8],sero[9],sero[10],sero[11],sero[12],sero[13],sero[14],sero[15]);
    verbose("Numero de Serie %s\n " ,sero);

    mftOffset = (boot->bf_mftcn * boot->bf_bps * boot->bf_spc)+3300;
 
    bzero((void*)bufff,32);
    
    bzero(uuidStr,40);
    
    
    Seek(ih, mftOffset);
    
    Read(ih, (long)uuidStr, 40);
 
    for (i=0;i<34;i++)
    {
        if((unsigned char )
uuidStr ==0x28)
        {
        
            mftOffset = (mftOffset+i+20);
            break;
        }
    }
  
    bzero(uuidStr,40);
    
    bzero((void*)bufff,32);
    
    Seek(ih, mftOffset);
    
    Read(ih, (long)bufff,16);


    snprintf(uuidStr,
             37,
             "%02X%02X%02X%02X-"
             "%02X%02X-"
             "%02X%02X-"

             "%02X%02X-"
             "%02X%02X%02X%02X%02X%02X",
             bufff[3], bufff[2], bufff[1], bufff[0],
             bufff[5], bufff[4],
             bufff[7], bufff[6],
             bufff[8], bufff[9],
             bufff[10], bufff[11], bufff[12], bufff[13], bufff[14], bufff[15]);

 

    verbose("UUID : %s\n\n" ,uuidStr);
 

         return 0;
}

 

 

 

 

 

Edited by deek5
Link to comment
Share on other sites

  • 4 weeks later...
Ciao, per trovare in realtà l'UUID di una partizione NTFS, mi sono rassegnato ad utilizzare lo strumento di Microsoft, già utilizzato da attributo "NTFS_A_VOLUMENAME" nel file "Enoch / i386 / libsaio / ntfs.c" in function "void NTFSGetDescription (", ho scelto praticamente gli stessi elementi con

"#define OBJECT_ID 0x40"
    void * ObjectIDAttr = NULL;
    
    size_t ObjectIDSize = 0;
       const unsigned char * uuidstr1;
    
    char uuidstr [40];

    
    mftOffset = ((boot> bf_mftcn boot - *> * boot-bf_bps> bf_spc) + ((1 << - ((int8_t) boot> bf_mftrecsz)) * NTFS_VOLUMEINO));
    
    
    Cerca (ih, mftOffset);
    
    Leggi (IH (lungo) buf, (1 << - ((int8_t) boot> bf_mftrecsz)));
    
    
    if (ntfs_find_attr (BUF, OBJECT_ID, e ObjectIDAttr, e ObjectIDSize) == 0)
    {
        
        Bzero (uuidstr, 40);
        
        static char msg [40] = "";
        
        memcpy (uuidstr, ObjectIDAttr, (int) ObjectIDSize);
        
        uuidstr1 = (unsigned char *) uuidstr;
        
        snprintf (msg, 37, "% 02X% 02X% 02X% 02X 02X - %%% 02X- 02X 02X - %%% 02X- 02X% 02X% 02X% 02X% 02X% 02X% 02X", uuidstr1 [3], uuidstr1 [2], uuidstr1 [1], uuidstr1 [0], uuidstr1 [5], uuidstr1 [4], uuidstr1 [7] uuidstr1 [6], uuidstr1 [8] uuidstr1 [9] uuidstr1 [10] uuidstr1 [11] uuidstr1 [12] uuidstr1 [13] uuidstr1 [14] uuidstr1 [15]);
        
        verbose ("UID ID oggetto NTFS:% s \ n", msg);
    }
Riutilizzando ntfs_find_attr (
 
Ottengo l'offset dell'UUID e dell'UUID stesso.
sotto la chiamata della funzione "long NTFSGetUUID (CICell ih, char * uuidStr)" e la funzione stessa

    

"
utf_encodestr( nameAttr, nameSize / 2, (u_int8_t *)str, strMaxLen, OSLittleEndian );
    
    verbose("\nPartition NTFS %s\n",str);
   
    NTFSGetUUID(ih, uuidstr);
error:
    if (buf)
    {
        free(buf);
    }
    return;
}

"
long NTFSGetUUID(CICell ih, char *uuidStr)
{
    bool NTFSProbe(const void*);

    long long mftOffset;

    char sero[20];
 
    struct bootfile *boot;
    
    void *ObjectIDAttr=NULL;
    
    size_t ObjectIDSize=0;
    
    const unsigned char *uuidstr1;
    
    char uuidstr[40];
    

    void *buf = malloc(MAX_BLOCK_SIZE);
    
    if ( !buf )
    {
        return -1;
    }

    bzero(buf,MAX_BLOCK_SIZE);

    /*
     * Read the boot sector, check signatures, and do some minimal
     * sanity checking.     NOTE: the size of the read below is intended
     * to be a multiple of all supported block sizes, so we don't
     * have to determine or change the device's block size.
     */
    Seek(ih, 0);
    Read(ih, (long)buf, MAX_BLOCK_SIZE);

    boot = (struct bootfile *) buf;

    // Check for NTFS signature
    if ( memcmp((void*)boot->bf_sysid, NTFS_BBID, NTFS_BBIDLEN) != 0 )
    {
        // If not NTFS, maybe it is EXFAT
        free(buf);
        return EXFATGetUUID(ih, uuidStr);
    }

    // Check for non-null volume serial number
    if( !boot->bf_volsn )
    {
        free(buf);
        return -1;
    }

    sprintf(sero,"%016llX",boot->bf_volsn);
 
    sprintf(sero,"%c%c%c%c-%c%c%c%c-%c%c%c%c-%c%c%c%c",sero[0],sero[1],sero[2],sero[3],sero[4],sero[5],sero[6],sero[7],sero[8],sero[9],sero[10],sero[11],sero[12],sero[13],sero[14],sero[15]);
    
    verbose("Numero de Serie %s\n " ,sero);
    
    
    mftOffset = ((boot->bf_mftcn * boot->bf_bps * boot->bf_spc)+((1 << - ((int8_t) boot->bf_mftrecsz)) * NTFS_VOLUMEINO));
    
    
    Seek(ih, mftOffset);
    
    Read(ih, (long)buf, (1 << - ((int8_t) boot->bf_mftrecsz)));
    
    
    if(ntfs_find_attr(buf, OBJECT_ID, &ObjectIDAttr, &ObjectIDSize) == 0)
    {
              
        bzero(uuidstr,40);  
        
        static char msg[40] = "";
        
        memcpy(uuidstr,ObjectIDAttr,(int)ObjectIDSize);
        
        uuidstr1 = (unsigned char *) uuidstr;
        
        snprintf(msg, 37,"%02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X%02X%02X%02X%02X",uuidstr1[3], uuidstr1[2], uuidstr1[1], uuidstr1[0],uuidstr1[5], uuidstr1[4],uuidstr1[7], uuidstr1[6],uuidstr1[8], uuidstr1[9], uuidstr1[10], uuidstr1[11], uuidstr1[12], uuidstr1[13], uuidstr1[14], uuidstr1[15]);
        
        
        verbose("NTFS ObjectID UUID : %s \n",msg);
    }
    
     
     
    free(buf);

    
    return 0;
}

 

ntfs.c

Edited by deek5
Link to comment
Share on other sites

  • 1 month later...
On 5/2/2012 at 11:38 AM, ErmaC said:

Enoch Bootloader The son of Chameleon

by ErmaC

Introduzione:

  Reveal hidden contents

Tutti sappiamo che per utilizzare (avviare aka=boot) un sistema operativa abbiamo bisogno di un bootloader.

L'utilizzo di un bootloader in ambienti Winzoz avviene in maniera transparente, ma anche in questo caso è presente un "programma" che si occupa
di avviare e fornire determinate informazioni al Sistema operativo in modo schematico.

In ambiente HackMacintosh avviene la stessa cosa anche se in modo molto più visibile.

Cerco di non dilungarmi più di tanto... (vuole essere una piccola introduzione).
Chameleon.png
Chameleon è presentato in differenti versioni:

  • La trunk:
    La trunk viene definita come versione stabile e come prodotto finale.
  • Le varie sotto branches:
    Le branches sono delle "varianti" al progetto principale come la "trunk",
    tali varianti possono essere esperimenti, miglioramenti, personalizzazioni, ecc.... in fase di test da parte dei programmatori
    appartenenti al Team di sviluppo.

Essendo io stesso collaboratore del Team di Chameleon, ho "realizzato" nel corso del tempo la mia
versione personalizzata, la quale ritengo abbastanza matura e stabile.
Essa include (o meglio è) per quasi totalità il medesimo codice sorgente della trunk ma con personalizzazioni, miglioramenti e patch
a volte proposte dagli utilizzatori tramite il sistema delle issue.

 

========================================

Aggiornamento :
Per cortesia non postare questi file su altri server e non rielaborarli per altre distribuzioni, grazie.

========================================

Le KeyFlag di Enoch per l'org.chameleon.Boot.plist:

  • IntelCapriFB settato con un valore compreso tra 0 e 11 (FB per le Intel HD4000)
  • IntelAzulFB settato con un valore compreso tra 0 e 15 (FB per le Intel Haswell)
  • IntelBdwFB  settato con valore compreso tra 0 e 18  (FB per le Intel Broadwell)
  • NvidiaGeneric settato su Yes nel o.c.B.p visualizza il nome generico per le schede grafiche nVidia (GraphicsEnbler)
  • EnableDualLink settato su Yes nel o.c.B.p inietta il valore AAPL00,DualLink sia nVidia che ATi (GraphicsEnbler)
  • SkipIntelGfx settato su Yes nel o.c.B.p salta il riconoscimento delle schede grafiche Intel (GraphicsEnbler)
  • SkipNvidiaGfx settato su Yes nel o.c.B.p salta il riconoscimento delle schede grafiche nVidia (GraphicsEnbler)
  • SkipAtiGfx settato su Yes nel o.c.B.p salta il riconoscimento delle schede grafiche AMD/Ati (GraphicsEnbler)
  • USBInject settato su Yes nel o.c.B.p assegna valori alle tipologie di USB incontrate (UHCI/OHCI/EHCI/XHCI)
  • EnableBacklight settato su Yes nel o.c.B.p abilita il Backlight © a Marchrius (GraphicsEnbler)
  • EnableWifi settato su Yes nel o.c.B.p setta i device wifi come Built-In

Le KeyFlag di Enoch per l'smbios.plist

  • SMboardtype settato su 11 (congiuntamente a un MacProX.1) nel smbios.plist visualizza il numero slot processore in System Profiler

========================================

Caratteristiche in lavorazione:

--------------------

  • HDA.pngAbilitazione Audio HDAEnabler senza ausilio di HDEF nel DSDT o HDAEnabler.kext TESTING
      Reveal hidden contents

    Modulo HDAEnabler.dylib
    Modulo_Chamelon.png
    Questo modulo permette l'iniezione del valore dato al layout-it per l'HDEF e per HDAU dei controller audio.
    Il vantaggio dato dall'utilizzo e dovuto al semplice utilizzo e non è più necessario mettere mano al DSDT,
    infatti copiando il modulo nella cartella /Extra/modules e utilizzando le chiavi HDAEnabler=Yes
    in combinazione con HDEFLayoutID=un valore decimale per l'HDEF e HDALayoutID=un valore decimale per l'HDAU,
    il modulo si prenderà cura di iniettare il layout-id specificato per l'abilitazione del controller audio.
    =====
    Esempio

    
    
    <key>HDAEnabler</key>
    <string>Yes</string>
    <key>HDEFLayoutID</key>
    <string>12</string>
    <key>HDAULayoutID</key>
    <string>12</string>

     

    --------------------

  • nvidia.png Riconoscimento del subvendorId e subdeviceId anche per le schede nVidia COMPLETATO
      Reveal hidden contents

    Che beneficio porterebbe tale Features?
    A livello prestazione non cambia nulla, avremo nel nostro "Informazioni su questo Mac" visualizzata la scheda esatta montata dalla macchina.
    Esempio invece di avere mostrata una scheda generica della stessa famiglia verrebbe visualizzata la marca esatta
    Da:

    
    
    GeForce GTX 260M

    A:

    
    
    Dell GeForce GTX 260M

    Come procedere?
    In questo allegato sono presenti i binari compilati (Xcode4.5.2) con l'aggiunta della caratteristica descritta in precedenza.
    - (Consiglio vivamente di reinstallare tutti e tre i binari, specialmente se arrivate da una versione diversa di chameleon)
    Installati i binari, riavviate.
    Aprite Chameleon Wizard e spostatevi nella TAB bdmesg (potreste fare tale operazione anche da terminale con bdmesg).
    A questo punto avrete un "output" di log simile a questo:
     


    Ho evidenziato in blu la parte interessata, attualmente ho inserito diversi subId per alcune schede, è probabile che non noterete alcuna differenza...
    questo perché la vostra scheda "esatta" non è ancora presente nell'elenco.

    Postate tale porzione di output con una descrizione della scheda (ad esempio se ha un nome particolare ... il nome sulla confezione ad esempio?)
    Anche il quantitativo di memoria effettiva è importante (in alcuni modelli la memoria posseduta non è calcolata correttamente)

    Il codice sorgente di tale features verrà aggiornato sull'svn appena avrò collezionato un numero significativo di subsID oltreché a feedback positivi sul funzionamento.

     

    --------------------

  • nvidia.pngHDMI.png Abilitazione Connessioni HDMi su schede nVidia e Ati. COMPLETATO

========================================

Fabio

 

Link to comment
Share on other sites

  • 9 months later...
  • 7 months later...
 Share

×
×
  • Create New...