Переносить ядро ​​на другую архитектуру?

Я хочу перенести ядро ​​ xnu на архитектуру ARM с конечной целью - иметь возможность запускать полное ядро ​​внутри Qemu. Хотя я понимаю, что это очень сложная задача, я все же хочу попробовать ее.

Насколько мне известно, вы должны написать точку входа для ядра ( osfmk / arm / start.s ), где вы выполняете общую инициализацию (MMU и PlatformExpert), после чего Kext Подсистемы / IOKit могут быть запущены и загружают специфичные для ЦП расширения (например, ловушки, GPIO, часы), которые либо предварительно связаны с двоичным файлом, либо загружаются загрузчиком (, потому что ядро ​​не может взаимодействовать с файловой системой из-за NAND расширения пока не доступны ).

Хотя у меня есть общее представление о том, как работают процессоры ARM, я даже не знаю, с чего начать работу с портом xnu , потому что не совсем уверен, как:

  • Выполните отладку на низком уровне (поскольку средства отладки ядра недоступны во время запуска).
  • Интегрируйте ветвь ARM с остальной частью дерева исходных текстов ядра (т. Е. Убедитесь, что все в osfmk / kern работает).
  • Создайте нормальную среду для запуска независимого от платформы ядра ( machine_startup () );
  • Исправьте некоторый специфичный для платформы код внутри основного кода ядра (большая часть кода платформы ограничена ] osfmk / platform_name , но некоторые из них должны быть интегрированы в osfmk / kern и другие).

Есть ли какие-нибудь достойные руководства по портированию ядра XNU (или, по крайней мере, Mach ) на разные платформы, как и руководства для Linux?

6
задан Kristina Brooks 23 December 2011 в 14:13
поделиться