ฉันต้องการใช้เคอร์เนลอิมเมจที่ไม่มีการบีบอัดและบู๊ต 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")