Submitted by admin on Sun, 01/03/2010 - 00:28
Linux Debian Distribution เป็นระบบที่มี packages มากมายพร้อมใช้งาน นอกจากนี้ debian ยังรองรับ ARM ด้วย บทความนี้แสดงการสร้าง File System ของระบบ Debian เพื่อใช้วิ่งบน Mini2440
การสร้าง File System จำเป็นต้องใช้คำสั่ง sudo ในฐานะ root ดังนั้นหากท่านใช้คำสั่ง sudo แล้วพบ error username is not in the sudoers file. ให้แก้ไขไฟล์ /etc/sudoers แล้วเพิ่มเติมข้อความ username ALL=(ALL) ALL ดังนี้ โดยให้แทน username ด้วยชื่อของ user ที่คุณใช้ในการสร้าง file system
# User privilege specification
root ALL=(ALL) ALL
username ALL=(ALL) ALL
1. เตรียม file system พื้นฐานของ debian สำหรับการติดตั้งระบบที่สมบูรณ์ในขั้นตอนถัดไป โดยขั้นตอนนี้จะทำบน PC Host
$ mkdir ~/armel-rootfs |
2. เตรียม sd card เพื่อถ่าย file system ที่สร้างในข้อ 1 และนำไปติดตั้งต่อขั้นที่สองบนเครื่อง mini2440
- เสียบ sd card บน linux host และใช้คำสั่ง dmesg เพื่อตรวจสอบดูว่า sd card ที่เราเพิ่งเสียบเข้าไปใช้ device อะไร จากตัวอย่างจะเห็นว่า sd card ที่เพิ่งต่อกับเครื่องจะถูกมองเป็น sdb

จากข้อมูลของ sd card ซึ่งต่อกับระบบเป็น /dev/sdb เราจะใช้คำสั่ง fdisk เพื่อสร้าง partition ที่มีลักษณะดังนี้
- sdb1 - type c (fat32) ขนาด 100MB
- sdb2 - type 83 (Linux) ขนาดเท่ากับที่เหลือ ลบด้วย 128MB
- sdb3 - type 82 (Linux swap) ขนาด 128MB

หลังจากสร้าง partition สามอันตามข้างต้นแล้ว ให้ Format sdb1 เป็น FAT และ sdb2 เป็น ext3 ดังนี้
|
|

ต่อด้วยการแตกไฟล์ File System ที่ได้จากขั้นตอนที่ 1 ลงไปยัง partition ที่สอง
|
|
copy uImage(kernel) และ lib modules (ที่ได้มาจาก การสร้าง Kernel สำหรับ mini2440 ) ไปยัง partition1 และ 2
|
|
เตรียมพร้อมก่อนการติดตั้ง Debain File System ต่อในขั้นที่สอง
|
|
การติดตั้ง debian file system ในขั้นที่สองจะต้องทำบน mini2440 ดังนั้นให้ถอด sd card จาก PC Host แล้วเสียบเข้าช่อง sd card ของ mini2440 จากนั้นเปิดเครื่องเพื่อบูทระบบเข้า u-boot แล้วพิมพ์ข้อความดังนี้
|
|
โดยคำสั่งข้างต้นจะทำให้ mini2440 จะทำการ load uImage จาก sd card partition 1 และ connect rootfs จาก partition 2

หลังจากนั้นทำการติดตั้ง debootstrap ภาคสองดังนี้
|
|
เตรียมสิ่งที่จำเป็นสำหรับการบูทเพื่อวิ่ง Debian File System เต็มระบบในขั้นตอนสุดท้าย
|
|
กำหนด nameserver ให้กับระบบเพื่อการต่อเน็ท ในกรณีนี้ต่อการต่ออินเตอร์เน็ทกระทำผ่าน router ที่มี ip 192.168.1.1
|
|
reboot เข้า u-boot menu และใส่ค่าดังนี้สำหรับการบูทเพื่อวิ่ง Full Debian System จาก sd card พร้อมทั้งใช้คำสั่ง saveenv เพื่อบันทึกฐาวร
|
|
เมื่อเจอคำสั่งบูท u-boot จะทำตามคำสั่งที่คำหนดไว้ใน bootcmd คือการ load uImage จาก fat32 partition ด้วยคำสั่ง fatload และรัน kernel

จากนั้นก็จะ mount file system ตามที่กำหนดไว้ใน bootargs คือ partition ที่ 2

ในกรณีที่ท่านเจอคำเตือนระหว่างบูทว่า .udev/ already exists on the static /dev! (warning). ให้ทำดังนี้
- shutdown mini2440 แล้วถอด sd card ไปต่อกับ PC Host
- sudo mount /dev/sdb2 /mnt/sdb2 ในกรณีที่ระบบมอง /dev/sdb2
- sudo rm -Rf /mnt/sdb2/dev/.udev
- sudo umount /mnt/sdb2
- ถอด sd card กลับไปวิ่งบน mini2440 ปัญหาก็จะหมดไป
นอกจากเราสามารถที่จะบูทระบบได้จาก sd card แล้ว เรายังสามารถเก็บ uImage และ File System ไว้บน PC Host และใช้การเชื่อมต่อผ่าน Network File System ได้อีกด้วย ทำให้สะดวกในการพัฒนาไม่จำเป็นต้องถอด sd card ไปมา สำหรับผู้ที่สนใจ รายละเอียดอยู่ที่นี่ครับ การบูทระบบด้วย Network File System
สำหรับขั้นตอนสุดท้าย เราจะทำการเซ็ทอัพ swap partition ให้กับระบบ
- ใช้คำสั่ง free เพื่อตรวจสอบหน่วยความจำของระบบ จะสังเกตุเห็นว่า swap ไม่ได้เปิดใช้งาน
- ใช้คำสั่ง fdisk -l เพื่อตรวจหา swap partition
- แจ้งให้ระบบรู้ถึง swap partition ด้วยคำสั่ง mkswap /dev/mmcblk0p3 และเปิดการใช้ด้วยคำสั่ง swapon /dev/mmcblk0p3

- ใช้คำสั่ง free อีกครั้งจะเห็นการใช้งาน swap ของระบบ

อ้างอิง