sự khác biệt giữa chúng là gì?
Hình ảnh : tệp hình ảnh nhị phân hạt nhân Linux chung.
zImage : phiên bản nén của ảnh hạt nhân Linux có khả năng tự giải nén.
uImage : tệp hình ảnh có trình bao bọc U-Boot (được cài đặt bởi tiện ích mkimage ) bao gồm loại hệ điều hành và thông tin trình tải.
Một thực tế rất phổ biến (ví dụ: Makefile của nhân Linux điển hình) là sử dụng tệp zImage. Vì tệp zImage có thể tự giải nén (tức là không cần bộ giải nén bên ngoài), trình bao bọc sẽ chỉ ra rằng hạt nhân này "không được nén" mặc dù nó thực sự là như vậy.
Lưu ý rằng tác giả / người bảo trì U-Boot xem việc sử dụng (phổ biến) việc sử dụng zImage bên trong uImage là một vấn đề:
Trên thực tế, việc sử dụng zImage bên trong uImage là khá ngu ngốc. Sẽ tốt hơn nhiều nếu sử dụng ảnh hạt nhân bình thường (không nén), nén nó chỉ bằng gzip và sử dụng nó làm poayload cho mkimage. Bằng cách này, U-Boot thực hiện việc giải nén thay vì đưa vào một trình giải nén khác với mỗi hình ảnh hạt nhân.
(trích dẫn từ https://lists.yoctoproject.org/pipermail/yocto/2013-October/016778.html )
Tôi phải sử dụng loại ảnh hạt nhân nào?
Bạn có thể chọn bất cứ thứ gì bạn muốn để lập trình.
Để tiết kiệm dung lượng lưu trữ, có lẽ bạn nên chọn ảnh nén thay vì ảnh không nén.
Hãy lưu ý rằng việc thực thi hạt nhân (có lẽ là hạt nhân Linux) không chỉ liên quan đến việc tải ảnh hạt nhân vào bộ nhớ. Tùy thuộc vào kiến trúc (ví dụ: ARM) và phiên bản nhân Linux (ví dụ có hoặc không có DTB), có các thanh ghi và bộ đệm bộ nhớ có thể phải được chuẩn bị cho hạt nhân. Trong một trường hợp, cũng có sự khởi tạo phần cứng mà U-Boot thực hiện phải được sao chép.
BỔ SUNG
Tôi biết rằng u-boot cần một nhân ở định dạng uImage.
Điều đó là chính xác cho tất cả các phiên bản của U-Boot chỉ có lệnh bootm .
Nhưng các phiên bản mới hơn của U-Boot cũng có thể có lệnh bootz có thể khởi động zImage .