LINUX.ORG.RU

Coreboot на W541

 , ,


0

1

Решил прошить свой Thinkpad W541 на coreboot, плюсы сего действия понятны, однако именно по W541 манов в сети маловато. Успешно шил X230 на libreboot, но это мне мало помогло в плане опыта. Если у кого-то был/есть подобный опыт или знания - поделитесь пожалуйста. Неравнодушным заранее спасибо.

З.Ы. Насколько знаю, @SakuraKun в этом разбирается.



Последнее исправление: svidrigaylov (всего исправлений: 2)

svidrigaylov : в-основном я помогаю со сборкой опенсорсного БИОСа coreboot под AMD-без-PSP'шные платы вроде G505S / A88XM-E / AM1I-A - но иногда могу помочь и с интеловскими платформами. Напиши, если у тебя возникнут какие-то конкретные вопросы по сборке / установке, и я постараюсь помочь

SakuraKun ★★★★★
()
Ответ на: комментарий от anonymous

Проблемы свободных альтернатив BIOS/UEFI:

  • Неполная/неполноценная/кривая реализация ACPI;
    • Всё плохо с энергоэффективностью;
  • Неполная/неполноценная поддержка железа;
    • Не всё железо работает корректно;
  • Невозможность использовать BIOS+UEFI одновременно.
mord0d ★★★★★
()
Ответ на: комментарий от mord0d

Проблемы свободных альтернатив BIOS/UEFI

Нельзя так общо говорить :D Для разных материнских плат ситуация может различаться кардинально! Например, на AMD-без-PSP'шном ноуте Lenovo G505S - опенсорсный БИОС coreboot в разы лучше того глючного UEFI-гавнища которое было изначально прошито и не видело обновлений почти 10 лет ;-)

Неполная/неполноценная/кривая реализация ACPI;
Всё плохо с энергоэффективностью

Разницы по жору батарейки на G505S не заметил, может даже лучше стало

Неполная/неполноценная поддержка железа

У проприетарщины нет поддержки IOMMU, нет поддержки XMP / кастомных таймингов и многих других профессиональных фич - в то время как у coreboot'а на G505S это всё есть

Невозможность использовать BIOS+UEFI одновременно

Думаю, при желании можно собрать кастомный образ coreboot'а где в качестве дополнений были бы и SeaBIOS и Tianocore и какая-та минималистичная менюшка для выбора - но статистика выбора дополнений коребутчиками подтверждает что UEFI не нужен, по причинам указанным в этом комментарии , вот никто и не заморачивался

SakuraKun ★★★★★
()
Последнее исправление: SakuraKun (всего исправлений: 3)
Ответ на: комментарий от mord0d

Невозможность использовать BIOS+UEFI одновременно

то есть вариант, когда ни то, ни другое не нужно – ты в принципе не рассматриваешь?

У меня, например, x220 с grub payload.

Неполная/неполноценная поддержка железа;

Это какое это такое железо должен поддерживать стартовый загрузчик? Линукс с большинством периферийных устройств работает напрямую, без обращений к функциям bios.

demidrol ★★★★★
()
Ответ на: комментарий от SakuraKun

Для разных материнских плат ситуация может различаться кардинально! Например, на AMD-без-PSP’шном ноуте Lenovo G505S - опенсорсный БИОС coreboot в разы лучше того глючного UEFI-гавнища которое было изначально прошито и не видело обновлений почти 10 лет ;-)

Ты прав.

Неполная/неполноценная/кривая реализация ACPI; Всё плохо с энергоэффективностью

Разницы по жору батарейки на G505S не заметил, может даже лучше стало

Неполная/неполноценная поддержка железа

У проприетарщины нет поддержки IOMMU, нет поддержки XMP / кастомных таймингов и многих других профессиональных фич - в то время как у coreboot’а на G505S это всё есть

Ну, мои утверждения верны только для тех моделей, где они верны. (=

Думаю, при желании можно собрать кастомный образ coreboot’а где в качестве дополнений были бы и SeaBIOS и Tianocore и какая-та минималистичная менюшка для выбора

У меня было желание, я потратил много времени и даже успел убить плату, но так ничего и не добился. А потом один из авторов подтвердил что (по крайней мере на данный момент) это невозможно.

но статистика выбора дополнений коребутчиками подтверждает что UEFI не нужен

Ну вот мне нужен UEFI. И старый-добрый BIOS тоже.

по причинам указанным в этом комментарии

А вот тут полностью согласен!

mord0d ★★★★★
()
Ответ на: комментарий от demidrol

Невозможность использовать BIOS+UEFI одновременно

то есть вариант, когда ни то, ни другое не нужно – ты в принципе не рассматриваешь?

Я его не рассматривал потому что лично мне он не подходил, потому я его даже не пробовал и ничего по его поводу сказать не могу.

Линукс с большинством периферийных устройств работает напрямую, без обращений к функциям bios.

А причём здесь периферия (которую фирмварь не инициализирует, и не должен)? Речь идёт о лоулевеле, о котором ядро ОС ничего не знает (и знать не должно). Например, если BIOS/UEFI не анонсировало C-states, то МПХ тебе, а не сон, гибернация и/или режим ожидания. Гадать какие режимы поддерживаются ядро операционной системы не должно. Ты можешь это сделать вручную, но сохранности данных никто не гарантирует (именно поэтому гадание не входит в функционал ядра: даже если модель процессора определена, это не значит что определена верно).

Это какое это такое железо должен поддерживать стартовый загрузчик?

DIMM (в т.ч. DMA), PCIe lanes (иначе хрен тебе, а не периферия, лол), VGA, Ethernet, очень много всего.

mord0d ★★★★★
()
Ответ на: комментарий от SakuraKun

Думаю, при желании можно собрать кастомный образ coreboot’а где в качестве дополнений были бы и SeaBIOS и Tianocore и какая-та минималистичная менюшка для выбора

Хотеть онтопик консольку с сетью и бравзером без винта, иожет еще и какими текстовыми клиентами… желания не хватило на AMD+RS880, спотык на VGA-блобе.

anonymous
()
Ответ на: комментарий от SakuraKun

Уж не знаю, что я не так сделал.

Разобрал ноут, залил собранную прошивку, собрал, запустил.

Сперва гул кулера около 5 секунд, гул прекращается. Собственно на этом все, никаких других признаков жизни. Потом решил залить стоковую прошивку, заливаю и… да, тоже самое. Прошивал на 3.3В, CH341B. Этим-же программатором шил свой X230 и там все работает.

Какие версии произошедшего могут быть?

svidrigaylov
() автор топика
Ответ на: комментарий от svidrigaylov

Разобрал ноут

Какой из двух - W541 или G505S ? Чтобы по-быстрому затестить G505S, можно взять гарантированно рабочий образ отсюда - правда там сильно устаревшие образы и разумеется лучше собирать свежий образ по этой инструкции

гул кулера около 5 секунд, гул прекращается

Чтобы понимать, что происходит с коребутом в этот момент, можно использовать отладочный адаптер на базе FT232H вставленный в USB-порт - но нужно чтобы в твоём коребуте была включена опция CONFIG_USBDEBUG_DONGLE_FTDI_FT232H , иначе чуда не произойдёт ;-)

Прошивал на 3.3В, CH341B

Какую именно разновидность адаптера ты использовал? А то некоторые жалуются что чёрные программаторы подают 5В на пины данных и могут испортить чип, поэтому я использую только зелёные CH341A (полагаю, CH341B было опечаткой)

Потом решил залить стоковую прошивку, заливаю и... да, тоже самое

Попробуй полностью разрядить твою плату, чтобы гарантированно сбросить её состояние - а именно, зажать кнопку включения на несколько секунд при полностью отключенных внешних источниках питания (адаптер и батарейка) . Дальнейшие инструкции возможны после того как уточнишь модель ноута

SakuraKun ★★★★★
()
Ответ на: комментарий от anonymous

Хотеть онтопик консольку с сетью и бравзером без винта, может еще и какими текстовыми клиентами...

Да, всё это возможно с coreboot+SeaBIOS: дискета KolibriOS (если поддерживает твой Ethernet-контроллер) даёт возможность прям из БИОСа выйти в интернет и чатиться через IRC - и наверняка возможно собрать двойную дискету 2.88MB с каким-нибудь минималистичным Linux'ом который всё это умеет. Да-да, такие «двойные» дискеты существовали и поэтому поддерживаются SeaBIOS'ом в качестве виртуальных, а вот виртуальные дискеты бОльшего объёма - например, «четверные» - потребуют небольших несложных изменений в коде ;-) Полагаю, сложности могут возникнуть лишь с относительно небольшим объёмом SPI Flash - но сам coreboot+SeaBIOS кушает мало, да и LZMA-сжатие помогает сильно сжать дискету чтобы она занимала меньше места в образе БИОСа. В крайнем случае, можно проапгрейдить БИОС-чип с 4 MB до 16 MB

желания не хватило на AMD+RS880, спотык на VGA-блобе

А что за проблема-то, и на какой плате? Просто к платам G505S / A88XM-E / AM1I-A - csb_patcher'ом предоставляются проверенные VGA-блобы. Если у тебя другая AMD'шная плата, поддерживающаяся опенсорсным БИОСом коребут - скажи мне её модель и я постараюсь тебе помочь

SakuraKun ★★★★★
()
Ответ на: комментарий от anonymous

Виртуальная дискета - это всего лишь удобный формат носителя данных для хобби-ОС, поддерживающийся coreboot+SeaBIOS'ом. Реальных дискет я давно уже не щупал ;-)

SakuraKun ★★★★★
()
Ответ на: комментарий от SakuraKun

Привет, ЧЯДНТ?

Делал по гайду в первом комменте.

username@pc:~/w541/coreboot$ make
Updating git submodules.
/home/username/w541/coreboot/.config:254:warning: unknown symbol: CPU_SPECIFIC_OPTIONS
/home/username/w541/coreboot/.config:256:warning: unknown symbol: VBT_DATA_SIZE_KB
/home/username/w541/coreboot/.config:301:warning: unknown symbol: MMX
/home/username/w541/coreboot/.config:321:warning: unknown symbol: SOUTH_BRIDGE_OPTIONS
/home/username/w541/coreboot/.config:338:warning: unknown symbol: SOUTHBRIDGE_INTEL_COMMON_ACPI_MADT
/home/username/w541/coreboot/.config:426:warning: unknown symbol: AZALIA_PLUGIN_SUPPORT
/home/username/w541/coreboot/.config:444:warning: unknown symbol: NO_DDR5
/home/username/w541/coreboot/.config:445:warning: unknown symbol: NO_LPDDR4
/home/username/w541/coreboot/.config:446:warning: unknown symbol: NO_DDR4
/home/username/w541/coreboot/.config:447:warning: unknown symbol: NO_DDR2
/home/username/w541/coreboot/.config:493:warning: unknown symbol: INTEL_GMA_OPREGION_2_0
/home/username/w541/coreboot/.config:637:warning: unknown symbol: EDK2_VERBOSE_BUILD
/home/username/w541/coreboot/.config:638:warning: unknown symbol: EDK2_ABOVE_4G_MEMORY

ERROR: 13 warnings encountered, and warnings are errors.

make[1]: *** [build/util/kconfig/Makefile.real:76: olddefconfig] Error 1
make: *** [Makefile:222: build/config.h] Ошибка 2

svidrigaylov
() автор топика
Ответ на: комментарий от svidrigaylov

EDK2_VERBOSE_BUILD
EDK2_ABOVE_4G_MEMORY

А нафига тебе EDK2 / Tianocore? я уже устал писать по этому поводу - Не получается загрузиться с флешки на ноуте Lenovo G505S (комментарий) - что лучше выбирать SeaBIOS, особенно начинающим пользователям

SakuraKun ★★★★★
()
Ответ на: комментарий от svidrigaylov

Для этого, будучи в директории ./coreboot/, нужно зайти в make menuconfig и в качестве payload'а выбрать SeaBIOS. Напиши, если у тебя и с SeaBIOS'ом возникнут проблемы; в крайнем случае можно и libreboot под W541 собрать - пусть он и окажется блобовый а не труЪ либребут

SakuraKun ★★★★★
()
Последнее исправление: SakuraKun (всего исправлений: 2)
Ответ на: комментарий от SakuraKun

Я ожил спустя месяц.

Не обратил внимания, заливал именно CH341B. Там стоит перемычка, за счет которой он по идее должен заливать именно на 3.3В. Может я спалил чипы, и именно из-за этого он просто гоняет воздух 5 секунд а потом отрубается даже после залития оригинальной прошивки?

Можно ли спалить чип при чтении?

И как проверить, правильно ли он считал прошивку? Открыть дамп в UEFItools (хз правильно ли я назвал прогу)?

svidrigaylov
() автор топика
Ответ на: комментарий от SakuraKun

UPD2: Я думаю, сейчас будет лучше его просто в рабочее состояние вернуть, а потом решать, ставить coreboot, libreboot, advanced menu или что еще там есть. Ибо без оригинальной прошивки вообще ничего не выйдет и это пук в лужу.

svidrigaylov
() автор топика
Ответ на: комментарий от svidrigaylov

с чёрными CH341B не сталкивался, но с чёрными CH341A случались такие проблемы когда вроде бы на VCC гонит 3.3V а на логические уровни данных по 5V - но при этом железо необязательно повреждается: у него есть некоторый запас прочности, да и если использовать плохие длинные провода то напряжение может просаживаться до «нормального»

SakuraKun ★★★★★
()
Ответ на: комментарий от svidrigaylov

И как проверить, правильно ли он считал прошивку?

Обычно делают так: вначале считывают один дамп, проверяют что он не состоит из одних только 0x00 / 0xFF , затем считывают ещё два дампа и сверяют контрольные суммы у всех трёх дампов: если все три контрольных суммы совпали, значит дампы хорошие (это работает, потому что при глючном чтении данные повреждаются в разных местах)

сейчас будет лучше его просто в рабочее состояние вернуть

Да, если у тебя есть заведомо рабочий дамп проприетарщины, то временно прошей его чтобы убедиться что ноут ещё живой. Разумеется, желательно это делать «зелёным» CH341A - ну или хотя бы исправленным чёрным (в инете была инструкция по этому поводу)

SakuraKun ★★★★★
()
Ответ на: комментарий от SakuraKun

@SakuraKun, привет! Я недавно пытался собрать coreboot с другими загрузчиками вторичной инициализации. Для этого я после ./csb_patcher.sh в make menuconfig выбирал, например, GRUB, но каждый раз при сборке у меня вылезала ошибка:

Error: The specified tag is invalid make[1]: *** [Makefile:24: fetch] Error 1 make: *** [payloads/external/Makefile.inc:66: payloads/external/SeaBIOS/seabios/out/bios.bin.elf] Error 2

P.S. На все вопросы, связанные с SeaBIOS в csb_patcher я отвечал N.

open-source
()
Последнее исправление: open-source (всего исправлений: 1)
Ответ на: комментарий от open-source

Привет, open-source ! Ты имеешь ввиду CONFIG_GRUB2_SECONDARY_PAYLOAD ? (вторичный payload GRUB для первичного SeaBIOS) Постараюсь попробовать в ближайшее время; главное, чтобы не оказалось, что работоспособность SeaBIOS --> GRUB зависит от одного из git revert'иваемых патчей... + Эту фичу добавляли относительно недавно и могут быть глюки и в master'е

P.S. Лично я бы собирал дискету с GRUB'ом , хотя бы потому что благодаря LZMA-сжатию она будет занимать меньше места в образе coreboot чем ELF-файл (в зависимости от конфига, GRUB в несжатом виде может оказаться весьма жирным) + есть положительный опыт работы с различными дискетами, тот же мемтест в виде дискеты мне нравится больше чем предлагаемый coreboot'ом. Кстати, у некоторых дискетных OS есть уже готовый GRUB, правда не всегда свежий - например, у Fiwix есть первый GRUB, про остальные версии не запоминал

SakuraKun ★★★★★
()
Ответ на: комментарий от open-source

Пробовал собрать coreboot для AM1I-A - и решил заодно включить этот CONFIG_GRUB2_SECONDARY_PAYLOAD , до этого на все вопросы csb_patcher.sh отвечал Y (разумеется, кроме конфижных - там я выбрал Y только для AM1I-A но без автонастройки этого конфига) и потом зашёл через make menuconfig чтобы выбрать этот пункт GRUB2 в качестве вторичного payload'а по отношению к SeaBIOS. В итоге всё успешно собралось, но в процессе потребовалось доустановить automake / autoconf / unifont. Внутри coreboot'а GRUB2 занял 472 килобайта - наверное, в стандартном конфиге выбрано не так много опций. Твоей ошибки пока что воспроизвести не удаётся...

SakuraKun ★★★★★
()
4 мая 2024 г.
Ответ на: комментарий от SakuraKun

Я решил вернуться к этому делу и попробовать ещё раз. Хочу использовать GRUB2 или Tianocore вместо SeaBios (то есть как Primary Payload), чтобы Secondary Payload не было вообще. То есть со схемой загрузки Coreboot —> GRUB2 —> OS или Coreboot —> Tianocore —> GRUB2 —> OS. Пока ничего не получается, постоянно натыкаюсь на ошибки, большинство которых успешно устраняю, но не все.

open-source
()
Ответ на: комментарий от SakuraKun

Ошибка после make при сборке с Tianocore’ом:

Failed!
make[1]: *** [Makefile:270: /root/coreboot/payloads/external/edk2/workspace/Build/UefiPayloadPkgX64/RELEASE_COREBOOT/FV/UEFIPAYLOAD.fd] Error 1
make: *** [payloads/external/Makefile.mk:160: build/UEFIPAYLOAD.fd] Error 2

Ошибка после make при сборке с GRUB’ом (вторым):

mawk: ../../grub-core/genmoddep.awk: line 110: function asorti never defined
make[5]: *** [Makefile:51275: moddep.lst] Error 1
make[4]: *** [Makefile:28855: all] Error 2
make[3]: *** [Makefile:12131: all-recursive] Error 1
make[2]: *** [Makefile:3958: all] Error 2
make[1]: *** [Makefile:44: grub2] Error 2
make: *** [payloads/external/Makefile.mk:276: grub2] Error 2
open-source
()