Vmlinux có thể được sử dụng thay vì uImage không?


9

Tôi muốn sử dụng một hình ảnh hạt nhân không nén và khởi động BeagleBoard. Nói chung, tôi sử dụng uImage để khởi động kernel ở định dạng nén. Làm cách nào để sử dụng ảnh kernel không nén?


Bạn đang sử dụng U-Boot làm bộ tải khởi động, phải không?
Gilles 'SO- ngừng trở nên xấu xa'

Đúng! Có thể sử dụng uboot?
Sharanya

Câu trả lời:


7

Theo như tôi biết, U-Boot không thể khởi động trực tiếp hình ảnh ELF ( vmlinux). Bạn cần biến nó thành uImageđịnh dạng chứa tệp nén vmlinuxcộng thêm một vài byte siêu dữ liệu mô tả địa chỉ tải kernel. Câu hỏi thường gặp về U-Boot 2.19 giải thích cách tạo uImage; nó khá đơn giản, sử dụng mkimagetiện ích trong cây nguồn U-Boot:

 mkimage -A arm -O linux -T kernel -C gzip … -d vmlinux uImage

(Bạn có thể cần thêm tham số cho biết địa chỉ tải.)


1
Việc giải nén uImage trong khi khởi động mất một chút thời gian. Tôi cần giảm thiểu điều đó. Vì vậy, tôi nghĩ tại sao tôi không thử với tập tin thô không nén vmlinux.
Sharanya

3
Hiệu quả bạn muốn đạt được có thể ngược lại với dự định. Thời gian giải nén thường nhỏ hơn thời gian sao chép dữ liệu từ flash.
Maciej Kucia

3
 mkimage -A arm -O linux -T kernel -C gzip … -d vmlinux uImage

Thay đổi gzip trong ví dụ trên thành không , và bạn sẽ tạo một hình ảnh không nén tương thích u-Boot.


1

Nếu bạn đang sử dụng Buildroot, hãy chọn uImagetệp đầu ra kernel ( BR2_LINUX_KERNEL_UIMAGE=y). Biên dịch bình thường và Buildroot cũng sẽ tạo một vmlinuxtệp trong bước trung gian. Trong khi vmlinuxtập tin không được sao chép vào /output/imagesthư mục, nó có thể được tìm thấy trong ./output/build/linux-custom/(hoặc bằng cách chạy find . -name "vmlinux").

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.