#129 T440p IFD and General IFD Stuff

Geschlossen
vor 2 Jahren geöffnet von shmalebx9 · 1 Kommentare
shmalebx9 kommentierte vor 2 Jahren

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 kommentierte vor 2 Jahren
Ersteller

Closed by #140

Closed by #140
shmalebx9 hat vor 2 Jahren geschlossen
Anmelden, um an der Diskussion teilzunehmen.
Kein Label
Kein Meilenstein
Niemand zuständig
1 Beteiligte
Laden…
Abbrechen
Speichern
Hier gibt es bis jetzt noch keinen Inhalt.