Vietnamese (machine translation)

Lưu ý

Mục đích của file này là để độc giả tiếng Việt có thể đọc và hiểu tài liệu nhân kernel dễ dàng hơn, không phải để tạo ra một nhánh tài liệu riêng. Nếu bạn có bất kỳ nhận xét hoặc cập nhật nào cho file này, vui lòng thử cập nhật file tiếng Anh gốc trước. Nếu bạn thấy có sự khác biệt giữa bản dịch và bản gốc, hoặc có vấn đề về bản dịch, vui lòng gửi góp ý hoặc patch cho người dịch của file này, hoặc nhờ người bảo trì và người review tài liệu tiếng Việt giúp đỡ.

Bản gốc:

Booting AArch64 Linux

Người dịch:

Google Translate (machine translation)

Phiên bản gốc:

8541d8f725c6

Cảnh báo

Tài liệu này được dịch tự động bằng máy và chưa được review bởi người dịch. Nội dung có thể không chính xác hoặc khó hiểu ở một số chỗ. Khi có sự khác biệt với bản gốc, bản gốc luôn là chuẩn. Bản dịch chất lượng cao (được review) được đặt trong thư mục vi_VN/.

Khởi động AArch64 Linux

Tác giả: Will Deacon <will.deacon@arm.com>

Ngày: 07 tháng 9 năm 2012

Tài liệu này dựa trên tài liệu khởi động ARM của Russell King và có liên quan đến tất cả các bản phát hành công khai của nhân AArch64 Linux.

Mô hình ngoại lệ AArch64 được tạo thành từ một số cấp độ ngoại lệ (EL0 - EL3), với EL0, EL1 và EL2 có bảo mật và không bảo mật đối tác. EL2 là cấp độ ảo hóa, EL3 là mức ưu tiên cao nhất cấp độ và chỉ tồn tại ở chế độ an toàn. Cả hai đều là tùy chọn về mặt kiến ​​trúc.

Vì mục đích của tài liệu này, chúng tôi sẽ sử dụng thuật ngữ ZZ0000ZZ chỉ đơn giản là xác định tất cả phần mềm thực thi trên (các) CPU trước khi điều khiển được chuyển tới nhân Linux. Điều này có thể bao gồm giám sát an toàn và mã ảo hóa hoặc có thể chỉ là một số hướng dẫn dành cho chuẩn bị một môi trường khởi động tối thiểu.

Về cơ bản, bộ tải khởi động phải cung cấp (tối thiểu) sau đây:

  1. Thiết lập và khởi tạo RAM

  2. Thiết lập cây thiết bị

  3. Giải nén ảnh kernel

  4. Gọi ảnh kernel

1. Thiết lập và khởi tạo RAM

Yêu cầu: MANDATORY

Bộ tải khởi động dự kiến sẽ tìm và khởi tạo tất cả RAM mà kernel sẽ sử dụng để lưu trữ dữ liệu dễ bay hơi trong hệ thống. Nó thực hiện điều này theo cách phụ thuộc vào máy. (Nó có thể sử dụng các thuật toán nội bộ để tự động định vị và định kích thước tất cả RAM hoặc có thể sử dụng kiến thức về RAM trong máy hoặc bất kỳ phương pháp nào khác mà nhà thiết kế bộ tải khởi động thấy phù hợp.)

Đối với Lĩnh vực điện toán bí mật của Arm, điều này bao gồm việc đảm bảo rằng tất cả RAM được bảo vệ có trạng thái Realm IPA (RIPAS) là “RAM”.

2. Thiết lập cây thiết bị

Yêu cầu: MANDATORY

Blob cây thiết bị (dtb) phải được đặt trên ranh giới 8 byte và phải kích thước không vượt quá 2 megabyte. Vì dtb sẽ được ánh xạ vào bộ nhớ đệm sử dụng các khối có kích thước lên tới 2 megabyte thì không được đặt nó trong bất kỳ vùng 2M nào phải được ánh xạ với bất kỳ thuộc tính cụ thể nào.

NOTE: các phiên bản trước v4.2 cũng yêu cầu DTB được đặt bên trong vùng 512 MB bắt đầu từ byte text_offset bên dưới Hình ảnh hạt nhân.

3. Giải nén ảnh kernel

Yêu cầu: OPTIONAL

Hạt nhân AArch64 hiện không cung cấp bộ giải nén và do đó yêu cầu giải nén (gzip, v.v.) phải được thực hiện bởi boot bộ tải nếu sử dụng mục tiêu Hình ảnh nén (ví dụ: Image.gz). cho bộ tải khởi động không thực hiện yêu cầu này, bộ tải khởi động không nén Mục tiêu hình ảnh có sẵn thay thế.

4. Gọi ảnh kernel

Yêu cầu: MANDATORY

Hình ảnh hạt nhân được giải nén chứa tiêu đề 64 byte như sau

mã u320; /Mã thực thi được/

mã u321; /Mã thực thi được/ văn bản u64_offset; /* Độ lệch tải ảnh, endian nhỏ / u64 image_size; / Kích thước ảnh hiệu quả, little endian / cờ u64; / cờ kernel, endian nhỏ / u64 res2 = 0; / dành riêng / u64 res3 = 0; / dành riêng / u64 res4 = 0; / dành riêng / u32 ma thuật = 0x644d5241; / Con số kỳ diệu, endian nhỏ, “ARMx64” / u32 res5; / dành riêng (dùng cho offset PE COFF) */

Ghi chú tiêu đề:

  • Kể từ v3.17, tất cả các trường đều là endian nhỏ trừ khi có quy định khác.

  • code0/code1 chịu trách nhiệm phân nhánh thành văn bản.

  • khi khởi động qua EFI, code0/code1 ban đầu bị bỏ qua. res5 là phần bù cho tiêu đề PE và tiêu đề PE có EFI điểm vào (efi_stub_entry). Khi stub đã hoàn thành công việc của nó, nó nhảy tới code0 để tiếp tục quá trình khởi động bình thường.

  • Trước v3.17, độ bền của text_offset không được chỉ định. trong những trường hợp này image_size bằng 0 và text_offset là 0x80000 trong độ bền của hạt nhân. Trong đó image_size khác 0 image_size là little-endian và phải được tôn trọng. Trong đó image_size bằng 0, text_offset có thể được coi là 0x80000.

  • Trường flags (được giới thiệu trong v3.17) là trường 64 bit endian nhỏ được sáng tác như sau: