Kernels khác nhau từ nhà sản xuất để nhà sản xuất. Rất nhiều hạt nhân đến từ dòng nguồn nguyên liệu thuần túy được tìm thấy trên CAF, những gì các nhà sản xuất này làm là lấy các nguồn chứng khoán đó, sửa đổi chúng cho phù hợp dựa trên bo mạch / chipset được sử dụng, đồng thời, thực hiện trình điều khiển riêng của họ.
Hãy nhìn xung quanh bạn, có các biến thể của màn hình cảm ứng, các biến thể của chipset wifi, chưa kể, gia tốc kế, cảm biến, pin, la bàn, âm thanh, đồ họa.
Lấy một nguồn nhân từ HTC chẳng hạn sẽ không hoạt động trên Samsung và ngược lại.
Các nhà sản xuất có thể tự do chọn các bit khác nhau hoặc lấy nguồn khác nhau được tích hợp vào bảng mạch. Không có quy tắc cứng hoặc nhanh liên quan. Do đó rất nhiều hack / sửa đổi để kernel hoạt động đúng.
Bạn không bao giờ được so sánh với các hạt nhân phân phối Linux trên máy tính để bàn trong đó nó có PCI, PCI-Express, SATA, VGA, SVGA, USB, Ethernet vì chúng là một trò chơi bóng hoàn toàn khác nhau. Sự khác biệt chính với CentOS và với Linux Kernel của Android là thế này - TẤT CẢ các trình điều khiển được biên dịch dưới dạng mô-đun hoặc tích hợp sẵn, do đó mọi phân phối Linux sẽ chỉ đơn giản là "hoạt động bình thường". Một lần nữa, với các bản phân phối Linux trên máy tính để bàn - bạn có một kiến trúc - x86 do đó, một nhân Linux từ PC Dell, có thể hoạt động vượt trội trên Lenovo với điều kiện các trình điều khiển tiêu chuẩn không được biên dịch.
Đừng quên, trong thế giới Android, có các biến thể của hạt nhân được xây dựng cho các chipset ARM cụ thể, như ARMv6, ARMv7, có TEGRA, có EXYNOS và chúng không tương thích nhị phân với nhau. Do đó, nếu một kernel được biên dịch cho TEGRA, hãy quên nó đi, nó sẽ không hoạt động trên ARMv7!
Lý do một số hạt nhân trên Android dường như bị "phá vỡ" là do nhà sản xuất. Một số (Zte là một ví dụ rất hay) phát hành một nguồn bị đánh cắp có thể biên dịch từ nguồn nhưng không khởi động được do trình điều khiển bị thiếu không có trong giấy phép GPLv2 hoặc GPLv3. Đó là vấn đề, do đó một số tin tặc phải lùng sục khắp nơi để tìm kiếm manh mối; Một số nhà sản xuất, nếu không phải tất cả, làm theo. Phiên bản hiện tại của nguồn Zte có ý định là 2.6,35,7, nhưng trên thực tế, cơ sở nguồn thực sự 2.6.32.9 của nó với rất nhiều sửa đổi do đó không đại diện cho nguồn hạt nhân thực sự cho 2.6,35.7!
Đây là nơi các nhà sản xuất phải phát hành các nguồn tương ứng của họ, không chỉ tuân thủ GPLv2 trở lên, mà là để cộng đồng có thể sửa đổi nó, chẳng hạn như thêm khả năng ép xung.
Do đó, việc hack có liên quan đến hậu trường và rất nhiều điều gây rối với các trình điều khiển đang cố gắng làm cho nó hoạt động và cũng không dễ gỡ lỗi .. Một số trình điều khiển có thể được cấp phép chéo, NHƯNG không thể được phân phối tùy theo điều khoản và điều kiện như thương lượng.
Rất may, giờ đây tất cả đã thay đổi với dòng nguồn 3.xx, vì trình điều khiển Android hiện được tích hợp vào các nguồn chính. Nhưng có một vấn đề!
Hãy thử chuyển kernel 3.xx sang thiết bị cầm tay hiện có khoảng 12-18 tháng tuổi; Không phải cơ hội của một quả cầu tuyết trong địa ngục sẽ hoạt động, bởi vì, do các yếu tố khác nhau, các nguồn 3.xx khác rất nhiều so với nguồn 2.6.x và sẽ mất rất nhiều hack để làm cho nó hoạt động - tôi nên biết, đã thử chuyển nguồn 2.6,38.6 cho Zte Blade và không thành công.
Tương tự, bản phát hành kernel 3.0.1 mới nhất - khi làm việc với dự án ics4blade trên Modaco, đã thực hiện nhiều nỗ lực để chuyển nó nhưng điều đó cho thấy thực tế đơn giản là Zte đã tạo ra một mớ hỗn độn rất tệ về nguồn mà không thể chuyển được. .