KolibriOS в BIOS ( coreboot / SeaBIOS ) на G505S - успех!

Using Kolibri in embedded systems
  • Короче, блобы находятся тут:
    https://github.com/coreboot/blobs.git
    задим в 3rdparty и клонируем, затем выбираем в конфиге.
    собираю ipxe (это открытый аналог проприетарному PXE). в payloads выбираю Add a PXE ROM и PXE ROM to use (Build and add an iPXE ROM), затем через lspci -nn смотрим pci id и вводим туда.
  • Code: Select all

    /home/su/temp/coreboot/util/crossgcc/xgcc/bin/i386-elf-ar: creating bin/blib.a
      [HOSTCC] util/zbin
    util/zbin.c:7:18: fatal error: lzma.h: No such file or directory
    compilation terminated.
    Makefile.housekeeping:1360: recipe for target 'util/zbin' failed
    make[2]: *** [util/zbin] Error 1
    make[2]: Leaving directory '/home/su/temp/coreboot/payloads/external/iPXE/ipxe/src'
    Makefile:59: recipe for target 'build' failed
    make[1]: *** [build] Error 2
    payloads/external/Makefile.inc:204: recipe for target 'payloads/external/iPXE/ipxe/ipxe.rom' failed
    make: *** [payloads/external/iPXE/ipxe/ipxe.rom] Error 2
    
    как обычно нифига не собирается, и непонятно, в чем тут ашыпка :x
    установил liblzma-dev, теперь это:

    Code: Select all

        Fetching new commits from the iPXE repo
        Checking out iPXE revision origin/master
    Switched to branch 'master'
    Your branch is up-to-date with 'origin/master'.
    Deleted branch coreboot (was 84d406c).
    Branch coreboot set up to track remote branch master from origin.
    Switched to a new branch 'coreboot'
        MAKE       iPXE origin/master
    make[2]: Entering directory '/home/su/temp/coreboot/payloads/external/iPXE/ipxe/src'
      [HOSTCC] util/zbin
      [VERSION] bin/version.1969:10a0.rom.o
      [LD] bin/1969:10a0.rom.tmp
    /home/su/temp/coreboot/util/crossgcc/xgcc/bin/i386-elf-ld:--defsym:2: ignoring invalid character `:' in expression
    /home/su/temp/coreboot/util/crossgcc/xgcc/bin/i386-elf-ld:--defsym:2: syntax error
    Makefile.housekeeping:1166: recipe for target 'bin/1969:10a0.rom.tmp' failed
    make[2]: *** [bin/1969:10a0.rom.tmp] Error 1
    rm bin/version.1969:10a0.rom.o
    make[2]: Leaving directory '/home/su/temp/coreboot/payloads/external/iPXE/ipxe/src'
    Makefile:59: recipe for target 'build' failed
    make[1]: *** [build] Error 2
    payloads/external/Makefile.inc:204: recipe for target 'payloads/external/iPXE/ipxe/ipxe.rom' failed
    make: *** [payloads/external/iPXE/ipxe/ipxe.rom] Error 2
    
  • Вобщем, собрал ipxe отдельно, но он не работает. iwlist говорит, что время ожидания превышено.
    Также, собрал с USB 3.0 фирмарью, но USB 3.0 не работает :cry: :cry: :cry: :cry: :cry: :cry: :cry: для меня USB 3.0 - самое главное!
    P.S. На свежесобранной версии корбута USB 2.0 заработал нормально!
    По поводу клавиш FN. Регулировка звука работает. Но не работает регулировка яркости.
    По поводу bootsplash: Make sure the dimensions of the image exactly correspond to an available video mode (eg, 640x480, or 1024x768), otherwise it will not be displayed.
    Вобщем, накатил Windows 7, установил драйвера и для 8650G все встало! Также погонял в игре SR4 и что я заметил? А падений-то частоты процессора не было! FPS был стабильный и упирался в мощность видеокарты 8650G! Вот и первая проблема решена (вроде).
    Кстати, что думаешь по поводу того, что прошить биос прямо из ОС? По идее же, встроенный программатор умеет и EC шить, так он не заденется случайно?

    Code: Select all

    flashrom -p internal:laptop=force_I_want_a_brick -w build/coreboot.rom
    
    Погуглил, нашел опцию config DRIVERS_LENOVO_HYBRID_GRAPHICS в src/drivers/lenovo/Kconfig
    Но при сборке выдает это:

    Code: Select all

        GEN        generated/bootblock.ld
        CP         bootblock/arch/x86/bootblock.ld
        LINK       cbfs/fallback/bootblock.debug
        OBJCOPY    cbfs/fallback/bootblock.elf
        OBJCOPY    bootblock.raw.bin
        CC         cbfs/fallback/ramstage.debug
    build/generated/ramstage.o: In function `hybrid_graphics_disable_peg':
    /home/su/temp/coreboot/src/drivers/lenovo/hybrid_graphics.c:48: undefined reference to `set_gpio'
    src/arch/x86/Makefile.inc:406: recipe for target 'build/cbfs/fallback/ramstage.debug' failed
    make: *** [build/cbfs/fallback/ramstage.debug] Error 1
    
    Итак, имеющиеся не решенные проблемы:
    1) USB 3.0 так и не работает. В обоих ОС при загрузке доооолгое ожидание и в итоге не работает.
    2) FN регулировка яркости так и не работает, приходится сворачивать игру и лезть в настройки :(
    3) На дискретную видеокарту не получается установить драйвер, винда его видит, но стоит восклицательный знак и никак не работает.
    4) Микрофон не работает, драйвера dolby (с эквалайзером) не устанавливаются.
  • olodar wrote:Вобщем, собрал ipxe отдельно, но он не работает. iwlist говорит, что время ожидания превышено
    Читал про IPXE но не смог найти для него практического применения - никогда не гружусь с сетевых носителей, только с локальных! Поэтому ни разу не пользовался, но проблема должна быть решаема если погуглить (сам я этого выяснить сейчас не смогу т.к. жёсткие проблемы с инетом и сейчас еле работает, вот и отвечаю не сразу) . Если и это не поможет, и хоть немного знаешь английский, можешь рассказать о своей проблеме в e-mail рассылке разработчиков coreboot - перед отправкой туда сообщений желательно на неё подписаться, чтобы на твои сообщения не было предварительной модерации, оперативно узнать об ответе на своё сообщение, а может быть и понабраться опыта ну или помочь кому :)
    olodar wrote:Также, собрал с USB 3.0 фирмарью, но USB 3.0 не работает :cry: :cry: :cry: :cry: :cry: :cry: :cry: для меня USB 3.0 - самое главное!
    Могу здесь сильно ошибаться, так как смотрел это больше года назад и чисто из интереса, но по-моему там было как минимум два разных бинарника которые имело смысл попытаться использовать в качестве фирмвари для XHCI : один для южного моста Hudson а другой для южного моста Bolton. Амд-шный южный мост этого ноута включает в себя USB 2.0 / 3.0 контроллер , и USB 2.0 работает и так - а вот для режима USB 3.0 нужно чтобы биос подгрузил эту XHCI фирмварь причём разумеется правильную. Так-то этот южный мост вроде бы семейства Bolton , но Bolton и Hudson очень похожи (если не ошибаюсь, Hudson - это бюджетный вариант Bolton'а) и может быть бинарник от Hudson сработал бы лучше. Вообще, самым надёжным вариантом было бы извлечь этот бинарник из официального апдейта BIOS, если скачать его с официального сайта Lenovo, распаковать как ZIP-архив, в самом большом файле (весил больше 5 мегабайт вроде) быстро поискать заголовок который скорее всего стоит перед началом бинарника XHCI, оттуда отсчитать его размер (там ведь 64 КБ должно быть ? ) , и сохранить этот кусок с правильным размером как бинарный файл. Ну в общем попробуй пока все эти варианты: два разных бинарника + если получится извлечь (если не получится, подожди пока у меня наладится инет ;)
    olodar wrote: P.S. На свежесобранной версии корбута USB 2.0 заработал нормально!
    Рад это слышать
    olodar wrote:По поводу клавиш FN. Регулировка звука работает. Но не работает регулировка яркости
    Если посмотреть лог ядра линукс (через команду dmesg) или ещё где - наверняка увидишь что когда нажимаешь эти кнопки регулировки яркости - там в логах всплывает сообщение типа Unknown key with code 0xABC pressed ( ABC - для примера ) Остаётся назначить на этот код клавиши 0xABC конкретное действие, например яркость вверх или вниз
    olodar wrote:По поводу bootsplash: Make sure the dimensions of the image exactly correspond to an available video mode (eg, 640x480, or 1024x768), otherwise it will not be displayed
    Там вдобавок к требованию по разрешению картинки ещё и требование по формату. Когда в прошлый раз смотрел, поддерживало только BMP и JPEG
    olodar wrote:Кстати, что думаешь по поводу того, что прошить биос прямо из ОС? По идее же, встроенный программатор умеет и EC шить, так он не заденется случайно?

    Code: Select all

    flashrom -p internal:laptop=force_I_want_a_brick -w build/coreboot.rom
    
    При обновлении прошивки BIOS + прошивки EC контролера официальной утилитой апдейта от Lenovo происходит следующее: вначале EC-контроллер хитромудрым способом через legacy шину LPC переводится в режим отладки, затем происходит прошивка образа BIOS через EC-контроллер, а затем обновляется прошивка и самого EC-контроллера

    Так как на ноутах (в отличие от стационарных компьютеров) есть этот EC-контроллер, на ноутах - или вообще на всех или по крайней мере на бОльшей их части - прошить новый BIOS при помощи flashrom или не удастся вообще или со значительным процентом ошибок, ведь если flashrom не умеет переводить EC-контроллер в отладочный режим то этот EC-контроллер будет постоянно мешать в процессе прошивки!

    Прошивка EC-контроллера при этой скорее всего неудачной процедуре прошивке BIOS (из-за вмешательства EC контроллера) - вряд ли слетит . Прошить прошивку в EC-контроллер тоже можно через flashrom , если скачать исходники flashrom и три специальных патча, применить эти патчи к исходникам flashrom, а затем скомпилировать эти исходники в отдельный flashrom, который скорее всего не будет уметь нормально прошивать BIOS-чипы но зато сможет прошивать EC-контроллер через клавиатурный разъём ноутбука! Вот как это делается: http://dangerousprototypes.com/docs/Fla ... Bus_Pirate (придётся заказать или где-то раздобыть подходящий шлейф, чтобы это было намного легче. нужно будет немного паять, возможно обойдёшся и без пайки если прикупишь специальных проводов с щипцами на одном конце)
    olodar wrote:Погуглил, нашел опцию config DRIVERS_LENOVO_HYBRID_GRAPHICS в src/drivers/lenovo/Kconfig
    Но при сборке выдает это:

    Code: Select all

        GEN        generated/bootblock.ld
        CP         bootblock/arch/x86/bootblock.ld
        LINK       cbfs/fallback/bootblock.debug
        OBJCOPY    cbfs/fallback/bootblock.elf
        OBJCOPY    bootblock.raw.bin
        CC         cbfs/fallback/ramstage.debug
    build/generated/ramstage.o: In function `hybrid_graphics_disable_peg':
    /home/su/temp/coreboot/src/drivers/lenovo/hybrid_graphics.c:48: undefined reference to `set_gpio'
    src/arch/x86/Makefile.inc:406: recipe for target 'build/cbfs/fallback/ramstage.debug' failed
    make: *** [build/cbfs/fallback/ramstage.debug] Error 1
    
    А вот про эту опцию я в первый раз слышу... Если она и должна быть совместима с G505S возможно её добавили недавно и ещё не успели доделать до рабочего состояния
    olodar wrote:Итак, имеющиеся не решенные проблемы:
    1) USB 3.0 так и не работает. В обоих ОС при загрузке доооолгое ожидание и в итоге не работает.
    2) FN регулировка яркости так и не работает, приходится сворачивать игру и лезть в настройки :(
    3) На дискретную видеокарту не получается установить драйвер, винда его видит, но стоит восклицательный знак и никак не работает.
    4) Микрофон не работает, драйвера dolby (с эквалайзером) не устанавливаются.
    Итоги:
    1) - решаемо если подобрать правильный бинарник
    2) - скорее всего получиться исправить если вручную назначить действие на код который выдаёт клавиатура когда ты нажимаешь эту комбинацию клавиш
    3) - тут вот не уверен - виндой почти не пользуясь, поэтому не знаю получиться ли завести дискретную видеокарту если поковыряться в настройках
    4) - встречал почти такой же ноут - почти с таким же официальным биосом ( INSYDE ) , абсолютно такой же аудио системой ( Dolby Advanced Audio v2 если не ошибаюсь ) и седьмой виндой. Так вот, там пришлось очень и очень нехило поДОЛБИться прежде чем дрова от Долби нормально встали и заработали ( ковырялся пару часов, вроде бы дрова с драйверпака заработали и то не сразу )
    Last edited by floppy121 on Mon Jun 17, 2019 12:33 pm, edited 1 time in total.
  • С PXE так и ничего не получилось.
    Также, удалось собрать корбут с hybrid graphics, но видеокарта не работает. Включил еще Load Rom from pci devices (как-то так называется, вроде) - тоже не помогло (. Шинда просто перестает загружаться (ядро шинды постоянно грузит ЦП), приходится лезть в безопасный и удалять дискретную карту. Кстати, кримсон как-то по умному ставит драйвер (в отличие от каталиста) и ничего не зависает, но дискретная даже не отображается в диспетчере.
    Что касается USB 3.0 - убрал галку добавить Hudson firmware и включил фирмарь от bolton'а и все заработало!
    - там ведь 64 КБ должно быть
    нет? 28 кибибайт они весят
    - Если посмотреть лог ядра линукс (через команду dmesg) или ещё где - наверняка увидишь что когда нажимаешь эти кнопки регулировки яркости - там в логах всплывает сообщение типа Unknown key with code 0xABC pressed ( ABC - для примера ) Остаётся назначить на этот код клавиши 0xABC конкретное действие, например яркость вверх или вниз
    не канает, программа не "видит" нажатия клавиши :(
    По поводу долби - дело в том, что долби выпускает отдельные драйвера для каждой версии винды, ты не поставишь от 7 в 8.1 и наооборот. Идиотизм полный, но нужно качать драйвера именно для нужной версии шинды, тогда все встанет отлично. Тоже сначала не понимал, в чем дело, почему драйвер от восьмерки никак не хотел ставится на десятку.
    Еще обнаружил проблему - если "усыпить" систему ("сон в раму"), то ноут не пробуждается :( тупо черный экран, но сам ноут включен и пингуется и по ssh зайти можно.
  • olodar wrote:С PXE так и ничего не получилось
    Очень жаль. Возможно об этом стоит подробно рассказать в e-mail рассылку разработчиков coreboot
    olodar wrote:Также, удалось собрать корбут с hybrid graphics, но видеокарта не работает. Включил еще Load Rom from pci devices (как-то так называется, вроде) - тоже не помогло (. Шинда просто перестает загружаться (ядро шинды постоянно грузит ЦП), приходится лезть в безопасный и удалять дискретную карту. Кстати, кримсон как-то по умному ставит драйвер (в отличие от каталиста) и ничего не зависает, но дискретная даже не отображается в диспетчере.
    Возможно при просмотре шины PCI винда обнаруживает одну и ту же дискретную видеокарту несколько раз и зацикливается при попытке повесить на каждую из этих "нескольких одинаковых видеокарт" копии одного и того же драйвера, которые естественно конфликтуют между собой по ресурсам (диапазонами памяти и прерываниями) Это просто догадка, но может быть так оно и есть
    olodar wrote:Что касается USB 3.0 - убрал галку добавить Hudson firmware и включил фирмарь от bolton'а и все заработало!
    - там ведь 64 КБ должно быть
    нет? 28 кибибайт они весят
    Можешь пожалуйста скинуть ссылку на эту гарантированно рабочую фирмварь на USB 3.0 (не для меня а для других читателей этой темы) Надеюсь она есть в официальном репозитории coreboot ?
    olodar wrote:- Если посмотреть лог ядра линукс (через команду dmesg) или ещё где - наверняка увидишь что когда нажимаешь эти кнопки регулировки яркости - там в логах всплывает сообщение типа Unknown key with code 0xABC pressed ( ABC - для примера ) Остаётся назначить на этот код клавиши 0xABC конкретное действие, например яркость вверх или вниз
    не канает, программа не "видит" нажатия клавиши :(
    Очень интересно, почему так. При первой же возможности постараюсь найти решение этой проблемы.
    olodar wrote:По поводу долби - дело в том, что долби выпускает отдельные драйвера для каждой версии винды, ты не поставишь от 7 в 8.1 и наооборот. Идиотизм полный, но нужно качать драйвера именно для нужной версии шинды, тогда все встанет отлично. Тоже сначала не понимал, в чем дело, почему драйвер от восьмерки никак не хотел ставится на десятку.
    вроде бы я всё время туда пытался ставить дрова Долби именно для семёрки, просто разные версии. если правильно помню в итоге помогла версия из драйверпака (drp.su) но пришлось потратить кучу времени . это всё к тому что если не встают драйвера Долби - возможно в этом виноват не коребут
    olodar wrote:Еще обнаружил проблему - если "усыпить" систему ("сон в раму"), то ноут не пробуждается :( тупо черный экран, но сам ноут включен и пингуется и по ssh зайти можно.
    https://www.coreboot.org/Board:lenovo/g505s

    Known Issues

    S3 Suspend/Resume - You will need a Console verbosity set to at least "BIOS_INFO" or greater for it to work! Coreboot is likely too fast for the Embedded Controller firmware on the S3 resume hot path.

    Кажись коребут грузится слишком быстро! Попробуй замедлить его, настроив Verbosity Level в menuconfig на более подробный вывод инфы в логи загрузки коребут , затем придётся пересобрать коребут и прошить его. Надеюсь, это поможет