#129 T440p IFD and General IFD Stuff

Kapalı
shmalebx9 tarafından 2 yıl önce kere açıldı · 1 yorum
shmalebx9 2 yıl önce olarak yorumlandı

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 2 yıl önce olarak yorumlandı
Poster

Closed by #140

Closed by #140
Giriş yap bu konuşmaya katılmak için.
Etiket Yok
Kilometre Taşı Yok
Atanan Kişi Yok
1 Katılımcı
Yükleniyor...
İptal
Kaydet
Henüz bir içerik yok.