Сегодня я расскажу о своем эксперименте по созданию ядра мобильной операционной системы с нуля. Основная цель — получить новые знания и впечатления. Ранее я изучал создание десктопных ОС, и теперь решил попробовать разобраться с мобильной платформой. Для этого мне понадобился смартфон с разблокированным загрузчиком и возможностью подключения UART-адаптера. Я выбрал Xiaomi Redmi Note 7 с архитектурой ARMv8, так как доступны исходные коды ядра для этого устройства.
Процесс загрузки начинается с выполнения кода из встроенной ПЗУ процессора Qualcomm. После инициализации передается управление вторичному загрузчику, который загружает основной загрузчик и ядро. При этом используется файл Device Tree Blob (DTB), который описывает аппаратное обеспечение.
Я выбрал язык Rust для написания своего ядра, так как он подходит для системной разработки. В процессе работы я создал минимальный образ ядра, который будет совместим с штатным загрузчиком. В дальнейшем я планирую доработать функциональность, включая вывод на экран. В следующей части статьи я расскажу о реализации менеджера памяти для ядра. Буду рад конструктивным комментариям!