แชร์ข้อมูลระหว่าง Linux Mint และ Windows (สำหรับเครื่อง Dual Boot)

ผมเป็นคนนึงที่ใช้ Linux Mint คู่กับ Windows 7 ด้วยวิธี Dual boot ซึ่งจะมีเรื่องน่ารำคาญเล็กน้อยเกี่ยวกับพวก Library ต่างๆ นั้นอยู่แยกกัน  ระหว่างบน Linux และ Windows (เช่น Pictures, Music, Video, และ Downloads)

ที่จริงมันไม่เป็นปัญหาเท่าไหร่  เพราะลีนุกซ์สามารถเข้าใช้ไดรฟ์ของวินโดวส์  และอ่านข้อมูลในโฤลเดอร์ของเราได้ทันที  ปัญหาคือวินโดวส์ไม่สามารถเข้าใช้ไดรฟ์ของลีนุกซ์ได้ (ผมลงแบบติดตั้งไว้ในวินโดวส์อีกที  เหมือน WUBI) และหลายครั้งที่เมื่อทำงานบนลีนุกซ์  จะเผลอเซฟงานไว้ใน Library ของลีนุกซ์  ทำให้เวลาที่อยู่บนวินโโวส์จะไม่สามารถเอาไฟล์พวกนี้มาใช้ได้เลย

แนวคิดการแก้ปัญหา

ความสามารถหนึ่งของ Linux ที่ผมชอบมันมากคือเราสามารถเมาท์พาร์ทิชั่นเข้าไปที่ไดเรคทอรี่ใดๆ  รวมถึง bind ไดเรคทอรี่ต่างๆ เข้าด้วยกันได้อย่างอิสระ (เช่นเราสามารถสั่งให้เมื่อเปิดโฟลเดอร์ A แล้วมันจะเป็นอันเดียวกับโฟลเดอร์ B ได้) ทำให้เราสามารถเมาท์พาร์ทิชันของวินโดวส์  และจัดการผูก Library ของวินโดวส์เข้ากับของลีนุกซ์ได้อย่างง่ายดาย!

และอีกความสามารถหนึ่งของลีนุกซ์คือการสั่งเมาท์พาร์ทิชันและผูกไดเรคทอรี่ต่างๆอัตโนมัติเมื่อเปิดเครื่อง  ผ่านทางไฟล์ /etc/fstab ทำให้เราสามารถผูกไลบรารี่ต่างๆได้อัตโนมัติทันทีที่เปิดเครื่อง

เทียบพาร์ทิชันของวินโดวส์กับในลีนุกซ์

ก่อนที่เราจะเมาท์พาร์ทิชั่นใดๆ เข้ามา  เราต้องรู้ก่อนว่าพาร์ทิชันแต่ละอันบนวินโดวส์นั้น  เมื่อมาอยู่บนลีนุกซ์มันจะบอกแห็นเป็นอะไร

ซึ่งสำหรับใครที่มีประสบการณ์ของลีนุกซ์แล้วก็ไปนั่งจดรอไว้ได้เลยว่าไดรฟ์ต่างๆที่จะเมาท์นั้นมันเป็นพาร์ทิชันไหน  ส่วนมือใหม่ก็ต้องเข้าใจกันก่อนว่าระบบลีนุกซ์ (และยูนิกซ์อื่นๆ  รวมถึงแมค  แอนดรอยด์  และไอโอเอส) กับวินโดวส์นั้นมีวิธีมองเห็นพาร์ทิชันต่างๆ ต่างกัน  ในวินโดวส์เราจะเห็นเป็น C: D: ปกติ  แต่บนลีนุกซ์  มันจะมองเห็นฮาร์ดดิสก์แต่ละลูก (รวมถึงแฟลชไดรฟ์และอุปกรณ์เก็บข้อมูลอื่นๆ) เป็นไฟล์หนึ่งไฟล์  เช่นมันอาจจะเห็นฮาร์ดดิสก์ของเราเป็น /dev/sda และเห็นแฟลชไดรฟ์เป็นเป็น /dev/sdb ส่วนพาร์ทิชั่นที่สร้างย่อยลงไปนั้นก็จะเห็นเป็นไฟล์ย่อยลงไปตามลำดับ  เช่น  ไดรฟ์ C: บนวินโดวส์  ก็อาจจะเห็นเป็น /dev/sda1 ส่วนไดรฟ์ D: อาจจะเห็นเป็น /dev/sda2

สำหรับมือใหม่ที่ยังไม่แน่ใจว่าพาร์ทิชันไหนเป็นอันไหน  ผมมีวิธีง่ายๆ ในการสังเกตุคือ  เปิด My Computer ขึ้นมา  และดูว่าแต่ละไดรฟ์นั้น  มีขนาดเท่าไหร่  ใช้ไปเท่าไหร่  ว่างเท่าไหร่  และจดเอาไว้

และเข้ามาใน Linux Mint เปิดไปที่ Menu > System Tools > System Monitor และไปที่แท็บ File System มองหาพาร์ทิชั่นที่มีขนาด  ที่ว่าง  และพื้นที่ที่ใช้ตรงกันหรือใกล้เคียงกันที่สุด (ในหลายๆที  บนวินโดวส์และลีนุกซ์จะเห็นขนาดพาร์ทิชันต่างกันเล็กน้อย) แล้วจดไว้

ถ้างงพาร์ทิชันต่างๆ ใน System Monitor จะลง GParted เพื่อดูก็ได้  ไม่ว่ากัน

ดังนั้น  จากในตัวอย่าง  ผมก็จะเทียบได้ดังนี้

  1. ไดรฟ์ C: = /dev/sha1 (ขนาด 225GB ว่าง 160GB)
  2. ไดรฟ์ D: = /dev/sda5 (ขนาด 225GB ว่าง 130GB)
  3. ไดรฟ์ E: = /dev/sda6 (ขนาด 15GB ว่าง 1GB)

เอาล่ะ  เราไปดูขั้นตอนต่อไปกัน

เตรียมสร้าง Mount Point สำหรับพาร์ทิชัน

เมื่อเราจะเมาท์อะไรก็ตามเข้ามาในระบบ  เราควรจะมี Mount Point เอาไว้ด้วย (ซึ่งเป็นไดเรคทอรี่เปล่าๆ ธรรมดา) เพื่อที่เราจะได้เรียกใช้มันได้ง่ายๆ  โดยหลักๆ เรามักจะสร้างเอาไว้ใน /mnt เช่น /mnt/Windows  ก็ให้เราไปสร้าง Mount Point (สร้างไดเรคทอรี่เปล่าๆ) รอไว้ให้เรียบร้อย  แล้วจึงไปต่อในขั้นตอนต่อไป

แก้ไขไฟล์ fstab สั่งเมาท์พาร์ทิชันอัตโนมัติ

สิ่งต่อไปที่เราจะต้องทำนั้นคือการแก้ไขไฟล์ /etc/fstab ให้เราเปิด File Manager ขึ้นมา  และไปที่ File System (มันจะเปิด / ขึ้นมา)

ต่อไปคือคลิกขวาที่ไดเรคทอรี่ /etc และเลือก Open as root และใส่รหัสผ่านของเราลงไป (เนื่องจากว่าการแก้ไขไฟล์ /etc/fstab นั้นจำเป็นต้องใช้สิทธิ์ของ root ครับ)

แล้วมันจะเปิดหน้าต่าง /etc ขึ้นมาพร้อมแถบแดงๆ คาดเอาไว้  บอกว่าไว้ “Elevated Privileges” เพื่อบอกว่าหน้าต่างนี้มีสิทธิ์ของรูทอยู่นะ  ดังนั้นจงระวังด้วยนะครับ  อย่าเผลอไปทำไรมั่ว  พังขึ้นมาผมไม่รับผิดชอบนะเออ

เอาล่ะ  ต่อ  เมื่อเปิดหน้า /etc ขึ้นมาแล้ว  ให้มองหาไฟล์ที่ชื่อ fstab และเปิดมันขึ้นมา  และใส่คำสั่งสำหรับเมาท์พาร์ทิชันลงไป  ดังนี้

<partition>	<mount point>	ntfs	defaults,uid=1000,rw	0	0

ตัวอย่างเช่น  เราจะเมาท์ /dev/sda1 ไปที่ /mnt/Windows ก็ให้ใส่ไปอย่างนี้

/dev/sda1	/mnt/Windows	ntfs	defaults,uid=1000,rw	0	0

โดยในส่วน ntfs จะหมายถึงระบบไฟล์ (เราอาจจะใช้ ntfs-3g ก็ได้เช่นกัน) ส่วน defaults,uid=1000,rw นั้นจะเป็นตัวเลือกเพิ่มเติมต่างๆ  ในกรณีนี้คือเมาท์ด้วยค่าปริยาย  กำหนดสิทธิ์เป็นของ uid 1000 (ซึ่งปกติก็เป็นเรานั้นแหละ  ถ้าจะกำหนดเป็นของคนอื่น  ต้องหา uid เองผ่านคำสั่ง id -u <usermname> ใน terminal  หรือใช้ ntfs-3g แทน) และกำหนดให้เมาท์ในโหมด อ่านและเขียน (rw = read write)

ใครที่มีพาร์ทิชันต้องการจะ auto mount เยอะๆ ก็จัดการเพิ่มลงไปให้หมดครับ  เช่นผมต้องการจะเมาท์ไดรฟ์ C: และไดรฟ์ D: ก็เพิ่มลงไปสองบรรทัด  ดังนี้

/dev/sda5	/mnt/harddisk	ntfs	defaults,uid=1000,rw	0	0
/dev/sda1	/mnt/Windows	ntfs	defaults,uid=1000,rw	0	0

จากนั้นให้ restart เครื่องรอบนึง  หรือไม่ก็สั่งเมาท์ผ่าน Terminal ด้วยคำสั่งนี้

sudo mount <partition> <mount point>

เช่น

sudo mount /dev/sda1 /mnt/Windows
sudo mount /dev/sda5 /mnt/harddisk

และเราไปดูขั้นตอนต่อไปกันครับ

แก้ไขไฟล์ fstab เพื่อผูกโฟลเดอร์สำหรับ แชร์ข้อมูล ในสอง OS

เรายังคงอยู่ที่ไฟล์ fstab เหมือนเดิม  โดยขั้นตอนต่อไปจะเป็นการเมาท์แบบ bind หรือผูกไดเรคทอรี่เข้าด้วยกันนั่นเอง  ในขั้นนี้ให้เราจำพาทของโฟลเดอร์ไลบรารี่เอาไว้

ยกตัวอย่างเช่นไลบรารี่เพลงผมอยู่ที่ D:Music เมื่อผมเมาท์มาบนลีนุกซ์ (ผ่านเมาท์พ็อยต์ที่ /mnt/harddisk) ไลบรารี่นี้ก็จะอยู่ที่ /mnt/harddisk/Music

หรือสำหรับใครที่ไม่ได้ย้าย Library มันก็จะอยู่ใน C:Users<username>Music เมื่อเมาท์มาบนเมาท์พ็อยต์ /mnt/Windows แล้ว  มันก็จะอยู่ที่ /mnt/Windows/Users/<username>/Music

ซึ่งต่อไปนี้จะเป็นตัวอย่างไดเรคทอรี่ต่างๆของผมนะครับ

  • Music – /mnt/harddisk/Music (D:Music)
  • Pictures – /mnt/harddisk/Pictures (D:Pictures)
  • Videos – /mnt/harddisk/Video (D:Video)
  • Downloads – /mnt/harddisk/Downloads (D:Downloads)
  • Documents – /mnt/Windows/Users/Jirayu/Documents (C:UsersJirayuDocuments)
  • Desktop – /mnt/Windows/Users/Jirayu/Desktop (C:UsersJirayuDesktop)

กลับไปที่ไฟล์ fstab ให้เราเพิ่มข้อมูลลงไป  ดังนี้

<source>	<target>	none	bind	0	0

เช่น  ผมจะเมาท์ /mnt/harddisk/music เข้าไปที่ /home/jirayu/Music (โฟลเดอร์ Music ใน Home ของเรา  ซึ่งเป็น Music Library หลักบนลีนุกซ์)  ก็จะใส่ลงไปดังนี้

/mnt/harddisk/Music	/home/jirayu/Music	none	bind	0	0

ดังนั้น  ทั้งหมดที่ผมจะต้องกรอกลงไป  เพื่อผูกไดเรคทอรี่เข้าด้วยกัน  ก็จะเป็นดังนี้

/mnt/harddisk/Music	/home/jirayu/Music	none	bind	0	0
/mnt/harddisk/Pictures	/home/jirayu/Pictures	none	bind	0	0
/mnt/harddisk/Video	/home/jirayu/Videos	none	bind	0	0
/mnt/harddisk/Downloads	/home/jirayu/Downloads	none	bind	0	0
/mnt/Windows/Users/Jirayu/Documents	/home/jirayu/Documents	none	bind	0	0
/mnt/Windows/Users/Jirayu/Desktop	/home/jirayu/Desktop	none	bind	0	0

เรียบร้อยแล้วก็ให้เซฟไฟล์ลงไปให้เรียบร้อย

ตรวจสอบอีกครั้ง  เพื่อความแน่ใจ

ในกรณีของผม  ผมจะเมาท์ C: ไปที่ /mnt/Windows และเมาท์ D: ไปที่ /mnt/harddisk ดังนั้น  ผมจะต้องมีไดเรคทอรี่ทั้งสอง  เพื่อใช้เป็นเมาท์พ็อยต์

  1. /mnt/Windows
  2. /mnt/harddisk

และคำสั่งในไฟล์ fstab ที่เพิ่มเข้ามาเพื่อเมาท์และผูกไดเรคทอรี่  จะเป็นดังนี้

/dev/sda5	/mnt/harddisk	ntfs	defaults,uid=1000,rw 0 0
/dev/sda1	/mnt/Windows	ntfs	defaults,uid=1000,rw 0 0
/mnt/harddisk/Music	/home/jirayu/Music	none	bind	0	0
/mnt/harddisk/Pictures	/home/jirayu/Pictures	none	bind	0	0
/mnt/harddisk/Video	/home/jirayu/Videos	none	bind	0	0
/mnt/harddisk/Downloads	/home/jirayu/Downloads	none	bind	0	0
/mnt/Windows/Users/Jirayu/Documents	/home/jirayu/Documents	none	bind	0	0
/mnt/Windows/Users/Jirayu/Desktop	/home/jirayu/Desktop	none	bind	0	0

เมื่อมั่นใจว่าทุกอย่างถูกต้องแล้ว  ก็ให้จัดการรีสตาร์ทเครื่องสักรอบให้เรียบร้อย

ผลลัพธ์และผลข้างเคียง

เมื่อรีสตาร์ทเครื่องกลับขึ้นมา  เราจะพบว่าไดเรคทอรี่ต่างๆ นั้นใช้งานร่วมกันเป็นที่เรียบร้อยแล้ว  ดังนี้

ลีนุกซ์และวินโดวส์นั้นเป็นคนละระบบปฏิบัติการกันโดยสมบูรณ์  ดังนั้นจึงไม่ใช่เรื่องแปลกนักที่จะเจอปัญหาเล็กๆน้อยๆ

จากในภาพคงจะเห็นว่านอกจากไฟล์ที่เซฟไว้บนเดสก์ท็อปแล้ว  ยังมีไอคอนของโปรแกรมบางตัวตามมาด้วย  แต่บางโปรแกรมก็ไม่ตามมา  นั้นเป็นเพราะว่าวินโดวส์จะดึงไอคอนบนเดสก์ท็อปมาจากสองที่  คือใน C:UsersAll UsersDesktop และ C:Users<username>Desktop ดังนั้นเมื่อเราผูก C:Users<username>Desktop เข้ากับ /home/<username>/Desktop ช็อตคัทบางตัวในนั้นก็จะตามมาด้วยนั่นเอง

เรื่องต่อมาคือเรื่องของ Hidden files ที่บนวินโดวส์และลีนุกซ์จะมีวิธีซ่อนไฟล์ที่ต่างกัน  บนวินโดวส์จะใช้วิธีเพิ่มแอททริบิวต์ hidden เข้าไปที่ตัวไฟล์เพื่อซ๋อนไฟล์  ในขณะที่บนลีนุกซ์จะใช้วิธีตั้งชื่อไฟล์  โดยใช้ . นำหน้า  เช่น .myfolder เพื่อซ่อนโฟลเดอร์นั่นเอง  ดังนั้นไฟล์ที่ซ๋อนไว้บนวินโดวส์  เมื่อมาเปิดบนลีนุกซ์ก็จะสามารถเห็นได้สบายๆ

ทิ้งท้าย

แนวคิดเรื่องการเมาท์และผูกไดเรคทอรี่เข้าด้วยกันของระบบ UNIX นั้น  เป็นไอเดียที่ดีมากครับ (ลีนุกซ์สามารถเมาท์ iso และไฟล์อิมเพจอื่นๆ ได้โดยไม่ต้องลงโปรแกรมเพิ่มเติม) รงมถึงการเอาพื้นที่บนแรมมาใช้  หรือที่เราเรียกว่า Ram disk ก็สามารถทำได้ง่ายๆ แค่สั่งเมาท์มันเข้ามาเท่านั้นเอง!

ตอนที่ผมฮาร์ดดิสก์พัง  ตอนนั้นผมต้องใช้เครื่อง  เลยจัดการติดตั้ง Linux Mint 13 ลงบนแฟลชไดรฟ์  แต่ปัญหาคือความเร็วการอ่านและเขียนของแฟลชไดรฟ์มันช้ามาก  ดังนั้นผมเลยแก้ปัญหาด้วยการเมาท์เอาไดเรคทอรี่ที่มีการ อ่าน/เขียน อยู๋ประจำ (เช่น temp) ไปไว้บนแรมเสียเลย  ซึ่งก็ทำให้ได้ความเร็วเพิ่มขึ้นมาเยอะค่อนข้างน่าพอใจ (แต่ก็ยังติดคอขวดความเร็ว USB อยู่ดี)  หรือเวลาผมจะโหลดซีรี่ย์มาดู  เน็ตผมก็ดันเร็วกว่าความเร็วเขียนลงบนแฟลชไดรฟ์  ผมก็จัดการโหลดมาโยนใส่ไว้ใน Ram disk นี่แหละ

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

สุดท้าย  โพสต์นี้ผมเองยังรู้สึกว่ามันงงๆ  ถ้ามีปัญหาอะไรก็สอบถามกันได้นะครับ

Posted by Jirayu

WordPress Developer ที่พอมีประสบการณ์อยู่บ้าง วันไหนไม่ทำงานอยู่บ้านว่างๆ ก็นั่งเลี้ยงแมว

Comments