#129 T440p IFD and General IFD Stuff

Zavřený
otevřeno před 2 roky uživatelem shmalebx9 · 1 komentářů
shmalebx9 okomentoval před 2 roky

The blobs script in the existing build system works just fine, it extracts all of the blobs including the me and ifd from the existing rom. As I was creating the new system which grabs blobs automatically, I did manage to find a valid ME bin from lenovo and extract it normally (the me_extract function should theoretically work for ALL me update exes actually). The IFD however, can only be extracted from the existing rom and dropped into the build system. Unfortunately, the me update contains an me binary that is slightly larger than the original me. Basically, when you try to add the new (valid) me into the build system, coreboot will error out complaining: Region Intel ME is 118784(0x1d000) bytes. File is 122880(0x1e000) bytes It seems therefore, that if we want to have the me downloaded automatically, then we have to create a new ifd with an enlarged me region.

Interestingly, ifdtool from coreboot can modify ifds using a flashrom layout file with the -n option, and can extract a flashrom layout file from an ifd with the -f option. With that in mind, it shouldn't be too difficult to simply modify the existing ifd by extracting the flashrom layout file, modifying the regions, and then updating the existing ifd. If this can be done, then it can also be automated. If in the future, we find other boards with mismatched blobs like this, then it would be trivial to create ifds using any donor board without parsing intel's documentation.

The blobs script in the existing build system works just fine, it extracts all of the blobs including the me and ifd from the existing rom. As I was creating the new system which grabs blobs automatically, I did manage to find a valid ME bin from lenovo and extract it normally (the me_extract function should theoretically work for ALL me update exes actually). The IFD however, can only be extracted from the existing rom and dropped into the build system. Unfortunately, the me update contains an me binary that is slightly larger than the original me. Basically, when you try to add the new (valid) me into the build system, coreboot will error out complaining: `Region Intel ME is 118784(0x1d000) bytes. File is 122880(0x1e000) bytes` It seems therefore, that if we want to have the me downloaded automatically, then we have to create a new ifd with an enlarged me region. Interestingly, ifdtool from coreboot can modify ifds using a flashrom layout file with the `-n` option, and can extract a flashrom layout file from an ifd with the `-f` option. With that in mind, it shouldn't be too difficult to simply modify the existing ifd by extracting the flashrom layout file, modifying the regions, and then updating the existing ifd. If this can be done, then it can also be automated. If in the future, we find other boards with mismatched blobs like this, then it would be trivial to create ifds using any donor board without parsing intel's documentation.
shmalebx9 okomentoval před 2 roky
Autor

Closed by #140

Closed by #140
Přihlaste se pro zapojení do konverzace.
Bez štítku
Bez milníku
Bez zpracovatele
1 účastníků
Načítání...
Zrušit
Uložit
Není zde žádný obsah.