diff --git a/2022/coreboot.md b/2022/coreboot.md index 04ccb3b..a83e931 100644 --- a/2022/coreboot.md +++ b/2022/coreboot.md @@ -65,9 +65,9 @@ nihonium@delta/~/T530$ cd coreboot nihonium@delta/~/T530/coreboot$ git submodule update --init --checkout ``` Мы можем собрать toolchain для сборки coreboot, чтоб результат был воспроизводим не только на нашем устройстве (или чтоб собрать образ, сидя на другой архитектуре, например, на малине): - ``` +``` nihonium@delta/~/T530/coreboot$ make crossgcc-i386 CPUS=$(nproc) - ``` +``` Но я собирал, используя системный toolchain, пользуясь тем, что в Artix все пакеты свежие (вот и пригодился Arch-based!). Очевидно, собрать на малине таким образом образ для ThinkPad'а не выйдет, так что там обязателен данный шаг! ### Знакомимся с CH341A @@ -119,18 +119,18 @@ Found Macronix flash chip "MX25L6406E/MX25L6408E" (8192 kB, SPI) on ch341a_spi. Found Macronix flash chip "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E" (8192 kB, SPI) on ch341a_spi. Multiple flash chip definitions match the detected chip(s): "MX25L6405", "MX25L6405D", "MX25L6406E/MX25L6408E", "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E" Please specify which chip definition to use with the -c option. - ``` +``` Наш чип - "MX25L6406E/MX25L6408E", дальше подставляем эту строку при считывании/записи. ![Крепление прищепки к чипу](https://nekoea.red/wrfreely-images/clip.cleaned.jpg) Если чип стабильно читается, то идем в каталог bios-backup и считываем левый чип (SPI1): - ``` +``` nihonium@delta/~/T530$ cd bios-backup nihonium@delta/~/T530/bios-backup$ sudo flashrom -p ch341a_spi -r factory_spi1-1.bin -c "MX25L6406E/MX25L6408E" nihonium@delta/~/T530/bios-backup$ sudo flashrom -p ch341a_spi -r factory_spi1-2.bin -c "MX25L6406E/MX25L6408E" nihonium@delta/~/T530/bios-backup$ sha512sum factory_spi1-* - ``` +``` Мы два раза считываем один чип, а затем проверяем, совпадают ли хеши этих двух файлов. Если хеши совпадают, то идем дальше. Делаем такую же операцию для правого чипа (SPI2). @@ -147,14 +147,14 @@ Found Macronix flash chip "MX25L3206E/MX25L3208E" (4096 kB, SPI) on ch341a_spi. Found Macronix flash chip "MX25L3273E" (4096 kB, SPI) on ch341a_spi. Multiple flash chip definitions match the detected chip(s): "MX25L3205(A)", "MX25L3205D/MX25L3208D", "MX25L3206E/MX25L3208E", "MX25L3273E" Please specify which chip definition to use with the -c option. - ``` +``` Наш чип - "MX25L3206E/MX25L3208E". Если все в порядке, идем считывать правый чип: - ``` +``` nihonium@delta/~/T530/bios-backup$ sudo flashrom -p ch341a_spi -r factory_spi2-1.bin -c "MX25L3206E/MX25L3208E" nihonium@delta/~/T530/bios-backup$ sudo flashrom -p ch341a_spi -r factory_spi2-2.bin -c "MX25L3206E/MX25L3208E" nihonium@delta/~/T530/bios-backup$ sha512sum factory_spi2-* - ``` +``` Так же сверяем суммы, если все совпадает - идем дальше. Снимаем программатор, **папку bios-backup сохраняем в надежном месте.** @@ -246,14 +246,14 @@ nihonium@delta/~/T530/coreboot$ make nconfig - Add a payload (Tianocore coreboot payload package) - Tianocore payload (CorebootPayload) - Secondary Payloads (None) - ``` +``` Особое внимание следует уделить параметру payloads/Tianocore payload. Тут необходимо выбрать именно этот пункт, т.к. [иные версии Tianocore чаще всего не работают на ThinkPad'ах](https://www.reddit.com/r/coreboot/comments/rilew7/tianocore_upstream_vs_uefipayload_vs/). Но из-за "старости" кода в данном варианте, нам надо поставить python2 и разрулить пару проблем с gcc. Ставим второй питон и начинаем сборку. ``` nihonium@delta/~/T530/coreboot$ sudo pacman -S python2 nihonium@delta/~/T530/coreboot$ make CPUS=$(nproc) - ``` +``` Скорее всего, посреди сборки вылезет ошибка gcc с жалобами на vla-parameter. Делаем вот такой финт: ```