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

Hạt nhân sản phẩm (còn 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 vận chuyển trên thiết bị. Trước GKI, hạt nhân của sản phẩm bắt nguồn từ một loạt thay đổi hạt nhân ngược dòng. Hình 1 cho thấy cách các phần bổ sung nhân hệ điều hành tạo ra nhân sản phẩm (OEM/nhân thiết bị):

Xây dựng hạt nhân sản phẩm trước GKI

Hình 1. Xây dựng hạt nhân sản phẩm trước GKI.

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

Tất cả các sửa đổi này có thể dẫn đến việc 50% mã nhân không phải là mã cây và không phải từ nhân Linux hoặc ACK thượng nguồn. Trước GKI, gần như mọi thiết bị đều có một nhân tuỳ chỉnh dẫn đến việc phân mảnh nhân.

Chi phí phân mảnh

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

Bản 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 điều chỉnh cho phiên bản cũ trong từng nhân của thiết bị. Tuy nhiên, do tình trạng phân mảnh hạt nhân, nên việc truyền tải các bản sửa lỗi bảo mật đến các thiết bị Android trong thực tế sẽ rất tốn kém.

Khó hợp nhất các bản cập nhật được hỗ trợ lâu dài

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 quan trọng khác. Việc 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, chúng tôi phát hiện ra rằng 90% vấn đề bảo mật liên quan đến nhân hệ điều hành đượ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 nội dung sửa đổi tuỳ chỉnh trong hạt nhân thiết bị, bạn khó có thể chỉ hợp nhất các bản sửa lỗi LTS vào hạt nhân thiết bị.

Ngăn chặn việc nâng cấp bản phát hành nền tảng Android

Tình trạng phân mảnh khiến các tính năng mới của Android yêu cầu thay đổi hạt nhân khó được thêm vào các thiết bị trong thực tế. Mã Khung Android phải giả định rằng có tối đa 5 phiên bản hạt nhân được hỗ trợ và không có thay đổi nào đối với hạt nhâ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, các hạt nhân này chưa được cải tiến bằng các tính năng mới kể từ Android 8 vào năm 2017).

Khó đóng góp các thay đổi về nhân trở lại Linux ngược dòng

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

Khoảng thời gian trễ dài giữa bản phát hành nhân cấp trên và sản phẩm khiến cộng đồng Android khó có thể cung cấp các tính năng và trình điều khiển cần thiết vào nhân cấp trên.

Khắc phục tình trạng phân mảnh: Hình ảnh hạt nhân chung

Dự án Hình ảnh nhân chung (GKI) giải quyết tình trạng phân mảnh nhân bằng cách thống nhất nhân cốt lõi và di chuyển tính năng hỗ trợ SoC và bo mạch ra khỏi nhân cốt lõi vào các mô-đun nhà cung cấp có thể tải. GKI cũng cung cấp một Giao diện mô-đun nhân (KMI) ổn định cho các mô-đun của nhà cung cấp, nhờ đó, các mô-đun và 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 tạo từ các nguồn ACK.
  • Hạt nhân GKI là một tệp nhị phân hạt nhân đơn cùng với các mô-đun có thể tải liên kết theo từng kiến trúc, theo từng bản phát hành LTS (hiện chỉ có arm64 cho android11-5.4android12-5.4).
  • Hạt nhân GKI được kiểm thử với tất cả bản phát hành Nền tảng Android được hỗ trợ ACK liên kết. Không có tính năng nào bị ngừng sử dụng trong suốt thời gian hoạt động của phiên bản hạt nhân GKI.
  • Hạt nhân GKI hiển thị một KMI ổn định cho trình điều khiển trong một LTS nhất định.
  • Hạt nhân GKI không chứa mã dành riêng cho SoC hoặc dành riêng cho bo mạch.

Để xem hình ảnh về kiến trúc GKI, vui lòng tham khảo bài viết 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ừ nhân phiên bản 5.4 trong bản phát hành nền tảng Android 11.

Có hai giai đoạn GKI:

  • GKI 1.0 được giới thiệu trong Android 11 cho các thiết bị có nhân 5.4. GKI 1.0 áp dụng cho tất cả thiết bị được vận chuyển bằng hạt nhân 5.4, ngay cả những thiết bị được khởi chạy bằng Android 12 hoặc Android 13.
  • GKI 2.0 được giới thiệu trong Android 12 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 với nhân 5.10 trở lên.

GKI 1.0

Trong GKI 1.0, các thiết bị khởi chạy bằng hạt nhân phiên bản 5.4 phải vượt qua quy trình kiểm thử GKI (các bản phát hành nền tảng Android 11 trở lên). Sau đây là các mục tiêu của GKI 1.0:

  • Tránh hồi quy trong Bộ kiểm thử nhà cung cấp (VTS) hoặc Bộ kiểm thử tính 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 nhân hệ điều hành bằng các nhân hệ điều hành phổ biến của AOSP.
  • Đưa những thay đổi cốt lõi về Android vào nhân cho những thiết bị nâng cấp và chạy bản phát hành Android mới.
  • Không làm hỏng không gian người dùng Android.
  • Tách biệt các thành phần dành riêng cho phần cứng khỏi nhân cốt lõi dưới dạng các mô-đun có thể tải.

Để xem 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 bằng hạt nhân phiên bản 5.10 trở lên phải đi kèm với hạt nhân GKI (bắt đầu từ Android 12). Hình ảnh khởi động có chữ ký hiện có sẵn và được cập nhật thường xuyên cùng với tính năng LTS (hỗ trợ dài hạn) cũng như các bản sửa lỗi quan trọng. Vì KMI duy trì độ ổn định của tệp nhị phân, nên bạn có thể cài đặt các hình ảnh khởi động này mà không cần thay đổi hình ảnh của nhà cung cấp. Sau đây là các mục tiêu GKI 2.0:

  • Không đưa ra các hồi quy hiệu suất hoặc năng lượng đáng kể khi thay thế hạt nhân sản phẩm bằng hạt nhân GKI.
  • Cho phép đố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 nhân hệ điều hành 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 nhân hệ điều hành chính cho thiết bị (ví dụ: từ phiên bản 5.10 xuống nhân hệ điều hành LTS 2021).
  • Duy trì một tệp nhị phân hạt nhân GKI cho mỗi cấu 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 hệ điều hành Android. Tài liệu về nhân bên ngoài các tiểu mục GKI 1.0Các nhân trước đó (<=4.19) phản ánh cấu trúc GKI 2.0.