ฉันต้องการใช้เคอร์เนลอิมเมจที่ไม่มีการบีบอัดและบู๊ต BeagleBoard โดยทั่วไปฉันใช้ uImage เพื่อบูตเคอร์เนลซึ่งอยู่ในรูปแบบที่บีบอัด ฉันจะใช้เคอร์เนลอิมเมจที่ไม่บีบอัดได้อย่างไร?
ฉันต้องการใช้เคอร์เนลอิมเมจที่ไม่มีการบีบอัดและบู๊ต BeagleBoard โดยทั่วไปฉันใช้ uImage เพื่อบูตเคอร์เนลซึ่งอยู่ในรูปแบบที่บีบอัด ฉันจะใช้เคอร์เนลอิมเมจที่ไม่บีบอัดได้อย่างไร?
คำตอบ:
เท่าที่ฉันรู้ U-Boot ไม่สามารถบูตอิมเมจเอลฟ์“ raw” โดยตรง ( vmlinux
) คุณต้องเปลี่ยนเป็นuImage
รูปแบบซึ่งประกอบด้วยvmlinux
ข้อมูลเมตาที่บีบอัดบวกสองสามไบต์พิเศษที่อธิบายที่อยู่โหลดเคอร์เนล U-Boot คำถามที่พบบ่อย 2.19อธิบายวิธีการสร้างuImage
; มันค่อนข้างตรงไปตรงมาการใช้mkimage
ยูทิลิตี้ในทรีซอร์สของ U-Boot:
mkimage -A arm -O linux -T kernel -C gzip … -d vmlinux uImage
(คุณอาจต้องการพารามิเตอร์เพิ่มเติมที่ระบุที่อยู่โหลด)
mkimage -A arm -O linux -T kernel -C gzip … -d vmlinux uImage
เปลี่ยนgzipในตัวอย่างด้านบนเป็นnoneและคุณจะสร้างภาพที่ไม่มีการบีบอัดที่เข้ากันได้กับ u-Boot
หากคุณใช้ Buildroot ให้เลือกuImage
ไฟล์เอาต์พุตเคอร์เนล ( BR2_LINUX_KERNEL_UIMAGE=y
) คอมไพล์ตามปกติและ Buildroot จะสร้างvmlinux
ไฟล์ในขั้นตอนกลาง แม้ว่าvmlinux
ไฟล์จะไม่ถูกคัดลอกไปยัง/output/images
ไดเรกทอรี แต่สามารถพบได้ใน./output/build/linux-custom/
(หรือโดยการรันfind . -name "vmlinux"
)