Свежая сборка коребута от 05 марта 2024 - доступна во вложениях этого сообщения в самом низу. Совместима с любыми
версиями G505S - с/без дискретной видеокарты - главное чтобы процессор был A10-5750M, но его можно проапгрейдить.
Сборка 25 Мая 2020 - вы можете скачать из репозитория нашего друга - https://github.com/mikebdp2/coreboot-g505s-builds .
Внимательно прочитайте README, чтобы выбрать понравившуюся версию БИОСа для вашего Lenovo G505S
Сборка 17 Февраля 2019 - в сообщении viewtopic.php?f=25&t=3446&start=225#p72451 ,
главное проверьте контрольную сумму перед прошивкой. Помимо c0r3b00t.rom там есть конфиг сборки и изменённые исходники
=== ИНСТРУКЦИИ НИЖЕ ВЕСЬМА УСТАРЕЛИ И БУДУТ ОБНОВЛЕНЫ ПОЗЖЕ...
ТАК ЧТО ПОКА ПОЛЬЗУЙТЕСЬ http://dangerousprototypes.com/docs/Lenovo_G505S_hacking
У меня получилось встроить KolibriOS в coreboot / SeaBIOS , и успешно запустить оттуда! Все файлы прилагаются!
Компьютер - ноутбук Lenovo G505S с процессором AMD A10-5750M , он поддерживается coreboot:
https://coreboot.org/status/board-status.html (последний репорт - 2 июня 2019, немного устарел)
Ноут середины 2013 года - больше не производится, но при желании можно найти на авито за 15-20 тыс.
Подготовка, сборка и прошивка опенсорсного БИОСа coreboot+SeaBIOS :
1) во временно установленном Windows 8 обновите BIOS до последней версии v3.00 - 83CN53WW используя официальную программу с сайта Lenovo, чтобы заодно обновилась прошивка EC-контроллера KB9012 до версии v3.00 - 83EC53WW
2) в любимом дистрибутиве Linux установите все нужное для сборки - http://www.coreboot.org/Build_HOWTO , затем выполните команды
3)
git clone https://review.coreboot.org/coreboot.git - скачать coreboot
cd ./coreboot/ - перейти в директорию ./coreboot/
git submodule update --init --checkout - скачать дополнения которые могут пригодится (например при сборке cbfstool)
make crossgcc-i386 - собрать тулчейн , который будет использоваться для компиляции coreboot (crossgcc-x64 пока не поддерживается т.к. плохо компилирует)
4)
Скачайте скрипт csb_patcher.sh при помощи скрипта csbget.sh из http://dangerousprototypes.com/docs/Len ... cking#NEWS , или https://review.coreboot.org/c/coreboot/+/33509 . Переместите его в директорию ./coreboot/ , сделайте chmod +x ./csb_patcher.sh чтобы разрешить его выполнение, затем запустите его - ./csb_patcher.sh - и следуйте инструкциям. Рекомендуется применить все предложенные им патчи, установить конфигурацию сборки ./coreboot/.config только для Lenovo G505S разумеется, и скачивание дискетных ОС по желанию.
Если вы желаете изменить некоторые опции самостоятельно, прочитайте о том как пользоваться menuconfig в самом низу этого сообщения. Самое главное: кнопка ? - узнать больше о подсвеченной опции, а правый слэш / - поиск по опциям.
Отличия моего конфига для G505S от конфига по умолчанию: (было ==> стало)
Spoiler:
1) Более подробные логи загрузки coreboot (доступны через утилиту cbmem)# CONFIG_TIMESTAMPS_ON_CONSOLE is not set ==> CONFIG_TIMESTAMPS_ON_CONSOLE=y
CONFIG_DEFAULT_CONSOLE_LOGLEVEL=7 ==> CONFIG_DEFAULT_CONSOLE_LOGLEVEL=8
# CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8 is not set ==> CONFIG_DEFAULT_CONSOLE_LOGLEVEL_8=y
CONFIG_DEFAULT_CONSOLE_LOGLEVEL_7=y ==> # CONFIG_DEFAULT_CONSOLE_LOGLEVEL_7 is not set
# CONFIG_AGESA_EXTRA_TIMESTAMPS is not set ==> CONFIG_AGESA_EXTRA_TIMESTAMPS=y
2) Поддержка видеокарт, встроенной и дискретной, на всякий случай с защитой от непредсказуемых действий блобов AtomBIOS, пусть они и хорошо исследованы но лишняя осторожность не помешает.
# CONFIG_VGA_BIOS is not set ==> CONFIG_VGA_BIOS=y
==> CONFIG_VGA_BIOS_FILE="pci1002,990b.rom"
# CONFIG_MULTIPLE_VGA_ADAPTERS is not set ==> CONFIG_MULTIPLE_VGA_ADAPTERS=y
==> CONFIG_VGA_BIOS_DGPU=y
==> CONFIG_VGA_BIOS_DGPU_FILE="pci1002,6665.rom"
==> CONFIG_VGA_BIOS_DGPU_ID="1002,6665"
# CONFIG_S3_VGA_ROM_RUN is not set ==> CONFIG_S3_VGA_ROM_RUN=y
# CONFIG_ON_DEVICE_ROM_LOAD is not set ==> CONFIG_ON_DEVICE_ROM_LOAD=y
CONFIG_PCI_OPTION_ROM_RUN_REALMODE=y ==> # CONFIG_PCI_OPTION_ROM_RUN_REALMODE is not set
# CONFIG_PCI_OPTION_ROM_RUN_YABEL is not set ==> CONFIG_PCI_OPTION_ROM_RUN_YABEL=y
==> CONFIG_YABEL_PCI_ACCESS_OTHER_DEVICES=y
==> # CONFIG_YABEL_PCI_FAKE_WRITING_OTHER_DEVICES_CONFIG is not set
==> CONFIG_YABEL_VIRTMEM_LOCATION=0x1000000
==> CONFIG_YABEL_DIRECTHW=y
# CONFIG_REALMODE_DEBUG is not set ==> # CONFIG_X86EMU_DEBUG is not set
^^^ включил YABEL для повышения безопасности, чтобы предотвратить возможный недокументированный доступ VGABIOS к другим PCI-устройствам (исходный код VGABIOS закрыт; пусть сами блобы и хорошо исследованы при помощи утилиты AtomDis, но чтобы они - даже если и захотят - не смогли наворотить бэкдорных дел, на всякий случай нужно огородить)
# CONFIG_FRAMEBUFFER_SET_VESA_MODE is not set ==> CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
==> CONFIG_FRAMEBUFFER_VESA_MODE_118=y
==> CONFIG_FRAMEBUFFER_VESA_MODE=0x118
CONFIG_VGA_TEXT_FRAMEBUFFER=y ==> # CONFIG_VGA_TEXT_FRAMEBUFFER is not set
==> CONFIG_VBE_LINEAR_FRAMEBUFFER=y
==> CONFIG_HAVE_VBE_LINEAR_FRAMEBUFFER=y
==> CONFIG_LINEAR_FRAMEBUFFER=y
3) Поддержка картинки при загрузке БИОС (не добавлена, можете добавить сами на своё усмотрение)
==> CONFIG_BOOTSPLASH=y
4) WiFi-адаптеры:
С интеловскими WiFi-адаптерами ни разу в жизни не сталкивался и не понимаю зачем они нужны когда есть Atheros AR9462, очень хороший WiFi-адаптер который поддерживает a/b/g/n 300Мбит/сек, 2.4ГГц и 5ГГц, даже Bluetooth 4.0, при этом на него есть полностью опенсорсные драйвера под Linux - http://wireless.wiki.kernel.org/en/users/Drivers/ath9k , поэтому поддержку интела выкинул чтобы место не занимало. AR9462 с официальным БИОСом не работает из-за Whitelist, а с coreboot / SeaBIOS работает прекрасно, да и стоит всего 500 р. на AliExpress.
CONFIG_DRIVERS_INTEL_WIFI=y ==> # CONFIG_DRIVERS_INTEL_WIFI is not set
CONFIG_DRIVERS_GENERIC_WIFI=y ==> # CONFIG_DRIVERS_GENERIC_WIFI is not set
# CONFIG_USE_SAR is not set ==>
5) Главный coreboot'овский payload - SeaBIOS - посвежее, и вторичные payload'ы (дополнения) coreboot:
CONFIG_SEABIOS_STABLE=y ==> # CONFIG_SEABIOS_STABLE is not set
# CONFIG_SEABIOS_MASTER is not set ==> CONFIG_SEABIOS_MASTER=y
# CONFIG_COREINFO_SECONDARY_PAYLOAD is not set ==> CONFIG_COREINFO_SECONDARY_PAYLOAD=y
# CONFIG_TINT_SECONDARY_PAYLOAD is not set ==> CONFIG_TINT_SECONDARY_PAYLOAD=y
командой make, на выходе получите файл ./coreboot/build/coreboot.rom
Затем запустите ./csb_patcher.sh atomflop чтобы добавить недостающий блоб AtomBIOS для дискретной видеокарты (если у вас HD-8570M = 1002,6663) и дискеты по желанию. Итоговым файлом является ./coreboot/build/coreflop.rom (coreflop.rom)
Карта памяти coreboot_stage3.rom:
Spoiler:
Code: Select all
./build/cbfstool ./build/coreboot.rom print
Code: Select all
Performing operation on 'COREBOOT' region...
Name Offset Type Size
cbfs master header 0x0 cbfs header 32
apu/amdfw 0x80 raw 4096
fallback/romstage 0x10c0 stage 300588
fallback/ramstage 0x4a780 stage 111690
config 0x65c40 raw 478
revision 0x65e80 raw 575
cmos_layout.bin 0x66100 cmos_layout 1392
pci1002,990b.rom 0x666c0 optionrom 61952
fallback/dsdt.aml 0x75940 raw 9004
img/coreinfo 0x77cc0 payload 101048
img/nvramcui 0x907c0 payload 140636
fallback/payload 0xb2d80 payload 62953
payload_config 0xc23c0 raw 1543
payload_revision 0xc2a00 raw 238
img/tint 0xc2b40 payload 93928
img/memtest 0xd9a80 payload 180268
img/filo.lzma 0x105b00 payload 110829
floppyimg/kolibri.lzma 0x120c40 raw 1254336 (1474560 after LZMA decompression)
(empty) 0x253080 null 1755288
bootblock 0x3ff940 bootblock 1408
Spoiler:
Можно купить самый дешёвый программатор CH341A (поддерживается open-source программой flashrom на Linux) и SOIC8-прищепку к нему (в сумме где-то 500 р. на алиэкспресс). Сможете прошивать BIOS-чип без выпаивания. Полная инструкция по прошивке, в том числе описание правильного подключения к BIOS-чипу, здесь:http://dangerousprototypes.com/docs/Fla ... Bus_Pirate
(в-основном написана для Bus Pirate, но ближе к концу есть пример для CH341A)
Когда грузится coreboot ---> SeaBIOS, если нажать Escape на экране SeaBIOS то появляется экран выбора:
1. Ramdisk [kolibri]
2. Payload [filo]
3. Payload [memtest]
4. Payload [tint]
5. Payload [nvramcui]
6. Payload [coreinfo]
После kolibri и перед filo могут добавиться пункты USB Drive, CD/DVD Drive, HDD Drive если они вставлены в компьютер и являются загрузочными. Чтобы начала загружаться KolibriOS, достаточно нажать кнопку 1 на экране выбора, или ничего не делать с самого начала
Текущий статус KolibriOS на coreboot / SeaBIOS:
версия coreboot - 4.5-485-g52896c6-dirty || версия SeaBIOS - 1.10.0-9-g7b7b49e || версия KolibriOS - r6781
KolibriOS грузится и работает нормально, но после начального синего экрана, при дальнейшей загрузке ОС до рабочего стола перестаёт работать USB-клавиатура и USB-мышь (внутренняя клавиатура ноутбука и тачпад по-прежнему работают, может быть они являются PS/2 устройствами поэтому и продолжают работать) . Добавлю больше инфы когда протестирую поподробнее...
Вложения:
[1] coreboot.zip || SHA1 = c603a5a1e03db605bfa17396eed2a61599c7b1d0
[---->] coreboot_stage1.rom - только что собранный coreboot, пока что без filo и без kolibri
[---->] coreboot_stage2.rom - coreboot c filo но без kolibri (можете добавить сюда kolibri свежий, для этого надо выполнить только шаг 12)
[---->] coreboot_stage3.rom - coreboot с filo и с kolibri r6781 (лучше взять stage2 и добавить свежий)
[---->] coreboot-config-04-DEC-2016 - .config для сборки coreboot
[---->] vgabios.bin - vgabios для сборки coreboot
[2] filo.zip || SHA1 = 2fcb83cd46375b3a9b5befa077a043551894e5d1
[---->] filo.elf - filo для coreboot
[---->] filo-config-04-DEC-2016 - .config для сборки filo
[3] tint-0.04+nmu1.zip || УДАЛЁН т.к. больше не нужен - его уже смёржили в coreboot
[---->] libpayload_tint.patch - файл для замены ./coreboot/payloads/external/tint/libpayload_tint.patch
[---->] Makefile - файл для замены ./coreboot/payloads/external/tint/Makefile
В будущем, для экономии времени можно брать coreboot_stage2.rom и с легкостью добавлять к нему свежий kolibri.img
(если эти собранные образы coreboot к тому времени не сильно устареют)
P.S.-1 Как автоматически собирается тетрис TINT:
Spoiler:
В процессе сборки coreboot, Makefile-ом TINT-а скачается с сайта Debian архив с тетрисом TINT, проверится контрольная сумма SHA-1 архива, затем он распакуется и полученные файлы автоматически пропатчатся при помощи libpayload_tint.patch - для совместимости с coreboot и исправления пары багов (но после патча теряется совместимость тетриса с Linux-ом), затем собирается, и в конце сборки coreboot тетрис добавляется к нему. Для тех, кто хочет поиграть в этот тетрис на Linux-е, просто скачайте архив, распакуйте и не применяя патча скомпилируйте - http://http.debian.net/debian/pool/main ... mu1.tar.gzSpoiler:
Желательно чтобы была выбрана английская раскладка клавиатуры. Клавиши "стрелки" - ходить по меню. Enter - войти внутрь подменю если после названия стоит ---> ; если там ---- то подменю пустое). Кнопка ? - узнать больше о подсвеченной опции, а правый слэш / - поиск по опциям. Подсвеченные буквы в названии опций - это "горячие клавиши" чтобы быстро перейти к этим опциям при нахождении в содержащем их подменю. Когда опция подсвечена, можно переключаться между её допустимыми значениями нажатием клавиши пробела, или: Y (включает в качестве встроенной), N (выключает), M (включает в качестве модуля). Обозначения: [*][/b] - включена в качестве встроенной, [ ] - выключена, <M> - включена в качестве модуля, < > - выключена, но может быть включена в качестве модуля. Некоторые опции - текстовые, и редактируются вводом текста с клавиатуры после нажатия на них клавиши EnterSpoiler:
в Xubuntu 16.04.1 i386 (так и не смог нормально собрать на 64-битной системе, пришлось использовать LiveCD с 32-битной убунтой) скачал и собрал bootloader FILO - http://www.coreboot.org/FILO . При сборке FILO ссылается на ./../coreboot/payloads/libpayload , и чтобы он не отказывался использовать "непротестированный" SATA-контроллер, перед началом сборки FILO (первым вводом make menuconfig) я удалил из ./coreboot/payloads/libpayload/drivers/storage/ahci.c два куска кодаCode: Select all
#if IS_ENABLED(CONFIG_LP_STORAGE_AHCI_ONLY_TESTED)
...
#endif
Скопировал filo.elf в ./coreboot/build/filo.elf и, находясь в ./coreboot/ , выполнил команду
Code: Select all
./build/cbfstool build/coreboot.rom add-payload -f ./build/filo.elf -n img/filo.lzma -c lzma
Spoiler:
Скачал 7z-архив, содержащий дискетный образ KolibriOS kolibri.img, скопировал его в ./coreboot/build/kolibri.img и выполнил командуCode: Select all
./build/cbfstool build/coreboot.rom add -f ./build/kolibri.img -n floppyimg/kolibri.lzma -t raw -c lzma