#129 T440p IFD and General IFD Stuff

クローズ
2 年 前shmalebx9 によって開かれました · 1 コメント
shmalebx92 年 前 にコメントしました

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.
shmalebx92 年 前 にコメントしました
ポスター

Closed by #140

Closed by #140
shmalebx9 2 年 前 に閉じられました
会話に参加するには サインイン してください。
ラベルなし
マイルストーンなし
担当者なし
1 参加者
読み込み中…
キャンセル
保存
まだコンテンツがありません