Submitted by admin on Thu, 12/31/2009 - 00:19
หากยังไม่ได้ติดตั้ง Cross Tool Chain ให้ติดตั้งก่อนดังนี้ การติดตั้ง Cross Tool Chain
ดึงSource codeมาจากคลังเก็บด้วยคำสั่ง
$ mkdir kernel |
!!! สำหรับผู้ที่ต้องการใช้ x-window กับ debian file system ต้องแก้ไขไฟล์ drivers/video/fbmem.c เพื่อแก้บั๊กด้วยการเพิ่มบรรทัด return 0; ดังนี้

สร้าง .config สำหรับ mini2440
$ CROSS_COMPILE=arm-angstrom-linux-gnueabi- ARCH=arm make O=../kernel-bin/ mini2440_defconfig |
สำหรับผู้ที่ไม่ชอบ font ขนาดเล็กที่ display ที่ lcd ให้แก้ไขไฟล์ดังนี้
|
|
สร้าง Kernel โดยกำหนดให้ output เก็บไว้ที่ ../kernel-bin/
$ CROSS_COMPILE=arm-angstrom-linux-gnueabi- ARCH=arm make O=../kernel-bin/ |
สร้าง uImage สำหรับ u-boot ด้วย mkimage (mkimage สร้างจาก การสร้างและติดตั้ง uboot สำหรับ mini2440)
$ ~/uboot/mini2440/tools/mkimage -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008000 -d ../kernel-bin/arch/arm/boot/zImage uImage |
สิ่งหนึ่งที่มากับการคอมไพล์เสมอคือ lib modules ซึ่งจะต้องคู่กันกับ version ของ kernel และจะต้องถูกนำไปรวมในการสร้าง file system
เราสามารถ copy lib modules ที่สร้างไว้แล้วไปเก็บไว้ยัง directory ที่ต้องการ(ในกรณีนี้คือ ../kernel-modules) ดังนี้
$ mkdir -p ../kernel-modules |
โปรดอย่าลืมเมื่อคุณมี linux file system ของระบบ embedded linux แล้ว ก่อนใช้งานจะต้องนำเอาไฟล์ที่อยู่ภายใต้ ../kernel-modules ไปไว้บน root directory ของ file system ที่สร้างด้วยนะครับ!!!
สมมติว่า file system ของ mini2440 อยู่บน sd card และ เชื่อมต่อกับ Host ที่ /mnt/sdb2 ให้ทำดังนี้
$ sudo cp -Rpf ../kernel-modules/* /mnt/sdb2 |
ภายใต้ /mnt/sdb2 ก็ควรจะมี directory ดังนี้
/lib/modules/2.6.32-rc8
หมายเหตุ 2.6.32-rc8 คือ version ของ kernel ซึ่งอาจจะเป็นค่าอื่นถ้า kernel คุณมีเวอร์ชั่นที่ต่างออกไป
ถ้าหากคุณมี File systemต่ออยู่กับ /mnt/sdb2 อยู่แล้วในระหว่างการสร้าง kernel ก็ให้ใช้คำสั่งนี้ได้โดยตรงเลย
# CROSS_COMPILE=arm-angstrom-linux-gnueabi- ARCH=arm make O=../kernel-bin/ INSTALL_MOD_PATH=/mnt/sdb2 modules_install |
อ้างอิง
Micro2440 with Linux and U-Boot