#129 T440p IFD and General IFD Stuff

Closed
opened 2 years ago by shmalebx9 · 1 comments

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 commented 2 years ago
Poster

Closed by #140

Closed by #140
Sign in to join this conversation.
No Label
No Milestone
No assignee
1 Participants
Loading...
Cancel
Save
There is no content yet.