สามารถใช้ vmlinux แทน uImage ได้หรือไม่?


9

ฉันต้องการใช้เคอร์เนลอิมเมจที่ไม่มีการบีบอัดและบู๊ต BeagleBoard โดยทั่วไปฉันใช้ uImage เพื่อบูตเคอร์เนลซึ่งอยู่ในรูปแบบที่บีบอัด ฉันจะใช้เคอร์เนลอิมเมจที่ไม่บีบอัดได้อย่างไร?


คุณใช้ U-Boot เป็น bootloader ใช่ไหม
Gilles 'หยุดชั่วร้าย'

ใช่! เป็นไปได้หรือไม่ที่ใช้ uboot
Sharanya

คำตอบ:


7

เท่าที่ฉันรู้ 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

(คุณอาจต้องการพารามิเตอร์เพิ่มเติมที่ระบุที่อยู่โหลด)


1
การคลายการบีบอัด uImage ในขณะที่ทำการบู๊ตนั้นใช้เวลาพอสมควร ฉันต้องการย่อขนาดนั้น ดังนั้นฉันคิดว่าทำไมฉันไม่ลองกับไฟล์ดิบที่ไม่บีบอัด vmlinux
Sharanya

3
เอฟเฟกต์ที่คุณต้องการบรรลุอาจตรงกันข้ามกับที่ตั้งใจไว้ เวลาในการบีบอัดมักจะน้อยกว่าเวลาของการคัดลอกข้อมูลจากแฟลช
Maciej Kucia

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

เปลี่ยนgzipในตัวอย่างด้านบนเป็นnoneและคุณจะสร้างภาพที่ไม่มีการบีบอัดที่เข้ากันได้กับ u-Boot


1

หากคุณใช้ Buildroot ให้เลือกuImageไฟล์เอาต์พุตเคอร์เนล ( BR2_LINUX_KERNEL_UIMAGE=y) คอมไพล์ตามปกติและ Buildroot จะสร้างvmlinuxไฟล์ในขั้นตอนกลาง แม้ว่าvmlinuxไฟล์จะไม่ถูกคัดลอกไปยัง/output/imagesไดเรกทอรี แต่สามารถพบได้ใน./output/build/linux-custom/(หรือโดยการรันfind . -name "vmlinux")

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.