Submitted by admin on Mon, 12/14/2009 - 14:58
ความสามารถสูงสุดของ Uboot ใน Mini2440 อีกประการนึงคือการบูท Linux ทั้งระบบจาก Network ซึ่งหมายถึง บน Mini2440 จะมีเพียงแค่ uBoot เปล่าๆอยู่บน nand แต่จะไปโหลด Kernel และ mount File system ที่จัดเก็บอยู่บน Server ทำให้การแก้ไขดัดแปลง Kernel และ program ทำได้อย่างง่ายดาย ยืดหยุ่นและรวดเร็วโดยไม่จำเป็นต้อง Flash nand หรือ ถ่ายโปรแกรมลง SD Card ก่อน
ขั้นตอนมีดังนี้ (ทำบน Ubuntu 8.10)
จัดเตรียม tftp server เพื่อจัดเก็บ kernel (uImage)
1. ติดตั้ง tftp
$ sudo apt-get install xinetd tftpd tftp |
2. สร้าง file /etc/xinetd.d/tftp โดยมีข้อความดังนี้
|
|
3. สร้าง directory สำหรับบรรจุไฟล์ของ tftp
|
|
4. วิ่ง xinetd เพื่อใช้งาน tftp
|
|
จัดเตรียม Network File System เพื่อจัดเก็บ Root File System
5. ติดตั้ง nfs
$ sudo apt-get install nfs-kernel-server nfs-common portmap |
6. สร้าง directory สำหรับ linux file system
|
|
7. แก้ไขไฟล์ /etc/exports เพิ่มบรรทัดข้างล่างนี้เพื่อบอกระบบว่าอนุญาติให้ใช้ directory /nfs/home ที่เราสร้างขึ้น
|
|
โปรดสังเกตุตัวเลข 192.168.1.0 ซึ่งเป็นวงแลนภายในของผม สำหรับผู้ที่จะใช้งานต้องไปปรับให้เข้ากับระบบของตัวเองนะครับ
จากนั้นก็บอกให้ระบบรับรู้ถึงการแก้ไขด้วยการ
|
|
ทดสอบระบบ tftp และ nfs ก่อนใช้งาน
8. สร้างไฟล์ใน tftp และ nfs
$ echo test > /tftpboot/aaa |
9. ทดสอบ tftp (192.168.1.74 คือ ip ของ server)
|
|
จะต้องสามารถที่จะ get file aaa ได้
10. ทดสอบ nfs
|
|
จะเห็นไฟล์ชื่อ bbb ในระบบ
เคลียร์ระบบพร้อมใช้จริง
11. ลบไฟล์ที่สร้างเพื่อใช้ในการทดสอบ
|
|
12. เตรียม kernel สำหรับระบบ
$ cp uImage /tftpboot |
13. เตรียม root file system สำหรับระบบ
$ cd ไปยัง directory ที่จัดเก็บ root file system |
14. แก้ไขไฟล์ interfaces ของ root fs เพื่อหยุดการทำงานของ dhcp เนื่องจากได้ทำ dhcp ไปแล้ว
$ vi /nfs/home/etc/network/interfaces |
แก้ dhcp เป็น manual
# Used by ifup(8) and ifdown(8). See the interfaces(5) manpage or |
15. เปิด mini2440 เพื่อเข้า uboot และทำการแก้ไข bootcmd กับ bootargs ดังนี้
|
|
ใช้คำสั่ง dhcp เพื่อช่วยเซ็ทค่า ipaddress และ gateway
MINI2440 # dchp |
กด ctrl-c เพื่อหยุดการทำงานหลังจากได้ ip address แล้ว หลังจากนั้นให้ set bootcmd
|
MINI2440 # setenv bootargs 'console=ttySAC0,115200 noinitrd init=/sbin/init mini2440=0tb root=/dev/nfs rw nfsroot=192.168.1.74:/nfs/home ip=dhcp' |
ตามด้วยการ set bootargs
|
|
และจัดเก็บบันทึกค่าอย่างฐาวรไว้ใน nand flash
MINI2440 # saveenv |
หลังจากนั้นเมือ reset ก็จะเกิดสิ่งมหัศจรรย์ขึ้นครับ :)
kernel จะถูกloadจาก tftp

root file system จะ mount จาก nfs

»