Compile kernel 3.x for mini2440

จากคราวที่แล้วที่ได้นำเสนอการ compile U-Boot ไป ซึ่งเป็นแค่ boot loader เท่านั้น ยังไม่สามารถใช้งาน linux บน mini2440 ได้ เราจำเป็นจะต้องมี kernel ซึ่งเป็นระบบปฎิบัติการในการใช้งานต่อไป ซึ่งเราสามารถทำการ compile kernel ได้ตาม link นี้ และต่อจากนั้นเราจำเป็นจะต้องมี root file system ซึ่งจะมี configuration สำหรับการ boot อยู่ โดยเราสามารถสร้างโดยใช้ Debootstrap ซึ่งสามารถทำได้ตาม link นี้ แต่ release เป็น version เก่า (lenny) ซึ่งผมแนะนำให้เปลี่ยนเป็น wheezy เพื่อความทันสมัย

เมื่อเราเปลี่ยน root file system ให้ทันสมัยแล้ว การ compile kernel ที่นำเสนอไปก่อนหน้า จะไม่สามารถใช้ได้ โดยเมื่อนำไปใช้จะเกิดปัญหาดังนี้

udevd[xxx]: unable to receive ctrl connection: Function not implemented

และเมื่อค้นลึกลงไป ปรากฎว่า version ของ kernel เก่าไปนิดเดียวเอง ของตามที่นำเสนอเป็น 2.6.32 แต่ฟังก์ชันที่ kernel ใหม่เรียกหาอยู่ใน version 2.6.36 ช่างน่าเสียดาย ตอนแรกก้คิดว่าจริงๆ ขยับไป 2.6.36 ก้ได้ แต่เพื่อไม่ให้เกิดปัญหาคล้ายเดิมอีกในอนาคต เราควรจะย้ายไป kernel ใหม่เลย ในที่นี้เลือก 3.10.6 เพราะมีคนบอกว่าใช้ได้

การ compile จำเป็นต้องลง cross-compile ก่อน จากนั้นดาวน์โหลด kernel 3.10.6 จากนั้นแตกไฟล์ และใช้คำสั่งดังนี้

$ mkdir ../kernel-bin
$ CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm make O=../kernel-bin/ mini2440_defconfig

จากนั้น ให้ดาวน์โหลด file นี้ ไปเขียนทับไฟล์ .config ในโฟล์เดอร์ kernel-bin จากนั้นทำการ make ตามคำสั่งด้านล่าง ซึ่ง -j8 คืออนุญาตให้ make แบบขนานได้พร้อมกัน 8 thread

$ CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm make O=../kernel-bin/ -j8

จากนั้นนำไปสร้าง uImage ตามวิธีการ compile kernel ที่นำเสนอไปตอนต้นของโพส ซึ่งสำหรับคนที่ต้องการประหยัดเวลาในส่วนนี้สามารถ นำ image file ซึ่งประกอบด้วย kernel และ root file system โดยขอเพียงมี SDcard ที่ขนาดตั้งแต่ 4Gb ขึ้นไป จากนั้นใช้คำสั่งดังนี้ ซึ่งเปลี่ยน mmcblk0 ตามชื่อพาร์ติชั่นของ SDcard ของคุณเอง

$ tar -zxvf mini2440_sdcard.img.tar.gz
$ sudo dd bs=4M if=mini2440_sdcard.img of=/dev/mmcblk0

ซึ่งสามารถ ขยายพาร์ติชั่นตามที่อยากได้โดยการใช้โปรแกรม gparted เพียงเท่านี้เราก้จะได้ SDcard สำหรับรัน linux บน FriendlyARM mini2440 ได้แล้ว เห็นมั้ยครับมันลำบากนะครับกว่าจะมาเป็นคอมพิวเตอร์ที่ใช้ง่ายๆในมือคุณ

mini2440 partition

Mini2440 SDcard Partition

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s