Tôi muốn chuyển hạt nhân xnu
sang kiến trúc ARM, với mục tiêu cuối cùng là có thể chạy hạt nhân đầy đủ bên trong Qemu. Trong khi tôi nhận ra rằng đây là một nhiệm vụ rất khó khăn, tôi vẫn muốn có một đi vào nó. Theo như tôi biết, bạn có nghĩa là viết một điểm vào cho hạt nhân (osfmk/arm/start.s
) nơi bạn khởi tạo chung (MMU và PlatformExpert) sau đó các hệ thống con Kext/IOKit có thể được khởi động và tải các phần mở rộng CPU cụ thể (ví dụ: bẫy, GPIO, đồng hồ) hoặc được prelinked vào nhị phân hoặc được tải bởi bộ nạp khởi động (vì hạt nhân không thể tương tác với hệ thống tệp do các phần mở rộng NAND không khả dụng)).Chuyển kernel sang một kiến trúc khác?
Trong khi tôi làm có một ý tưởng chung về cách làm việc ARM CPU, tôi thậm chí không biết được nơi để bắt đầu với cổng xnu
, bởi vì tôi không hoàn toàn chắc chắn làm thế nào để:
- Do thấp gỡ lỗi cấp (vì các cơ sở gỡ lỗi hạt nhân không khả dụng sớm trong khi khởi động).
- Tích hợp nhánh ARM với phần còn lại của cây nguồn hạt nhân (ví dụ: đảm bảo nội dung trong
osfmk/kern
đang hoạt động). - Tạo môi trường lành mạnh cho hạt nhân độc lập nền tảng để bắt đầu (
machine_startup()
); - Sửa một số mã nền tảng cụ thể bên trong mã lõi chính (hầu hết mã nền được giới hạn ở
osfmk/platform_name
nhưng một số mã phải được tích hợp vàoosfmk/kern
và các loại khác).
Có bất kỳ hướng dẫn đàng hoàng trên porting các XNU (hoặc ít nhất Mach) hạt nhân đến các nền tảng khác nhau, giống như có những hướng dẫn Linux?
+1 Tôi hoan nghênh sự can đảm của bạn. Ai đó phải làm những việc khó nhọc.Tôi không biết bất cứ điều gì về điều này nhưng tôi nghĩ rằng nếu bạn bắt đầu này thì bạn sẽ là một trong đó có thể sẽ viết hướng dẫn gỡ lỗi! Kai Kaha bro. –