การเขียนไฟล์อิมเมจ

จาก Morange Wiki

Raspberry Pi จะมีไฟล์เฟิ์มแวร์ของระบบมาให้ในรูปแบบไฟล์อิมเมจ โดยสามารถลงที่ SD Card ได้ โดยมีหลายวิธี


ลินุกซ์

ในลินุกซ์จะมองทุกอย่างเป็นไฟล์หรือโพรเซส ดังนั้น อุปกรณ์ต่างๆ จึงมองเป็นไฟล์ชนิดบล็อค โดยจะมีรูปแบบคือ /dev/sdXY โดยที่ X เป็นลำดับดิสก์ และ Y เป็นตัวเลขพาร์ติชัน เช่น /dev/sda1 คือ ฮาร์ดดิสก์ตัวแรกพาร์ชันแรก /dev/sdb1 คือ ฮาร์ดดิสก์ตัวที่สองพาร์ชันแรก


เราสามารถใช้คำสั่ง dd ซึ่งเป็นคำสั่งเขียนข้อมูลเป็นดิสก์ (dd = disk dump ) โดย dd เป็นคำสั่งที่มีมาให้ทั้งลินุกซ์และ OSX

$  mount
( แสดงรายการของระบบที่ mount อยู่ )

ดาวน์โหลดไฟล์อิมเมจและใส่ SD Cardในเครื่อง จากนั้น เครื่องจะแสดงข้อมูล จากนั้น ถ้าใช้ Linux Desktop ระบบจะทำการ mount หรือเชื่อมต่อไดร์ฟให้อัตโนมัติ ซึ่งระหว่างการ dump อิมเมจ ไม่ควรจะ mount จึงต้อง unmount ก่อน สมมติไดร์ฟที่ mount เป็น /dev/sdbX ให้ unmount ทุกอันออก

$  mount
( แสดงรายการของระบบที่ mount อยู่ ให้สังเกตที่มีมาเพิ่มจากตอนแรก เช่น /dev/sdb1 /dev/sdb2 /dev/sdb3 )
$  sudo umount /dev/sdb1
$  sudo umount /dev/sdb2
$  sudo umount /dev/sdb3

จากนั้น เริ่มลงไฟล์อิมเมจ

$  sudo dd if=image_file.img of=/dev/sdb bs=1m


Mac OSX

สำหรับ OSX ที่เป็น unix จะมีคำสั่ง dd และ mount เช่นเดียวกันกับ linux แต่ตัว OSX จะมีความพิเศษเพิ่ม คือ ใช้ diskutl แทน และมี rdisk (raw disk) คือ โดยปกติ disk จะมีการแคชก่อนเขียนหรืออ่าน ทำให้ช้าลง แต่กรณี rawdisk จะเป็นการ dump ตรงๆ

รูปแบบดิสก์ของตระกูล OSX จะเปลี่ยนไป /dev/diskXsY โดยที่ X เป็นตัวเลขดิสก์ และ Y เป็นตัวเลขพาร์ติชัน เช่น /dev/disk0s1 คือ ฮาร์ดดิสก์ตัวแรกพาร์ชันแรก /dev/disk2s1 คือ ฮาร์ดดิสก์ตัวที่สองพาร์ชันแรก

$  mount
( แสดงรายการของระบบที่ mount อยู่ ให้สังเกตที่มีมาเพิ่มจากตอนแรก )
$  diskutil umount /dev/sdb1
$  diskutil umount /dev/sdb2
$  diskutil umount /dev/sdb3

จากนั้น เริ่มลงไฟล์อิมเมจ โดยเขียนที่ raw disk ซึ่งจะมี r นำหน้าดิสก์ปกติ

$  sudo dd if=image_file.img of=/dev/rdisk2  bs=1m

เพิ่มเติม