เมานต์ไดรฟ์ภายนอกเมื่อบูตเครื่องก็ต่อเมื่อเสียบเข้ากับไดรฟ์


70

ฉันมีรายการฮาร์ดไดรฟ์ภายนอกใน fstab ของฉัน:

UUID="680C0FE30C0FAAE0" /jgdata ntfs noatime,rw

แต่บางครั้งไดรฟ์นี้ไม่ได้เสียบไว้ตอนบูต สิ่งนี้ทำให้ฉันผ่านการบู๊ตได้ครึ่งทางพร้อมรับคำสั่งให้ "ดำเนินการต่อรอกด S หรือกด M" แต่ไม่มีการกดปุ่มใด ๆ ที่มีผลกระทบในขั้นตอนนี้ (รวมถึงCtrl- Alt- Deleteไม่ใช่แม้แต่แคปล็อค)

สั้น ๆ ในการเขียนสคริปต์เพื่อตรวจสอบผลลัพธ์ของfdisk -lฉันจะติดตั้งไดรฟ์นี้ในเวลาบูตได้เฉพาะเมื่อมีอยู่ได้อย่างไร มันจะเป็นการดีหากมีรายการ fdisk สำหรับไดรฟ์นี้ดังนั้นฉันสามารถพิมพ์ได้mount /jgdataแทนที่จะต้องการชื่ออุปกรณ์

คำตอบ:


73

คุณอยู่ในเส้นทางที่ถูกต้องแล้ว ฉันได้พบวิธีที่สะอาดและดีขึ้นอีกเล็กน้อย

ตัวเลือกที่ถูกต้องที่จะเพิ่มในfstabมีแต่ก็ต้องมาหลังจากnofail autoหากคุณเปลี่ยนnoautoเป็นจะไม่ติดระหว่างการบู๊ต หากคุณเพิ่มลงnobootwaitใน bootloader คุณอาจพลาดบางสิ่งที่ร้ายแรงเช่นการติดตั้งพาร์ติชันก่อนที่จะทำการfsckตรวจสอบเสร็จสิ้นหรือไม่ทำการติดตั้งพาร์ติชันที่ใช้ในกระบวนการบู๊ต

หลังจากทำการเปลี่ยนแปลงข้างต้นระบบจะเริ่มตามปกติ (และเมานต์ระดับเสียง) หากเสียบอุปกรณ์ในขณะที่ระบบปิดอยู่ มันจะบู๊ตตามปกติหากไม่มีอุปกรณ์ในเวลาบูต

ความไม่สะดวกเพียงอย่างเดียวคือถ้าคุณเชื่อมต่ออุปกรณ์ในขณะที่ระบบกำลังทำงานขึ้นอยู่กับการกำหนดค่า (ตัวแปรมากเกินไปที่จะทดสอบ) อุปกรณ์อาจไม่สามารถเมานต์ทันที วิธีนี้สามารถแก้ไขได้ด้วยการเรียบง่ายmount -aหรือmount /specific_deviceรีบูต


2
ทุกตัวอย่างฉันสามารถค้นหาออนไลน์แสดง nofail ก่อนอัตโนมัติ มีเอกสารสำหรับการสั่งซื้อที่ถูกต้องหรือไม่?
Hackeron

'man fstab' ไม่ได้ให้คำสั่งที่แม่นยำ (ตรวจสอบใน centos 7 และ Ubuntu 14.04) แม้ว่าจะมีข้อความระบุว่า "nofail ไม่ได้รายงานข้อผิดพลาดสำหรับอุปกรณ์นี้หากไม่มีอยู่" ฉันสงสัยว่าสิ่งนี้จะช่วยให้ไม่รอการหมดเวลาขณะบู๊ตถ้าไม่สามารถเข้าถึงไดรฟ์ข้อมูล nfs ได้
tisc0

16

ฉันมีปัญหาเดียวกัน - ฉันทำหนึ่งขั้นตอนพิเศษแล้ว

หากคุณใช้nofailตัวเลือกใน/etc/fstabระบบจะค้นหาดิสก์ (และพาร์ติชัน) ในเวลาบูต หากเสียบอุปกรณ์ระบบไฟล์จะถูกเมาต์ หากไม่บูตจะดำเนินต่อตามปกติ

ดู arch wiki: https://wiki.archlinux.org/index.php/Fstab

ตัวอย่าง

UUID=XXXXXXXXXXXXXXX    /myhdd ntfs  auto,nofail,noatime,rw,user    0   0

ฉันพยายามบูตระบบด้วยและไม่ต้องเสียบอุปกรณ์และมันก็ใช้ได้

สิ่งที่ฉันไม่ประสบความสำเร็จคือการติดตั้งอัตโนมัติเมื่อดิสก์ถูกเสียบหลังจากบู๊ต (เมื่อไม่ได้เสียบปลั๊กตอนบู๊ต) ฉันต้องใช้mount -aเป็นรูทเพื่อติดตั้งทั้งหมดอีกครั้ง


13

ตัวเลือก noauto ให้กระบวนการบู๊ตดำเนินการต่อหรือไม่

มันไม่ได้เมานต์อัตโนมัติหากมีอยู่ แต่จะทำให้ทราบว่ามีอยู่หากเมาท์ / jgdata ใช้งานได้ง่าย ... จากนั้นเมาต์สคริปต์ / jdata จะไม่ต้องการการตรวจสอบผลลัพธ์เพียงแค่จับข้อผิดพลาดและทำการบูทต่อไป

แก้ไข: เมื่ออ่านเพิ่มเติม bootwait อาจเป็นตัวเลือกที่ถูกต้องมากกว่าที่จะผ่าน ... (โดยปกติจะใช้สำหรับการแชร์เครือข่ายที่อาจไม่ปรากฏจนกว่าจะถึงขั้นตอนการบู๊ตในภายหลัง แต่อาจยังทำให้แฮงค์ idk)

และสามารถเพิ่มสคริปต์เมานต์ได้เช่น: https://stackoverflow.com/questions/2062543/running-a-script-with-the-help-of-grub-and-menu-lst


ขอบคุณสำหรับคำตอบ. เพียงเพื่อชี้แจงตัวเลือกที่จะเพิ่มในบรรทัด fstab ถูกต้องหรือไม่ (แก้ไข: Nvm, googled มัน. ดูเหมือนว่า nobootwait คือสิ่งที่ฉันต้องการ.)
Jeremy

1
ฉันใช้ตัวเลือก nobootwait ใน fstab ขอบคุณอย่างสมบูรณ์แบบ
Jeremy

5
/dev/xvdh1 /myfs xfs defaults,nofail,x-systemd.device-timeout=30 0 0

ทำงานให้ฉัน

nofail ... อย่ารายงานข้อผิดพลาดสำหรับอุปกรณ์นี้หากไม่มีอยู่
x-systemd.device-timeout = 30 ... การบูตจะใช้เวลานาน 30 วินาทีหากอุปกรณ์ไม่มีอยู่ (ค่าเริ่มต้นคือ 90 วินาที)

ที่มา: https://wiki.archlinux.org/index.php/fstab#External_devices


นี่คือคำตอบที่ดีที่สุดและง่ายที่สุด โปรดทราบว่านี่เป็นไวยากรณ์ใหม่สำหรับเวอร์ชันใหม่กว่าของระบบปฏิบัติการที่ใช้ systemd โดยแทนที่nobootwaitไวยากรณ์เก่า
cxrodgers

สิ่งนี้ใช้ได้สำหรับฉัน รหัสกำลังเพิ่มการหมดเวลาของอุปกรณ์ เพียงแค่ใช้ nofail การบูตจะล้มเหลวแน่นอนเนื่องจากการหมดเวลาของ udev (อาจไม่ซ้ำกับอุปกรณ์ USB)
BobHy

1

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

ดังนั้นเพียงแค่เขียนบรรทัดใน fstab ของคุณใหม่ให้เหมือนด้านล่าง:

# <file system>           <dir>       <type>    <options>         <dump> <pass>
UUID="680C0FE30C0FAAE0"   /jgdata      ntfs      user,auto,rw       0     0

หลังจากเปลี่ยนแล้วบันทึกให้ลองติดตั้งด้วยมือ:

$ sudo mount -a

สิ่งสำคัญที่ควรทราบคือ:

  1. คุณต้องแน่ใจเกี่ยวกับ UUID ของอุปกรณ์ UUID ถูกสร้างขึ้นโดยยูทิลิตี make-filesystem (mkfs. *) เมื่อคุณสร้างระบบไฟล์
  2. ผู้ที่<options>ตอบสนองความต้องการที่จะเขียนต่อไปนี้เป็นรูปแบบที่เฉพาะเจาะจงมากคั่นด้วยเครื่องหมายจุลภาค แต่ไม่มีช่องว่างหลังจากแต่ละจุลภาค ระวังด้วย ;-)
  3. ฉันไม่แน่ใจว่าสิ่งนี้จะทำงานได้อย่างราบรื่นหรือไม่เพราะคุณพยายามที่จะติดตั้งระบบไฟล์ NTFS โดยอัตโนมัติซึ่งสามารถจัดการได้โดยใช้ยูทิลิตี้NTFS-3G ในขณะที่คำแนะนำของฉันควรจะทำงานอย่างถูกต้องฉันไม่เคยลอง automount NTFS มาก่อน ดังนั้นถ้ามันล้มเหลวฉันขอแนะนำให้คุณดูพาร์ติชั่น Windowsนี้สำหรับการใช้งานทางเลือกของ NTFS

ขอบคุณ!


ฉันคิดว่าเขาจะได้รับสิ่งที่คุณพูดมากที่สุด แต่มันจะหยุดเมื่อไม่มีการตรวจพบดิสก์ นั่นเป็นเหตุผลที่ฉันแนะนำวิธีหลีกเลี่ยงวิธี "เหมาะสม"
RobotHumans

ขอบคุณสำหรับคำตอบ. FYI sudo blkidคำสั่งเป็นวิธีที่ดีในการค้นหา UUID
Jeremy

ฉันเพิ่งลองบรรทัดที่แน่นอนใน fstab เมื่อเสียบ HDD ระบบจะบู๊ตตามปกติ แต่ในระหว่างการบูทเมื่อ HDD ภายนอกไม่ได้เสียบอยู่ก็ยังแจ้งให้ฉันรอ / ข้าม / กู้คืนด้วยตนเอง เนื่องจากพรอมต์นี้ไม่หมดเวลาถ้าฉันไม่ได้อยู่ที่เทอร์มินัลกล่องจะไม่สามารถบู๊ตได้ถ้า HDD ภายนอกไม่ได้เสียบเข้า
Jeremy

คุณต้องเพิ่มตัวเลือก nofail
kkron

0

ฉันมีปัญหาเดียวกัน ฉันได้ทำการแก้ไข fstab เพื่อคอมเม้นท์รายการเมื่อฉันรู้ว่าฉันจะไม่มีไดรฟ์ปรากฏขึ้นในครั้งต่อไปที่ฉันบูต จากนั้นเมื่อฉันมีไดรฟ์อยู่ฉันเพียงแก้ไข fstab เพื่อลบความคิดเห็นและออกการเมานต์ -a นี่ไม่ใช่ทางออกที่สมบูรณ์แบบ มันจะดีมากถ้าฉันสามารถหาวิธีที่จะให้ระบบติดตั้งไดรฟ์โดยอัตโนมัติหากมีอยู่หรือข้ามไปโดยอัตโนมัติหากไม่มี ปัญหาเดียวกันนี้เกิดขึ้นหากคุณมีการเมาท์ NFS ที่แชร์โดยอัตโนมัติและไม่พบเซิร์ฟเวอร์


1
ลองดูคำตอบที่ฉันตอบรับแล้วเพิ่มโนบุตรอที่ตัวเลือกเมานต์ใน fstab
Jeremy
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.