เพิ่ม USB Drive แบบ ext4 ให้ Raspberry Pi
MrChoke
Posted on October 25, 2019
ถ้าใช้ Raspberry Pi ทำงานจริงจังมักจะพบปัญหา SD Card จะเต็มเร็วเพราะใช้ขนาดไม่ใหญ่มากนัก ถ้ามี USB แบบ External แบบต่างๆ ก็สามารถเอามาเสียบใช้ได้
ทำไมต้องทำเป็นแบบ ext4 ใช้แบบ vfat exFat หรือ ntfs ไม่ได้หรือ จริงๆ ก็ได้แหละ แถมอาจจะไม่ใช่ ext4 อาจจะเป็น ext2 ext3 xfs btrfs แล้วแต่ชื่นชอบ แต่ ext4 กลางๆ สุดละสำหรับ linux และที่ไม่เลือก filesystem แบบ Windows ก็เพราะ เรื่อง permission และพวก symlink และอีกหลายอย่างที่ ext4 สามารถทำงานได้ดีกว่าบน linux ส่วนข้อเสียของ ext4 คือ Windows กับ Mac อ่านไม่ได้แค่นั้น ฮาๆ
สมมติว่าผมซื้อ Flash Drive มาใหม่สดๆ ร้อนๆ สิ่งที่ต้องทำมีดังนี้
Fdisk
ก่อนอื่นเราต้องเปลี่ยนชนิดของ partition ให้เป็น linux ด้วยคำสั่ง fdisk แต่เราต้องรู้ก่อนว่า usb ที่เสียบอยู่นั้นชื่ออะไร ลองใช้คำสั่ง
lsblk
ซึ่งจะได้ผลลัพธ์คืออุปกรณ์จำพวก storage เช่น
สำหรับมือใหม่วิธีสักเกตง่ายๆ เบื้องต้นคือ ถ้าเป็นตัว microSD ตัวระบบหลักจะเป็น /dev/mmcblk0 ส่วน usb ที่เสียบเข้ามาจะเป็น /dev/sdX โดย X จะเป็น a b c … z ถ้าเสียบอยู่อันเดียวก็จะเป็น /dev/sda
เมื่อรู้ว่า usb เชื่อมตัวอยู่ที่ /dev/sda ก็สามารถใช้คำสั่ง
sudo fdisk /dev/sda
ตัวอย่างในรูปด้านบน ผมใช้คำสั่งอยู่ไม่กี่คำสั่งคือ
p ให้ print partitions ปัจจุบันจะเห็นว่ามี /dev/sda1 partition เดียวซึ่งง่ายเลยเราจะใช้อันนี้แหละไม่ต้องลบหรือแบ่งใหม่
t คือการเปลี่ยนชนิด (type) ของ partition สำหรับ linux จะเป็น 83 เป็นเลขฐาน 16 นะ
wq เป็นสองคำสั่งรวมกันคือ write และ quit คือสั่งให้เขียนที่แก้ลงไปแล้วออก
ตอนนี้เราจะไม่เห็นการเปลี่ยนแปลงต้องทำการ format เสียก่อน แต่ต้อง unmount เสียก่อน
sudo umount /dev/sda1
แล้วตามด้วย format เป็น ext4 ผมตั้งชื่อให้ partition ด้วยโดยใส่ -L ไปด้วย
sudo mkfs.ext4 -L data /dev/sda1
รอสักครู่ก็เสร็จเรียบร้อย ถ้าเราถอดแล้วเสียบใหม่ก็จะถูก mount เป็น ext4
lsblk -l -o name,type,fstype,mountpoint
แต่ผมจะบังคับว่าให้ mount มาเป็น directory ชื่อ data ใน home ของเราเลยซึ่งจะใช้เก็บงานต่างๆ ไว้ในนี้ทั้งหมดหลังจากนี้
- สร้าง directory data ก่อน
cd
mkdir data
ใช้คำสั่ง cd แล้ว enter คือให้กลับมายัง home นั่นเองเผื่อเข้าไปอยู่ที่อื่นมาก่อน
- ดูค่า UUID หรือ PARTUUID หรือ LABEL แล้วแต่สะดวกว่าจะใช้ค่าไหน โดยใช้คำสั่ง
blkid
- แก้ไข /etc/fstab หรือ filesystem table นั่นเอง
sudo nano -w /etc/fstab
PARTUUID=53394010-01 /home/pi/data ext4 defaults,noatime 0 1
อย่างที่ผมบอกคือค่าแรกเราสามารถจะใช้ LABEL ,UUID, PARTUUID หรือ /dev/sda1 ก็ได้แต่การใช้ UUID หรือ PARTUUID จะสะดวกกว่าเพราะสองค่านี้จะเปลี่ยนก็ต่อเมื่อเราแก้ไข partition ใหม่ ส่วน LABEL มีโอกาสชนกันได้ และ /dev/sda1 ถ้าลำดับการเสียบไม่เหมือนเดิมก็จะเปลี่ยนไปได้ เมื่อแก้ไขเสร็จก็ให้ทำการ save และออกโดยกด Ctrl-X กด y และ กด enter
- mount ใหม่ ถ้าขี้เกียจพิมพ์คำสั่งก็ให้ สั่ง eject แล้วเสียบใหม่ หรือถ้าอยากพิมพ์คำสั่งเล่นๆ ก็ให้พิมพ์ดังนี้
sudo umount /dev/sda1
แล้วสั่ง mount อีกครั้ง
sudo mount /dev/sda1
ตรวจสอบอีกครั้ง
lsblk -l -o name,type,fstype,mountpoint
- permission ครั้งแรกสำหรับ filesystem linux จะเป็นสิทธิของ root ลอง ls ดู
ดังนั้นเราต้องเปลี่ยนสิทธิให้เป็นผู้ใช้ปัจจุบันก่อน
sudo chown -R $UID:$GID data
ลองตรวจสอบเขียนข้อมูลดู
เท่านี้ก็เสร็จเรียบร้อยแล้วเมื่อเปิดเครื่องมาครั้งต่อไปก็จะ mount ให้ที่เดิมอัตโนมัติ หลังจากนี้เราสามารถนำข้อมูลมาเก็บ เช่น virtualenv ของ python java JDK พวกรูปภาพ วิดีโอ ต่างๆ ก็ไม่ต้องกลัวระบบเต็มอีก ทั้งนี้สามารถใช้ได้กับ HDD หรือจะเป็น SSD ก็ได้
Posted on October 25, 2019
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.