แชร์ข้อมูลระหว่าง 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 เพื่อดูก็ได้ ไม่ว่ากัน
ดังนั้น จากในตัวอย่าง ผมก็จะเทียบได้ดังนี้
- ไดรฟ์ C: = /dev/sha1 (ขนาด 225GB ว่าง 160GB)
- ไดรฟ์ D: = /dev/sda5 (ขนาด 225GB ว่าง 130GB)
- ไดรฟ์ 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 ดังนั้น ผมจะต้องมีไดเรคทอรี่ทั้งสอง เพื่อใช้เป็นเมาท์พ็อยต์
- /mnt/Windows
- /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 ยังสามารถเอาไปดัดแปลงได้อีกหลายอย่าง (อย่างตอนนี้ที่ใช้ก็คือผูกโฟลเดอร์ตามตัวอย่างเข้าด้วยกัน และใช้โฟลเดอร์ดร็อปบ็อกซ์ร่วมกัน) ซึ่งใครที่มีไอเดียอะไรดีๆ ก็แชร์กันเข้ามาได้ครับ
สุดท้าย โพสต์นี้ผมเองยังรู้สึกว่ามันงงๆ ถ้ามีปัญหาอะไรก็สอบถามกันได้นะครับ