Даже работая на открытой операционной системе, мы почти всегда имеем дело с несвободной прошивкой: BIOS закрыт, а если бы даже устройство поддерживалось проектом coreboot (бывший LinuxBIOS), для загрузки всё равно потребовалась бы масса проприетарных «бинарных блобов». Теперь на одной старой архитектуре таких блобов стало на один меньше: coreboot научился инициализировать DRAM на SoC Intel Bay Trail.

Плата на устаревшем чипе Intel Bay Trail с прошивкой coreboot

реклама кормит Уточку 🦆

Bay Trail — далеко не передовое железо: этим чипам уже больше десяти лет, и использовались они в маломощных устройствах вроде хромбуков. Инициализация оперативной памяти сложна тем, что до её настройки у вас попросту нет памяти, с которой можно работать. Традиционно эту задачу решал один из проприетарных «блобов», поставляемых производителем почти без документации.

реклама кормит Уточку 🦆

Реверс-инжиниринг такого блоба потребовал серьёзной работы: её выполнили программно с помощью отладчика SerialICE и эмулятора процессора Unicorn Engine. Доклад на прошедшей конференции по открытым прошивкам был посвящён именно этой методике и тому, как её можно применить шире, а не деталям инициализации DRAM на одном конкретном устаревшем SoC.

реклама кормит Уточку 🦆

Поскольку coreboot открыт, с ним можно куда больше, чем с проприетарным UEFI: например, вообще не инициализировать ОЗУ и работать целиком в кэше процессора. Ну и, конечно, запустить DOOM. А тем, кому нужна прошивка вовсе без бинарных блобов, придётся искать железо, поддерживаемое более бескомпромиссным дистрибутивом Libreboot.