Dự án Hình ảnh hạt nhân chung (GKI)

Hạt nhân sản phẩm , còn được gọi là hạt nhân thiết bị hoặc hạt nhân OEM , là hạt nhân mà bạn gửi trên thiết bị của mình. Trước GKI, nhân sản phẩm được bắt nguồn từ một loạt các thay đổi nhân ngược dòng. Hình 1 cho thấy cách bổ sung kernel mang lại kernel sản phẩm (kernel OEM/device):

Xây dựng hạt nhân sản phẩm tiền GKI

Hình 1. Xây dựng nhân sản phẩm tiền GKI.

  1. Hạt nhân được hỗ trợ dài hạn (LTS) của Linux từ kernel.org đã được sửa đổi với các bản vá dành riêng cho Android dẫn đến Hạt nhân chung của Android (ACK) .
  2. ACK đã được sửa đổi bởi các nhà cung cấp đã bổ sung hỗ trợ cho Hệ thống trên chip (SoC) của họ. Nhà cung cấp cũng có thể bổ sung các tính năng tối ưu hóa hiệu suất hoặc năng lượng. Hạt nhân kết quả được gọi là hạt nhân của nhà cung cấp .
  3. Cuối cùng, nhân của nhà cung cấp đã được các OEM sửa đổi thêm với trình điều khiển thiết bị bổ sung và các tùy chỉnh mà họ cho là cần thiết. Hạt nhân kết quả được gọi là hạt nhân sản phẩm .

Tất cả những sửa đổi này có thể dẫn đến kết quả là có tới 50% mã hạt nhân là mã ngoài cây chứ không phải từ các hạt nhân Linux hoặc ACK ngược dòng. Trước GKI, gần như mọi thiết bị đều có kernel tùy chỉnh dẫn đến phân mảnh kernel.

Cái giá của sự phân mảnh

Sự phân mảnh hạt nhân có một số tác động tiêu cực đến cộng đồng Android.

Cập nhật bảo mật tốn nhiều công sức

Các bản vá bảo mật được trích dẫn trong Bản tin bảo mật Android (ASB) phải được nhập ngược vào từng nhân của thiết bị. Tuy nhiên, do sự phân mảnh của kernel, việc phổ biến các bản sửa lỗi bảo mật cho các thiết bị Android tại hiện trường là cực kỳ tốn kém.

Khó hợp nhất Cập nhật được hỗ trợ dài hạn

Các bản phát hành được hỗ trợ dài hạn (LTS) bao gồm các bản sửa lỗi bảo mật và các bản sửa lỗi nghiêm trọng khác. Luôn cập nhật các bản phát hành LTS đã được chứng minh là cách hiệu quả nhất để cung cấp các bản sửa lỗi bảo mật. Trên các thiết bị Pixel, người ta phát hiện ra rằng 90% sự cố bảo mật kernel được báo cáo trong ASB đã được khắc phục cho các thiết bị luôn cập nhật.

Tuy nhiên, với tất cả các sửa đổi tùy chỉnh trong nhân thiết bị, thật khó để hợp nhất các bản sửa lỗi LTS vào nhân thiết bị.

Ức chế nâng cấp phát hành nền tảng Android

Sự phân mảnh gây khó khăn cho các tính năng Android mới yêu cầu thêm thay đổi kernel vào các thiết bị trong trường. Mã Android Framework phải giả định rằng có tới năm phiên bản hạt nhân được hỗ trợ và không có thay đổi hạt nhân nào được thực hiện cho bản phát hành nền tảng mới (Android 10 hỗ trợ các hạt nhân 3.18, 4.4, 4.9, 4.14 và 4.19, trong một số trường hợp thì không. được cải tiến với các tính năng mới kể từ Android 8 năm 2017).

Khó đóng góp các thay đổi kernel cho Linux ngược dòng

Với tất cả những thay đổi được thực hiện đối với kernel, hầu hết các thiết bị hàng đầu đều có phiên bản kernel đã tồn tại ít nhất 18 tháng. Ví dụ: kernel 4.14 được kernel.org phát hành vào tháng 11 năm 2017 và điện thoại Android đầu tiên sử dụng kernel 4.14 được xuất xưởng vào mùa xuân năm 2019.

Sự chậm trễ kéo dài giữa quá trình phát hành hạt nhân ngược dòng và các sản phẩm khiến cộng đồng Android gặp khó khăn trong việc cung cấp các tính năng và trình điều khiển cần thiết cho hạt nhân ngược dòng.

Sửa lỗi phân mảnh: Hình ảnh hạt nhân chung

Dự án Hình ảnh hạt nhân chung (GKI) giải quyết tình trạng phân mảnh hạt nhân bằng cách hợp nhất hạt nhân lõi và chuyển hỗ trợ SoC và bo mạch ra khỏi hạt nhân lõi thành các mô-đun nhà cung cấp có thể tải được. GKI cũng cung cấp Giao diện mô-đun hạt nhân (KMI) ổn định cho các mô-đun của nhà cung cấp, do đó các mô-đun và hạt nhân có thể được cập nhật độc lập. Một số đặc điểm của hạt nhân GKI là:

  • Hạt nhân GKI được xây dựng từ các nguồn ACK.
  • Nhân GKI là một hệ nhị phân một nhân cộng với các mô-đun có thể tải liên quan trên mỗi kiến ​​trúc, trên mỗi bản phát hành LTS (hiện chỉ có arm64 cho android11-5.4android12-5.4 ).
  • Nhân GKI được thử nghiệm với tất cả các bản phát hành Nền tảng Android được hỗ trợ cho ACK liên quan. Không có sự ngừng sử dụng tính năng nào trong suốt vòng đời của phiên bản hạt nhân GKI.
  • Nhân GKI hiển thị KMI ổn định cho các trình điều khiển trong LTS nhất định.
  • Nhân GKI không chứa mã dành riêng cho SoC hoặc dành riêng cho bo mạch.

Để có hình ảnh về kiến ​​trúc GKI, hãy tham khảo phần tổng quan về Kernel .

GKI là một thay đổi phức tạp được triển khai theo nhiều giai đoạn, bắt đầu từ hạt nhân v5.4 trong bản phát hành nền tảng Android 11.

Hiện tại có hai giai đoạn GKI:

  • GKI 1.0 được giới thiệu trong Android 11 dành cho các thiết bị có kernel 5.4. GKI 1.0 áp dụng cho tất cả các thiết bị được cài sẵn nhân 5.4, ngay cả những thiết bị chạy Android 12 hoặc Android 13.
  • GKI 2.0 được giới thiệu trong Android 12 dành cho các thiết bị có nhân 5.10 và là tiêu chuẩn mới cho tất cả các thiết bị đi kèm nhân 5.10 trở lên.

GKI 1.0

Trong GKI 1.0, các thiết bị khởi chạy với kernel phiên bản 5.4 phải vượt qua thử nghiệm GKI (bản phát hành nền tảng Android 11 trở lên). Các mục tiêu của GKI 1.0 bao gồm:

  • Tránh hồi quy trong Bộ kiểm tra nhà cung cấp (VTS) hoặc Bộ kiểm tra tương thích (CTS) khi thay thế hạt nhân sản phẩm bằng hạt nhân GKI.
  • Giảm gánh nặng cho đối tác trong việc cập nhật hạt nhân của họ bằng các hạt nhân thông thường AOSP.
  • Bao gồm các thay đổi cốt lõi của Android trong nhân để nâng cấp và khởi chạy thiết bị với các bản phát hành Android mới.
  • Đừng phá vỡ không gian người dùng Android.
  • Tách các thành phần dành riêng cho phần cứng khỏi lõi lõi dưới dạng các mô-đun có thể tải được.

Để biết tài liệu về GKI 1.0, hãy xem phần GKI 1.0 .

GKI 2.0

Trong GKI 2.0, các thiết bị khởi chạy với kernel phiên bản 5.10 trở lên phải đi kèm với kernel GKI (bắt đầu từ Android 12). Hình ảnh khởi động đã ký có sẵn và được cập nhật thường xuyên với LTS và các bản sửa lỗi nghiêm trọng. Vì tính ổn định nhị phân được duy trì cho KMI nên bạn có thể cài đặt các ảnh khởi động này mà không cần thực hiện thay đổi đối với ảnh của nhà cung cấp. Các mục tiêu của GKI 2.0 bao gồm:

  • Không gây ra hiện tượng hồi quy hiệu suất hoặc sức mạnh đáng kể khi thay thế hạt nhân sản phẩm bằng hạt nhân GKI.
  • Cho phép các đối tác cung cấp các bản sửa lỗi và bản sửa lỗi bảo mật kernel mà không cần sự tham gia của nhà cung cấp.
  • Giảm chi phí cập nhật phiên bản kernel chính cho thiết bị (ví dụ: từ v5.10 lên kernel LTS 2021).
  • Duy trì một tệp nhị phân hạt nhân GKI cho mỗi kiến ​​trúc bằng cách cập nhật các phiên bản hạt nhân với quy trình nâng cấp rõ ràng.

GKI 2.0 đại diện cho trạng thái mới nhất của nhân Android. Tài liệu hạt nhân bên ngoài các phần phụ GKI 1.0hạt nhân trước đó (<=4.19) phản ánh kiến ​​trúc GKI 2.0.