Các nhân phổ biến của Android

Các nhân phổ biến của AOSP (Dự án nguồn mở Android) (còn gọi là hạt nhân phổ biến của Android hay ACK) là ở hạ nguồn của Nhân kernel.org và bản vá được cộng đồng Android quan tâm nhưng chưa được hợp nhất vào dòng chính hoặc Hạt nhân được hỗ trợ dài hạn (LTS). Các bản vá này có thể bao gồm:

  • Điều chỉnh cho phiên bản cũ và lựa chọn chức năng ngược dòng (upstream) cần thiết cho Android tính năng
  • Các tính năng đã sẵn sàng cho thiết bị Android nhưng vẫn đang trong quá trình phát triển ở cấp trên
  • Những tính năng dành cho nhà cung cấp/Nhà sản xuất thiết bị gốc hữu ích cho các đối tác khác trong hệ sinh thái

android-mainline là nhánh phát triển chính cho các tính năng của Android. Linux dòng chính được hợp nhất vào android-mainline bất cứ khi nào Linus tovalds đăng một bản phát hành hoặc bản phát hành dùng thử. Trước năm 2019, các nhân phổ biến của Android là được tạo bằng cách sao chép hạt nhân LTS được khai báo gần đây và thêm Bản vá dành riêng cho Android. Quy trình này đã thay đổi vào năm 2019 để phân nhánh Android mới nhân hệ điều hành chung từ android-mainline. Mô hình mới này tránh được nỗ lực chuyển tiếp cổng và kiểm thử các bản vá Android bằng cách đạt được kết quả tương tự tăng dần. android-mainline trải qua quy trình kiểm tra liên tục đáng kể. đảm bảo hạt nhân chất lượng cao ngay từ ngày xuất bản.

Khi một LTS mới được khai báo ở chế độ ngược dòng, nhân hệ điều hành chung tương ứng sẽ được phân nhánh từ android-mainline. Điều này cho phép đối tác bắt đầu một dự án trước thời điểm của phiên bản LTS, bằng cách hợp nhất từ android-mainline. Sau nhánh kernel mới được tạo, các đối tác có thể thay đổi việc hợp nhất một cách liền mạch nguồn sang nhánh mới.

Các nhánh hạt nhân phổ biến khác nhận được hợp nhất thường xuyên từ các nhánh được liên kết của chúng Hạt nhân LTS. Những quá trình hợp nhất này thường được thực hiện ngay sau khi bản phát hành LTS được đăng. Cho ví dụ: khi Linux 6.1.75 được đăng, nó đã được hợp nhất vào 6.1 chung nhân hệ điều hành (android14-6.1). Chúng tôi đặc biệt khuyến khích đối tác cập nhật nhân hệ điều hành để luôn nắm bắt các bản sửa lỗi dành riêng cho Android và LTS.

Nhánh nhân ACK KMI

Hạt nhân GKI có Giao diện mô-đun hạt nhân ổn định. KMI là duy nhất được xác định theo phiên bản hạt nhân và bản phát hành nền tảng Android, vì vậy mã nhánh được đặt tên ANDROID_RELEASEKERNEL_VERSION. Ví dụ: 6.1 GKI nhân hệ điều hành cho Android 14 được đặt tên là android14-6.1. Cho Android 15 (thử nghiệm AOSP), nhân GKI android15-6.6 là được giới thiệu.

Giới thiệu và khởi chạy nhân

Trước Android 15 (bản thử nghiệm AOSP), nhân bất kỳ trong 3 nhân mới nhất có thể được dùng để khởi chạy thiết bị. Bắt đầu bằng Android 15 (AOSP thử nghiệm), hai phiên bản nhân hệ điều hành mới nhất có thể dùng để khởi chạy thiết bị. Hạt nhân khởi chạy cho Android 15 (thử nghiệm AOSP) là android15-6.6android14-6.1.

Do không cần phải nâng cấp nhân hệ điều hành khi cập nhật nền tảng bản phát hành, những nhân thiếu tính năng mới nhất cho bản phát hành nền tảng có thể vẫn được dùng để khởi chạy thiết bị. Do đó, các hạt nhân được thiết kế cho Bạn có thể dùng Android 14, chẳng hạn như android14-6.1, trên trên thiết bị ngay cả sau khi nâng cấp bản phát hành nền tảng lên Android 15 (thử nghiệm AOSP).

Bản phát hành nền tảng Android Khởi chạy hạt nhân Nhân tính năng
Android 15 (AOSP thử nghiệm) (2024) android15-6.6
android14-6.1
android15-6.6
Android 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.101
android14-6.1
android14-5.15
Android 13 (2022) android13-5.15
android13-5.10
android12-5.101
android12-5.41
android11-5.41
android13-5.15
android13-5.10
Android 12 (2021) android12-5.10
android12-5.4
android11-5.41
android-4.19-stable
android12-5.10
android12-5.4
Android 11 (2020) android11-5.4
android-4.19-stable
android11-5.4
android-4.19-stable

1 Các quy định hạn chế bổ sung có thể được áp dụng nếu GDPR được liên kết đã đã được cập nhật cho bản phát hành nền tảng. Nói một cách chung hơn, Số bản phát hành Android của hạt nhân phải cao hơn hoặc bằng phiên bản FCM mục tiêu. Xem Đối tượng giao diện nhà cung cấp – so khớp các nhánh hạt nhân để biết thông tin chi tiết.

Hệ phân cấp hạt nhân phổ biến

Nhánh từ android-mainline

Cấp cao nhất của hệ phân cấp hạt nhân chung được thể hiện trong Hình 1.

Tạo các nhân phổ biến từ nhân hệ điều hành android-mainline

Hình 1. Tạo các nhân phổ biến từ nhân hệ điều hành android-mainline

Xin lưu ý rằng nhân hệ điều hành Android chung mới android14-6.1 đã được phân nhánh từ android-mainline trong năm 2022. Vào năm 2023, khi LTS tiếp theo được khai báo, android15-6.6 được phân nhánh từ android-mainline.

Như được trình bày trong Hình 1, mỗi phiên bản hạt nhân có thể là cơ sở cho hai nhân GKI. Ví dụ: 2 hạt nhân phiên bản 5.15 là android13-5.15android14-5.15, cả hai đều là nhân tính năng cho bản phát hành nền tảng tương ứng. Chiến dịch này cũng là trường hợp của 5.10; android12-5.10 được tạo khi LTS được đã khai báo và android13-5.10 đã phân nhánh từ android12-5.10 tại nhân mốc quan trọng hoàn thành tính năng vào mùa xuân năm 2021 để cho phép phát triển các tính năng cho Android 13. Bắt đầu với Android 15 (AOSP thử nghiệm) (2024), chỉ có một nhân GKI mới cho mỗi phiên bản nhân (không có nhân android15-6.1).

Vòng đời nhánh ACK KMI

Vòng đời của nhánh ACK KMI được trình bày dưới đây trong Hình 2.

6.6 Vòng đời nhánh ACK KMI

Hình 2. 6.6 Vòng đời nhánh ACK KMI

Để làm rõ quá trình phát triển và vòng đời của nhánh, Hình 2 tập trung vào Các nhánh ACK KMI cho 6.6.

Mỗi nhánh ACK KMI chu kỳ qua ba giai đoạn được biểu thị trong Hình 2 bằng cách các màu khác nhau ở mỗi nhánh. Như đã trình bày, LTS được hợp nhất thường xuyên bất kể của giai đoạn.

Giai đoạn phát triển

Sau khi được tạo, nhánh ACK KMI sẽ chuyển sang giai đoạn phát triển (được gắn nhãn là dev trong Hình 2) và sẵn sàng đóng góp tính năng cho phiên bản Android tiếp theo bản phát hành nền tảng. Trong Hình 2, android15-6.6 được tạo khi 6.6 được được khai báo là nhân LTS luồng ngược (upstream) mới.

Giai đoạn ổn định

Khi nhánh ACK KMI được khai báo tính năng hoàn tất, nhánh này sẽ nhập giai đoạn ổn định (được gắn nhãn là ổn định trong Hình 2). Các tính năng dành cho đối tác và Bản sửa lỗi vẫn được chấp nhận, nhưng tính năng theo dõi KMI sẽ được bật để phát hiện mọi thay đổi ảnh hưởng đến giao diện. Trong giai đoạn này, những thay đổi có thể gây lỗi KMI được chấp nhận và định nghĩa KMI được cập nhật theo tần suất định sẵn (thường là hai lần một tuần). Xem Tổng quan về GKI cho thông tin chi tiết về việc giám sát KMI.

Giai đoạn đóng băng KMI

Trước khi bản phát hành mới cho nền tảng được chuyển lên AOSP, nhánh ACK KMI sẽ bị đóng băng và vẫn bị treo trong suốt thời gian hoạt động của nhánh. Điều này có nghĩa là không Các thay đổi có thể gây lỗi KMI được chấp nhận trừ phi phát hiện thấy một vấn đề bảo mật nghiêm trọng không thể giảm thiểu nếu không ảnh hưởng đến KMI ổn định. Để tránh KMI một số bản vá được hợp nhất từ LTS có thể bị sửa đổi hoặc bị huỷ bỏ nếu bản sửa lỗi không bắt buộc đối với các thiết bị Android.

Khi nhánh ACK KMI bị treo, bản sửa lỗi và các tính năng của đối tác có thể được chấp nhận miễn là nhân hệ điều hành chung của KMI hiện tại không bị hỏng. Bạn có thể mở rộng KMI với các biểu tượng được xuất mới, miễn là giao diện chứa KMI hiện tại không bị ảnh hưởng. Khi giao diện mới được thêm vào KMI, chúng ngay lập tức trở nên ổn định và không thể bị phá vỡ do những thay đổi trong tương lai.

Ví dụ: thay đổi thêm trường vào cấu trúc mà giao diện KMI sử dụng không được phép sử dụng kernel chung vì nó làm thay đổi định nghĩa giao diện:

struct foo {
  int original_field1;
  int original_field2;
  int new_field;  // Not allowed
};

int do_foo(struct foo &myarg)
{
  do_stuff(myarg);
}
EXPORT_SYMBOL_GPL(do_foo);

Tuy nhiên, bạn có thể thêm một hàm mới:

struct foo2 {
  struct foo orig_foo;
  int new_field;
};

int do_foo2(struct foo2 &myarg)
{
  do_stuff2(myarg);
}
EXPORT_SYMBOL_GPL(do_foo2);

Trong suốt vòng đời của hạt nhân GKI, khả năng tương thích ngược với không gian người dùng là được duy trì để nhân hệ điều hành có thể dùng cho nền tảng Android một cách an toàn bản phát hành dùng để khởi chạy thiết bị. Liên tục thử nghiệm với các bản phát hành trước sẽ đảm bảo duy trì khả năng tương thích. Trong Hình 2, android15-6.6 nhân hệ điều hành có thể được dùng cho các thiết bị Android 15 (thử nghiệm AOSP) trở lên thiết bị. Vì bản phát hành nền tảng Android là cũng tương thích với các phiên bản trước, nên có thể sử dụng nhân android14-6.1 dành cho thiết bị Android 15 (AOSP thử nghiệm) để phát hành hoặc nâng cấp.

Số thế hệ KMI

Nếu xảy ra sự kiện hợp nhất LTS trong giai đoạn ổn định hoặc xảy ra vấn đề bảo mật, hoặc sự kiện khác sau sự kiện này đòi hỏi phải chấp nhận bản vá thay đổi KMI, Số thế hệ KMI được ghi lại trong build.config.common sẽ tăng lên. Chiến lược phát hành đĩa đơn Bạn có thể tìm thấy phiên tạo KMI hiện tại bằng lệnh uname:

$ uname -r
6.6.30-android15-6-g86d10b30f51f

Số sau bản phát hành nền tảng là số tạo KMI (trong trường hợp này là 6).

Nếu quá trình tạo KMI thay đổi, thì nhân hệ điều hành đó không tương thích với các mô-đun của nhà cung cấp phù hợp với thế hệ KMI trước đó, nên các mô-đun phải được xây dựng lại và được cập nhật đồng bộ với nhân. Sau khi KMI đóng băng, quá trình tạo KMI sẽ thay đổi dự kiến sẽ rất hiếm khi xảy ra.

Khả năng tương thích giữa các hạt nhân

Các yêu cầu về khả năng tương thích giữa các nhân trong cùng một nhóm LTS (hỗ trợ dài hạn) là bắt đầu thay đổi bằng hạt nhân GKI mới.

Hạt nhân GKI

Hạt nhân GKI duy trì khả năng tương thích ngược với tất cả nền tảng Android bản phát hành hỗ trợ phiên bản kernel. Ngoài ra, nền tảng Android bản phát hành tương thích ngược với hạt nhân GKI của các bản phát hành trước. Loại đối thủ sau lượt đánh bóng bạn có thể yên tâm sử dụng nhân android14-6.1 được phát triển cho Android 14 (2023) trên các thiết bị chạy Android 15 (AOSP thử nghiệm) (2024). Khả năng tương thích được xác minh qua thử nghiệm VTS và CTS liên tục của các hạt nhân GKI với tất cả các bản phát hành được hỗ trợ.

KMI ổn định để có thể cập nhật hạt nhân mà không cần tạo lại mô-đun nhân trong hình ảnh nhà cung cấp.

Khả năng tương thích với KMI không được duy trì giữa các hạt nhân GKI khác nhau. Vì vậy, Ví dụ: không thể thay thế hạt nhân android14-6.1 bằng android15-6.6 nhân hệ điều hành mà không cần tạo lại tất cả các mô-đun.

Hạt nhân GKI chỉ được hỗ trợ cho bản phát hành đầu tiên và các bản phát hành tiếp theo. Không hỗ trợ những tính năng này trên các bản phát hành cũ. Như vậy, một Nhân android15-6.6 không được hỗ trợ cho các nhà phát triển đang chạy Android 14 (2023).

Ma trận tương thích

Bảng này cho biết các phiên bản nhân hệ điều hành được hỗ trợ và thử nghiệm với từng thiết bị Android bản phát hành nền tảng.

Bản phát hành nền tảng Android Các nhân được hỗ trợ để nâng cấp Các nhân được hỗ trợ để khởi chạy
Android 15 (AOSP thử nghiệm) (2024) android15-6.6
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android15-6.6
android14-6.1
Android 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
Android 13 (2022) android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
Android 12 (2021) android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.19-stable
android11-5.4
android12-5.4
android12-5.10
Android 11 (2020) android11-5.4
android-4.19-stable
android11-5.4
android-4.19-stable

Hỗ trợ vòng đời và các bản vá bảo mật

Các ACK nhận các hợp nhất LTS từ thượng nguồn và bản sửa lỗi cho mã dành riêng cho Android. Các bản sửa lỗi này bao gồm tất cả bản vá bảo mật nhân được trích dẫn trong Android Bản tin bảo mật có liên quan đến ACK.

ACK có thể được hỗ trợ lâu hơn so với nhân hệ điều hành ổn định ngược dòng (upstream) tương ứng tại kernel.org. Trong trường hợp này, Google cung cấp dịch vụ hỗ trợ mở rộng cho đến ngày hết hạn sử dụng (EOL) nêu trong . Khi các hạt nhân ở trạng thái EOLed, chúng sẽ không còn nữa được Google hỗ trợ và các thiết bị chạy chúng được coi là dễ bị tấn công.

Kể từ nhân hệ điều hành 6.6, vòng đời hỗ trợ của các nhân ổn định là 4 năm.

Bảng này cho biết thời gian tồn tại của các ACK được hỗ trợ:

Nhánh ACK Ngày
ra mắt
Hỗ trợ
toàn thời gian
(năm)
EOL
ổn định cho android-4.19 2018-10-22 6 2025-01-01
android11-5.4 2019-11-24 6 2026-01-01
android12-5.4 2019-11-24 6 2026-01-01
android12 – 5.10 2020-12-13 6 2027-07-01
android13 – 5.10 2020-12-13 6 2027-07-01
android13 – 5.15 2021-10-31 6 2028-07-01
android14 – 5.15 2021-10-31 6 2028-07-01
android14-6.1 2022-12-11 6 2029-07-01
android15–6.6 2023-10-29 4 2028-07-01

Kiểm thử nhân hệ điều hành phổ biến

Các nhân phổ biến được thử nghiệm bằng một số hệ thống CI ngoài hệ thống hạ nguồn thử nghiệm theo nhà cung cấp.

Kiểm thử chức năng hạt nhân Linux

Kiểm thử chức năng hạt nhân Linux (LKFT) bắt đầu các bộ kiểm thử khác nhau bao gồm tự kiểm tra, LTP, VTS và CTS trên một tập hợp thiết bị arm32 và arm64 vật lý. Có thể tìm thấy kết quả thử nghiệm gần đây tại đây.

Kiểm thử KernelCI

Các bài kiểm thử bản dựng và khởi động KernelCI bất cứ khi nào một bản vá mới được cam kết với một nhánh kernel. Nhiều hàng trăm cấu hình bản dựng được kiểm thử và khởi động trên nhiều bảng. Gần đây có thể tìm thấy kết quả cho nhân Android tại đây.

Kiểm thử trước và sau khi gửi trên Android

Thử nghiệm gửi trước được dùng để ngăn lỗi được đưa vào Các nhân phổ biến của Android. Bạn có thể tìm thấy bản tóm tắt kết quả kiểm tra trong mục "Kiểm tra" của phần thay đổi mã trong gerrit kernel chung của Android.

Có thử nghiệm sau khi gửi trên Android trên các bản dựng mới đã phát hành trong các nhánh nhân hệ điều hành phổ biến của Android khi các bản vá mới được cam kết cho một nhánh nhân hệ điều hành chung của Android trong ci.android.com. Bằng cách nhập aosp_kernel là một phần tên nhánh trong ci.android.com, bạn sẽ thấy danh sách các nhánh hạt nhân có kết quả. Ví dụ: có thể tìm thấy kết quả cho android-mainline tại đây. Khi nhấp vào một bản dựng cụ thể, bạn sẽ thấy trạng thái kiểm thử trong thẻ Test Results.

Các bài kiểm thử được xác định bằng tính năng ánh xạ kiểm thử với nhóm kiểm thử kernel-presubmit trong cây nguồn của nền tảng Android sẽ được chạy dưới dạng bài gửi trước cho các nhánh nhân hệ điều hành Android. Ví dụ: cấu hình sau trong test/vts/tests/kernel_proc_file_api_test/TEST_MAPPING sẽ kích hoạt vts_kernel_proc_file_api_test làm phép kiểm thử presbumit khi kiểm tra mã nhân hệ điều hành phổ biến của Android.

{
  "kernel-presubmit": [
    {
      "name": "vts_kernel_proc_file_api_test"
    }
  ]
}

Thử nghiệm 0 ngày

Quy trình kiểm thử 0 ngày thực hiện quá trình kiểm thử từng bản vá trên tất cả các nhánh nhân hệ điều hành phổ biến của Android khi các bản vá mới được cam kết. Nhiều người đóng góp và chạy các thử nghiệm khởi động, chức năng và hiệu suất. Tham gia nhóm công khai cros-kernel-buildReports

Ma trận kiểm thử

Nhân hệ điều hành Android phổ biến Bản phát hành Nền tảng Android Bộ kiểm tra
Số chính 15 14 13 12 11 10 LKFT KernelCI Gửi trước Đăng bài 0 ngày
android-mainline
android15-6.6
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable

Đóng góp cho các nhân hệ điều hành phổ biến của Android

Nhìn chung, việc phát triển tính năng nên được thực hiện trên Linux dòng chính chứ không phải trên Các nhân phổ biến của Android. Chúng tôi khuyến khích việc phát triển ở thượng nguồn và sau đó phát triển nào được chấp nhận ở đó, nó có thể dễ dàng được điều chỉnh cho phiên bản cũ nhánh nếu cần. Nhóm Android Kernel rất sẵn lòng hỗ trợ các nỗ lực phát trực tuyến vì lợi ích của hệ sinh thái Android.

Gửi bản vá cho Gerrit và tuân thủ nguyên tắc đóng góp.