Всё разбирается на примере Lenovo x220 с уже прошитым Coreboot и установленной Ubuntu. Blob уже файлы извлечены.
Для работы с Linux Coreboot надо подсунуть просто три blob файла из оригинальной прошивки
- flashregion_0_flashdescriptor.bin
- flashregion_2_intel_me.bin
- flashregion_3_gbe.bin
Linux’у не требуется VGA драйвер BIOS для загрузки, а вот Windows без этого не может.
Последовательность действий:
sudo apt install -y bison build-essential curl flex git gnat-5 libncurses5-dev m4 zlib1g-dev
git clone https://review.coreboot.org/coreboot
cd coreboot
git submodule update --init --checkout
mkdir -p 3rdparty/blobs/mainboard/lenovo/x220
Копируем и переименовываем в эту директорию три уже извлечённых blob файла descriptor.bin, me.bin, gbe.bin.
Теперь надо добыть VGA драйвер.
Первый вариант, это взять уже извлечённый другими людьми, например можно взять вот здесь или здесь.
MD5 у этих файлов совпадают
koala@x220 ~/test123> sha512sum *
10c34086586f67ed76cb286b7918d5f372fd7a4d1f67e685946a9f1f7a43be903a435b1e186dcf3339c8faa6656bc69c395b5ce10a56ab38d309f251e31b00f4 vga-8086-0126-1.bin
10c34086586f67ed76cb286b7918d5f372fd7a4d1f67e685946a9f1f7a43be903a435b1e186dcf3339c8faa6656bc69c395b5ce10a56ab38d309f251e31b00f4 vga-8086-0126-2.bin
Второй вариант — это извлечь самостоятельно из своей оригинальной прошивки.
Сделать это можно несколькими способами. Разберём самый простой. Используем утилиту UEFITool, проще всего будет собрать из репозитория:
sudo apt install qt5-default build-essential
git clone https://github.com/LongSoft/UEFITool
cd UEFITool
qmake uefitool.pro && make
После сборки можно запускать ./UEFITool
Откроется графический интерфейс, в котором надо выбрать файл прошивки File — Open image file
Находим нужный драйвер File — Search — Text, снимаем галочку с Unicode и ищем “VGA Compatible BIOS”.
Щёлкаем на найденном файле, откроется в главном окне и уже там в контекстном меню — Extract as is.
Сохраняем в каталог, где уже лежат остальные blob 3rdparty/blobs/mainboard/lenovo/x220/
Мой файл получился с такой же MD5 хэш суммой, как у двух других людей.
koala@x220 ~/N/B/x220> sha512sum vgabios.bin
10c34086586f67ed76cb286b7918d5f372fd7a4d1f67e685946a9f1f7a43be903a435b1e186dcf3339c8faa6656bc69c395b5ce10a56ab38d309f251e31b00f4 vgabios.bin
Второй важный шаг — это задать этот драйвер в nconfig
make nconfig
Devices
│ [*] Add a VGA BIOS image │
│ (3rdparty/blobs/mainboard/$(MAINBOARDDIR)/vgabios.bin) VGA BIOS path and filename │
│ (8086,0126) VGA device PCI IDs
Дальше, как обычно, сохраняем F6 и выходим F9.
Компилируем Coreboot
make crossgcc-i386 CPUS=4
make iasl
make
Прошиваем
sudo flashrom -p internal:laptop=force_I_want_a_brick -c MX25L6405 -w build/coreboot.rom
Драйвер у меня заработал не с первого раза. Сначала я пытался его подсунуть в каталог с Coreboot, где до этого уже собирал без него. Заработало только с чистой репой Coreboot, где первая компиляция была уже с всеми подготовленными blob файлами.
Мой телеграм-канал.