Linux 5.0 запустили на процессоре ESP32 с 8 МБ RAM
ESP32 Espressif ESP-WROOM-32 Dev Board
ESP32 — серия бюджетных микроконтроллеров с низким энергопотреблением. Используются в различных устройствах Интернета вещей. Представляют собой SoC с интегрированными контроллерами Wi-Fi и Bluetooth и антеннами.
Процессор ESP32 поддерживает до 8 МБ RAM, что соответствует минимальным требованиям для запуска Linux. В этом мало практической пользы, но почему бы не проверить теорию на практике.
Китайский разработчик Хуэй Линь сумел успешно загрузить Linux 5.0 на процессоре ESP32 с 8 МБ RAM. Подробностями он поделился в треде Reddit и на форуме WhyCan.
Лог загрузчика на скриншоте:
В данном случае Linux 5.0.0 загружается на плате с двухъядерным процессором Xtensa (ESP32-D0WD) производства китайской компании Tensilica, с 8 МБ PSRAM и 2 МБ флэш-памяти SPI.
Процесс загрузки немного запутанный. Сначала загрузчик загружает Juice VM (маленькая виртуальная машина RISC-V), которая запускает интерфейс OpenSBI (RISC-V Open Source Supervisor Binary Interface). Через него загружается ядро Linux и небольшая файловая система.
Все файлы опубликованы в репозитории. Общий размер образа около 1,5 МБ, что почти полностью заполняет флэш-память объемом 2 МБ на плате. Интерфейсы SPI и UART поддерживаются, но загрузка в консоль пока не проходит, судя по всему.
Juice VM — это виртуальная машина RISC-V, которая умеет загружать FreeRTOS, RT-Thread и другие операционные системы. В данном случае её портировали на ESP-IDF с поддержкой ESP32, ESP32-S2 и ESP32-C3.
(видео воспроизводится с ускорением 30х)
Нужно отметить, что Linux не первый раз запускают на этих микроконтроллерах. В прошлом году умельцы сумели загрузить старую версию Ubuntu 9.04 на ESP32.
Если вспомнить, то в начале 90-х Linux запускали даже на настольных компьютерах 386DX/40 с 4 МБ RAM, не говоря уже о мощных рабочих станциях 486DX2/66.
А вообще, Linux можно запустить даже на 8-битном микроконтроллере, хотя на нём нужно подождать примерно два часа до появления строки bash, и ещё четыре часа до логина в Ubuntu.
Здесь тактовая частота процессора около 6,5 кГц.