Сегодня я расскажу о своем эксперименте по написанию ядра мобильной операционной системы с нуля. Основная цель — это не только научиться, но и развлечься. В процессе разработки мне понадобился смартфон с разблокированным загрузчиком и возможностью подключения UART-адаптера для вывода отладочных сообщений. Я выбрал Xiaomi Redmi Note 7 с архитектурой ARMv8, так как в сети доступны исходные коды ядра для этого устройства. новая версия мобильной ОС
Загрузка устройства начинается с выполнения кода, записанного в встроенной ПЗУ, который инициализирует DRAM и передает управление вторичному загрузчику. Основной загрузчик, в свою очередь, загружает упакованное ядро Android. Для успешной компиляции я выбрал язык Rust, а сборка проекта проходила на Ubuntu. Я установил необходимые инструменты и создал минимальный образ ядра, который затем упаковал в формат Android Boot Image.
После успешной компиляции и загрузки через fastboot, я смог получить первые логи, которые подтвердили, что ядро начало загружаться. В следующих частях я планирую рассказать о реализации менеджера памяти для ядра. Спасибо за внимание!