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
()
11 ноября 2024 г.

Вышел апдейт, еще в мае:

Haswell targets: MRC configs disabled. Only NRI ROMs provided now. The libre raminit (NRI) is now stable enough in testing, that it’s the default, and the only one provided in releases. This affects: ThinkPad W541/T440p and Dell OptiPlex 9020 SFF/MT. This is done, in application of Libreboot’s Binary Blob Reduction Policy which states: if a blob can be avoided, it should be avoided.

Так что, проблему можно назвать почти решённой. Кроме того, что дискретка от нвидии не работает.

svidrigaylov
() автор топика