Всё разбирается на примере 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 файлами.
Мой телеграм-канал .