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

Trang này mô tả dự án Hình ảnh kernel chung (GKI) và cách dự án này tăng tính ổn định của Android cũng như cải thiện tính bảo mật.

Lịch sử

Mọi thiết bị chạy Android đều cần một kernel sản xuất. Trước GKI, các kernel đều là tuỳ chỉnh và dựa trên Kernel chung của Android (ACK), với các thay đổi dành riêng cho thiết bị do nhà cung cấp hệ thống trên chip (SoC) và OEM thực hiện.

Việc tuỳ chỉnh này có thể khiến 50% mã kernel là mã ngoài cây và không phải từ các kernel Linux ngược dòng hoặc ACK. Do đó, bản chất tuỳ chỉnh của các kernel trước GKI đã dẫn đến tình trạng phân mảnh kernel đáng kể.

Chi phí phân mảnh

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

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

Khó hợp nhất các bản 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 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 thấy rằng 90% vấn đề 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 tuỳ chỉnh trong kernel của thiết bị, bạn khó có thể chỉ hợp nhất các bản sửa lỗi LTS vào kernel của 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 kernel khó được thêm vào các thiết bị trong thực tế. Mã Khung Android phải tính đến các biến thể kernel khác nhau và không thể dựa vào các tính năng mới của Android được triển khai trong kernel. Điều này làm chậm quá trình đổi mới và khiến kích thước cũng như độ phức tạp của mã tăng lên.

Khó đóng góp các thay đổi kernel trở lại Linux ngược dòng

Cách phân mảnh để kéo các bản vá vào nhân hệ điều hành sản xuất đã gây ra sự chậm trễ lên đến 18 tháng kể từ thời điểm bản phát hành LTS (hỗ trợ dài hạn) có sẵn thượng nguồn cho đến khi bản phát hành đó có trong một Thiết bị. Sự chậm trễ kéo dài này giữa bản phát hành kernel ngược dòng và các sản phẩm khiến cộng đồng Android khó đưa các tính năng và trình điều khiển cần thiết vào các kernel ngược dòng. Vào thời điểm người dùng gửi đề xuất cải thiện, cơ sở mã đã thay đổi, khiến việc cho thấy mức độ liên quan của bản vá trở nên khó khăn.

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

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

  • Kernel GKI được xây dựng từ các nguồn ACK.
  • Kernel GKI là một tệp nhị phân kernel đơn cộng với các mô-đun có thể tải được liên kết cho mỗi kiến trúc, cho mỗi bản phát hành LTS.
  • Kernel GKI được kiểm thử với tất cả các bản phát hành Nền tảng Android được hỗ trợ cho ACK được liên kết. Không có tính năng nào bị ngừng hoạt động trong suốt thời gian tồn tại của phiên bản kernel GKI.
  • Kernel GKI hiển thị một KMI ổn định cho các trình điều khiển trong một LTS nhất định.
  • Kernel GKI không chứa mã dành riêng cho SoC hoặc mã dành riêng cho bo mạch.

Để xem hình ảnh về kiến trúc GKI, hãy tham khảo bài viết Tổng quan về kernel.

Hình ảnh chung

Kể từ Android 12, các thiết bị xuất xưởng có phiên bản kernel 5.10 trở lên phải xuất xưởng với kernel GKI. Các bản dựng phát hành Hình ảnh kernel chung (GKI) được cập nhật thường xuyên và được cập nhật thường xuyên với các bản sửa lỗi LTS và các bản sửa lỗi quan trọng. Vì tính ổn định của tệp nhị phân được duy trì cho KMI, 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 nhà cung cấp. Dự án GKI có các mục tiêu sau:

  • Không gây ra tình trạng giảm hiệu suất hoặc mức tiêu thụ điện năng đáng kể khi thay thế kernel sản phẩm bằng kernel GKI.
  • Cho phép các đối tác cung cấp các bản sửa lỗi bảo mật kernel và các bản sửa lỗi mà không cần sự tham gia của nhà cung cấp.
  • Giảm chi phí nâng cấp phiên bản kernel chính cho các thiết bị.
  • Duy trì một tệp nhị phân kernel GKI duy nhất cho mỗi kiến trúc bằng cách cập nhật các phiên bản kernel theo một quy trình nâng cấp rõ ràng.