xnu
커널을 Qmu에서 전체 커널을 실행할 수 있다는 궁극적 인 목표로 ARM 아키텍처에 이식하려고합니다. 나는 이것이 매우 어려운 일임을 알고 있지만, 나는 여전히 그것에 도전하고 싶다.커널을 다른 아키텍처로 이식 하시겠습니까?
내가 아는 한, Kext/IOKit 서브 시스템을 시작하고 CPU 특정 확장을로드 할 수있는 일반 초기화 (MMU 및 PlatformExpert)를 수행하는 커널의 진입 점 (osfmk/arm/start.s
) (즉, 트랩, GPIO, 클럭)은 부트 로더에 의해로드되거나 (), NAND 확장이 사용 가능하지 않기 때문에 커널이 파일 시스템과 상호 작용할 수 없기 때문에입니다.
- 것은 저를 수행 : 나는 어떻게 ARM CPU의 작업에 대한 일반적인 생각을 할 수 있지만 내가하는 방법을 완전히 확실하지 않다 때문에
, 난, 어디
xnu
포트를 시작하는 모른다 커널 디버깅 기능은 시작하는 동안 조기에 사용할 수 없으므로 수준 디버깅이 필요합니다. - ARM 분기를 나머지 커널 소스 트리와 통합하십시오 (즉,
osfmk/kern
의 내용이 작동하는지 확인하십시오). - 플랫폼 독립적 커널을 시작할 수있는 환경을 만듭니다 (
machine_startup()
). - 메인 커널 코드 안에 일부 플랫폼 관련 코드를 수정하십시오 (대부분의 플랫폼 코드는
osfmk/platform_name
으로 제한되지만 그 중 일부는osfmk/kern
등으로 통합되어야합니다). 다른 플랫폼에 XNU (또는 적어도 마하) 커널을 포팅에 어떤 점잖은 가이드 리눅스 가이드가있는 것처럼,
이 있습니까?
+1 나는 당신의 용기에 박수를 보냅니다. 누군가는 힘든 일을해야합니다.나는 이것에 관해 아무 것도 모른다. 그러나 당신이 이것을 시작한다면 당신은 아마도 디버깅 가이드를 작성하게 될 것이라고 생각할 것이다. 카이 카하 형제. –