Паранойя на марше: замена BIOS на Coreboot ¶
By: Weesah1s on 2019-03-22 22 ч.
Re: Паранойя на марше: замена BIOS на Coreboot
tolikmsk пишет:libreboot.org/docs/hardware/gm45_remove_me.html#write-protecting-the-flash-chip
Спасибо.
Ну, там описывается способ для стабильной ветки libreboot (суть - пропатчить утилиту, которая генерирует флеш-дескриптор, чтобы она проставила нужные биты). Во первых для coreboot это не подойдет, там для тех же целей, для libreboot-compatible моделей используется утилита util/bincfg, во вторых на sandybridge/ivybridge надо не только в дескрипторе биты проставлять.
Смотрите, перед прошивкой вы ведь берете оригинальный дамп и разбираете его через ifdtool -x на разные куски (descriptor, gbe, me и тд). Потом вы копируете эти бинарики в папку 3rdpary/blobs/... как описано в ОП-посте. (Кстати это просто путь по умолчанию, который прописывается в конфиг, когда включается опция "Add Intel descriptor.bin file", можно и не копировать в папку 3rdparty ничего, а просто прописать туда свой абсолютный путь к файлам.) Вот раздел descriptor - и есть тот самый intel flash descriptor, сокращенно ifd, это первые 4096 байт флеш чипа и в числе прочего там есть биты прав доступа. Там можно разблокировать/заблокировать доступ к самому дескриптору и региону ME. Есть утилита util/ifdtool, которая всем этим занимается, советую запустить ifdtool -h и почитать хелп. А вот раздел bios, как я понимаю, всегда разблокирован относительного дескриптора, и там нужен другой способ, объясню ниже. Так вот, сборочные скрипты используют эти блобы, которые вы скопировали. В конфиге coreboot в разделе Chipset есть настройка "Protect flash regions", по умолчанию она установлена в значение "Unlock flash regions". Это значит что в этом случае сборочные скрипты coreboot возьмут этот ваш дескриптор, и все биты на запись там разблокируют (скорее всего настройка делает то же что и запуск ifdtool -u). Другое значение - "Lock ME/TXT section" (скорее всего делает то же что и запуск ifdtool -l). И последнее значение - "Use the preset values...", в этом случае дескриптор не будет модифицироваться, то есть если вы ему подсунули залоченный дескриптор, который только что извлекли из дампа заводского BIOS, то он так и останется залоченным. В общем, с этой настройкой понятно - можно либо использовать заводской дескриптор и использовать настройку "Use the preset values", либо любой, и настройку "Lock ME/TXT section".
Теперь еще одна важная, даже более важная, опция. В том же разделе есть настройка "Lock down chipset in coreboot" (вроде как включена по умолчанию) и ниже настройка "Flash locking during chipset lockdown" с тремя вариантами - "Don't lock flash sections", "Write-protect all flash sections" и "Write-protect all flash sections and read-protect non-BIOS sections". Думаю суть и так понятна из названий. Ставим второе или третье значение, и тогда нельзя будет прошить чип программно (из операционной системы). Насколько я понимаю, это проставляет бит FLOCKDN = 1 в регистре HSFS, который запрещает модификацию регистров SPI, через которые и идет программная запись.
После этого для обновления coreboot потребуется разбирать ноут и прошивать как в первый раз. Так что лучше, пожалуй, сразу это не включать - все оттестировать, наладить чтобы все работало, и в финале уже прошить залоченный образ.