Skip to Content

Samba – แชร์ไดรฟ์ Linux ให้ Windows มองเห็น

29 ตุลาคม ค.ศ. 2025 โดย
OLlama
| ยังไม่มีความคิดเห็น

สวัสดีครับ! วันนี้เราจะมาพูดถึงสถานการณ์คลาสสิกที่หลายคนน่าจะเคยเจอ โดยเฉพาะชาว DIY ที่ใช้ Raspberry Pi (ในที่นี้คือ RPi 5 ตัวแรง) ครับ

สถานการณ์: ผมมีฮาร์ดดิสก์ที่ฟอร์แมตเป็นระบบไฟล์ Linux (เช่น ext4) ซึ่งเต็มไปด้วยไฟล์งานหรือแบ็คอัพ แต่ผมต้องการโอนไฟล์รูปภาพจำนวนมากจากคอมพิวเตอร์ Windows (Backup files) ของผมไปยังฮาร์ดดิสก์ลูกนั้น ปัญหาคือ Windows อ่านไดร์ว ext4 โดยตรงไม่ได้

ทางออกที่ยอดเยี่ยมคือการใช้ Raspberry Pi 5 ที่ต่อกับฮาร์ดดิสก์ USB ลูกนั้นเป็น "ตัวกลาง" หรือ "NAS ขนาดย่อม" (Network Attached Storage) ครับ

ในบรรดาซอฟต์แวร์โอเพ่นซอร์สหลายตัวที่ทำงานนี้ได้ ตัวที่เหมาะที่สุดสำหรับการ "แชร์ไดร์ว" ให้ Windows มองเห็นแบบแนบเนียนที่สุดคือ Samba ครับ

🧰 Samba – สร้าง Network Drive ให้ Windows ใช้งาน

Samba คือซอฟต์แวร์ที่ใช้โปรโตคอล SMB/CIFS ซึ่งเป็นโปรโตคอลเดียวกับที่ Windows ใช้ในการแชร์ไฟล์และพรินเตอร์ในเครือข่าย (Network Neighborhood)

  • เหมาะสำหรับ: การทำให้ฮาร์ดดิสก์ที่ต่อกับ Pi ของคุณปรากฏเป็น "Network Drive" ใน File Explorer ของ Windows เลย

  • ข้อดี: ใช้งานง่ายมากจากฝั่ง Windows, ไม่ต้องติดตั้งโปรแกรมอะไรบน Windows เพิ่มเติม, สามารถ Map Network Drive (เช่น Z:) ให้เป็นไดร์วถาวรใน "This PC" ได้เลย

ขั้นตอนการติดตั้งและตั้งค่า Samba บน Raspberry Pi 5

เราจะมาเริ่มกันทีละขั้นตอนครับ สมมติว่าคุณเสียบฮาร์ดดิสก์ USB เข้ากับ RPi 5 ของคุณเรียบร้อยแล้ว

ขั้นตอนที่ 1: ตรวจสอบและ Mount ฮาร์ดดิสก์

ก่อนอื่น เราต้องทำให้ RPi รู้จักและพร้อมใช้งานฮาร์ดดิสก์ลูกนี้ก่อน

  1. หาชื่อไดร์ว:

    Bash

    lsblk
    

    คุณจะเห็นรายการไดร์วต่างๆ มองหาไดร์ว USB ของคุณ (เช่น /dev/sda1 หรือ /dev/sdb1)

  2. สร้างจุด Mount: เราจะสร้างโฟลเดอร์ว่างๆ เพื่อใช้เป็น "ประตู" เข้าสู่ฮาร์ดดิสก์

    Bash

    sudo mkdir /media/sharedrive
    
  3. Mount ไดร์ว: (แทนที่ /dev/sda1 ด้วยชื่อไดร์วที่คุณหาเจอ)

    Bash

    sudo mount /dev/sda1 /media/sharedrive
    
  4. (สำคัญ) ทำให้ Mount อัตโนมัติทุกครั้งที่เปิดเครื่อง: เราต้องแก้ไขไฟล์ fstab เพื่อที่ว่าเมื่อ RPi รีบูต ไดร์วนี้จะถูกเชื่อมต่ออัตโนมัติ

    • หา UUID (รหัสประจำตัวไดร์ว) ซึ่งปลอดภัยกว่าการใช้ /dev/sda1:

      Bash

      sudo blkid /dev/sda1
      

      จดค่า UUID="..." ของคุณไว้

    • แก้ไขไฟล์ fstab:

      Bash

      sudo nano /etc/fstab
      
    • เพิ่มบรรทัดนี้เข้าไปท้ายไฟล์ (เปลี่ยน YOUR_UUID เป็นค่าที่คุณจดไว้ และเปลี่ยน ext4 หากไดร์วคุณเป็นฟอร์แมตอื่น):

      UUID=YOUR_UUID  /media/sharedrive  ext4  defaults,auto,users,rw,nofail  0  0
      
    • กด Ctrl+O เพื่อบันทึก และ Ctrl+X เพื่อออก

ขั้นตอนที่ 2: ติดตั้ง Samba

อัปเดตระบบและติดตั้ง Samba:

Bash

sudo apt update
sudo apt install samba samba-common-bin -y

ขั้นตอนที่ 3: ตั้งค่า Samba (smb.conf)

นี่คือหัวใจสำคัญ เราจะบอก Samba ว่าจะแชร์โฟลเดอร์ไหน

  1. สำรองไฟล์ตั้งค่าเดิม:

    Bash

    sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
    
  2. แก้ไขไฟล์ตั้งค่า:

    Bash

    sudo nano /etc/samba/smb.conf
    
  3. เพิ่มการตั้งค่า Share: เลื่อนไปที่ล่างสุดของไฟล์ แล้วเพิ่มส่วนนี้เข้าไป:

    Ini, TOML

    [RPi_Share]
    comment = Raspberry Pi 5 Shared Drive
    path = /media/sharedrive
    browseable = yes
    writable = yes
    guest ok = no
    read only = no
    create mask = 0775
    directory mask = 0775
    
    • [RPi_Share]: นี่คือชื่อ "Share" ที่จะปรากฏใน Windows

    • path: คือตำแหน่งโฟลเดอร์ที่เรา Mount ไดร์วไว้

    • guest ok = no: เราจะไม่อนุญาตให้ใครก็ได้เข้ามา (ต้องใช้รหัสผ่าน)

ขั้นตอนที่ 4: สร้างผู้ใช้งานและรหัสผ่านสำหรับ Samba

เพื่อความปลอดภัย เราจะไม่ใช้รหัสผ่านของระบบ Linux โดยตรง แต่จะสร้างรหัสผ่าน "Samba" แยกต่างหากให้กับผู้ใช้ Linux ของเรา (เช่น ผู้ใช้ pi หรือผู้ใช้หลักที่คุณใช้ Login)

  1. สร้างรหัสผ่าน Samba: (แทนที่ pi ด้วย username ของคุณ ถ้าคุณไม่ได้ใช้ pi)

    Bash

    sudo smbpasswd -a pi
    

    ระบบจะถามให้คุณตั้งรหัสผ่านใหม่ รหัสผ่านนี้คือสิ่งที่คุณจะใช้เชื่อมต่อจาก Windows (ไม่จำเป็นต้องเหมือนกับรหัสผ่าน Linux)

ขั้นตอนที่ 5: ตั้งค่าสิทธิ์ (Permission)

เราต้องแน่ใจว่าผู้ใช้ pi (หรือผู้ใช้ของคุณ) มีสิทธิ์เขียนไฟล์ลงในไดร์วที่เรา Mount ไว้

Bash

sudo chown -R pi:pi /media/sharedrive
sudo chmod -R 775 /media/sharedrive

ขั้นตอนที่ 6: รีสตาร์ท Samba

เพื่อให้การตั้งค่าใหม่มีผล:

Bash

sudo systemctl restart smbd
sudo systemctl restart nmbd

🚀 สาธิตการโอนย้ายไฟล์ (เชื่อมต่อจาก Windows)

ตอนนี้ Raspberry Pi 5 ของคุณพร้อมแล้ว กลับมาที่คอมพิวเตอร์ Windows ครับ

  1. หา IP Address ของ RPi 5: กลับไปที่ RPi 5 (หรือ SSH) แล้วพิมพ์:

    Bash

    ip a
    

    มองหา IP ของคุณในส่วน wlan0 (ถ้าใช้ Wi-Fi) หรือ eth0 (ถ้าใช้สาย LAN) เช่น 192.168.1.50

  2. เชื่อมต่อจาก Windows File Explorer:

    • เปิด File Explorer (กด Win + E)

    • ในช่อง Address Bar ด้านบน พิมพ์ \\ ตามด้วย IP ของ RPi 5 เช่น: \\192.168.1.50 แล้วกด Enter

  3. ใส่รหัสผ่าน:

    • Windows จะถามหา Username และ Password

    • Username: pi (หรือชื่อผู้ใช้ที่คุณตั้งค่า smbpasswd)

    • Password: รหัสผ่านที่คุณตั้งค่าด้วยคำสั่ง smbpasswd (ไม่ใช่รหัสผ่าน Linux)

    • ติ๊ก "Remember my credentials" เพื่อความสะดวก

  4. เข้าถึงไฟล์: คุณจะเห็นโฟลเดอร์ชื่อ RPi_Share (หรือชื่อที่คุณตั้งใน smb.conf) เมื่อดับเบิลคลิกเข้าไป... นั่นคือฮาร์ดดิสก์ ext4 ที่ต่ออยู่กับ RPi 5 ของคุณครับ!

  5. โอนย้ายไฟล์: ตอนนี้คุณสามารถลากและวาง (Drag-and-Drop) โฟลเดอร์รูปภาพจำนวนมากจาก Windows ของคุณลงในหน้าต่าง RPi_Share นี้ได้เลย ไฟล์จะถูกโอนย้ายผ่านเครือข่ายไปยังฮาร์ดดิสก์บน RPi 5

  6. (ทางเลือก) Map Network Drive เพื่อความถาวร:

    • ในหน้า File Explorer ที่คุณเห็น RPi_Share ให้คลิกขวาที่โฟลเดอร์นั้น

    • เลือก "Map network drive..."

    • เลือกตัวอักษรไดร์ว (เช่น Z:)

    • ติ๊ก "Reconnect at sign-in"

    • กด Finish

    • เพียงเท่านี้ ไดร์วจาก RPi 5 ของคุณก็จะปรากฏใน "This PC" เหมือนเป็นไดร์วปกติของ Windows เลย

บทส่งท้าย

ด้วยพลังของ Raspberry Pi 5 และซอฟต์แวร์โอเพ่นซอร์สอย่าง Samba เราสามารถแก้ปัญหา "Windows อ่านไดร์ว Linux ไม่ได้" ได้อย่างง่ายดาย สถานการณ์ของผมที่ต้องการย้ายรูปภาพจำนวนมากไปยังฮาร์ดดิสก์ที่ฟอร์แมตแบบ Linux ก็สำเร็จลุล่วง โดยที่ฝั่ง Windows นั้นใช้งานได้สะดวกสุดๆ เหมือนเป็นไดร์วในเครื่องตัวเองเลยครับ

นี่เป็นเพียงหนึ่งในหลายวิธี แต่สำหรับการแชร์ไดร์วในเครือข่ายบ้าน Samba ถือเป็นตัวเลือกที่คลาสสิกและตรงไปตรงมาที่สุดครับ!

Our related Products

Check out what's new in our company !

Your Dynamic Snippet will be displayed here... This message is displayed because you did not provide enough options to retrieve its content.
ใน Linux
ลงชื่อเข้าใช้ เพื่อแสดงความคิดเห็น