Powered by Drupal, an open source content management system

การสร้าง Kernel สำหรับ mini2440

หากยังไม่ได้ติดตั้ง Cross Tool Chain ให้ติดตั้งก่อนดังนี้ การติดตั้ง Cross Tool Chain

ดึงSource codeมาจากคลังเก็บด้วยคำสั่ง

$ mkdir kernel
$ cd kernel
$ git clone git://repo.or.cz/linux-2.6/mini2440.git
$ cd mini2440
$ mkdir -p ../kernel-bin

 

 !!! สำหรับผู้ที่ต้องการใช้ 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-bin/.config

เปลี่ยนบรรทัด
CONFIG_FONT_MINI_4x6=y
เป็น
# CONFIG_FONT_MINI_4x6 is not set

บันทึกไฟล์แล้วทำขั้นต่อไป

 

สร้าง 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
$ CROSS_COMPILE=arm-angstrom-linux-gnueabi- ARCH=arm make O=../kernel-bin/ INSTALL_MOD_PATH=../kernel-modules modules_install

โปรดอย่าลืมเมื่อคุณมี 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

wiki.linuxmce.org/index.php/Mini2440

Kernel 2.6.32-rc8 and Modules