Pasang drive eksternal pada saat booting hanya jika dicolokkan

70

Saya punya entri untuk harddisk eksternal di fstab saya:

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

Namun terkadang drive ini tidak terhubung saat boot. Ini membuat saya setengah jalan melalui boot, dengan prompt untuk "Lanjutkan Menunggu, tekan S atau tekan M" tetapi tidak ada penekanan tombol yang mempengaruhi pada tahap ini (termasuk Ctrl- Alt- Delete, bahkan caps-lock).

Singkat penulisan skrip untuk memeriksa output fdisk -l, bagaimana saya bisa me-mount drive ini saat boot hanya jika ada? Akan berguna untuk memiliki entri fdisk untuk drive ini, jadi saya bisa mengetik mount /jgdataalih-alih membutuhkan nama perangkat.

Jeremy
sumber

Jawaban:

73

Anda semua berada di jalur yang benar. Saya telah menemukan cara yang sedikit lebih bersih dan bentuk yang lebih baik.

Opsi yang benar untuk menambahkan fstabadalah nofail, bagaimanapun, itu harus datang setelah auto. Jika Anda mengubahnya noauto, itu tidak akan pernah me-mount saat boot. Jika Anda menambahkan nobootwaitke bootloader, Anda berpotensi melewatkan sesuatu yang serius, seperti memasang partisi sebelum fsckselesai memeriksanya, atau tidak memasang partisi yang digunakan dalam proses boot.

Setelah melakukan perubahan di atas, Sistem akan mulai secara normal (dan memasang volume) jika perangkat terhubung saat sistem dimatikan. Ini juga akan mem-boot secara normal jika perangkat tidak ada pada saat boot.

Satu-satunya ketidaknyamanan adalah bahwa jika Anda menghubungkan perangkat saat sistem sedang berjalan, tergantung pada konfigurasi (terlalu banyak variabel untuk diuji), perangkat mungkin tidak segera dipasang. Ini dapat diatasi dengan yang sederhana mount -aatau mount /specific_deviceatau reboot.

Bryan Gonzalez
sumber
2
Setiap contoh saya dapat menemukan acara online nofail sebelum otomatis. Apakah ada dokumentasi untuk urutan yang benar?
Hackeron
'man fstab' tidak memberikan ketelitian dari pesanan yang diperlukan (diperiksa dalam centos 7 dan Ubuntu 14.04). Padahal, katanya "nofail tidak melaporkan kesalahan untuk perangkat ini jika tidak ada." Saya ingin tahu apakah ini akan membantu tidak menunggu batas waktu saat boot jika volume nfs tidak dapat diakses.
tisc0
16

Saya memiliki masalah yang sama - Saya telah melakukan satu langkah ekstra

Jika Anda menggunakan nofailopsi ini /etc/fstab, sistem akan mencari disk (dan partisi) Anda saat boot. Jika perangkat terhubung, sistem file akan dipasang. Jika tidak, boot akan berlanjut seperti biasa.

Lihat arch wiki: https://wiki.archlinux.org/index.php/Fstab

Contoh

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

Saya sudah mencoba boot sistem dengan dan tanpa perangkat terpasang, dan berfungsi dengan baik.

Apa yang saya tidak capai adalah mengotomatiskan ketika disk dicolokkan setelah boot (ketika tidak dicolokkan saat boot). Saya harus menggunakan mount -asebagai root untuk me-mount semua lagi.

pengguna898384
sumber
13

apakah opsi noauto membiarkan proses booting berlanjut?

itu tidak secara otomatis me-mount jika ada, tetapi tidak diketahui jika ada sehingga mount sederhana / jgdata berfungsi ... maka scripted mount / jdata tidak akan memerlukan pemeriksaan output, cukup tangkap kesalahan dan terus booting

sunting: setelah membaca lebih lanjut bootwait mungkin merupakan opsi yang lebih tepat untuk dilewati ... (biasanya digunakan untuk jaringan yang mungkin tidak ada sampai nanti dalam proses boot, tetapi mungkin masih menyebabkan hang, idk)

dan skrip mount dapat ditambahkan seperti ini: https://stackoverflow.com/questions/2062543/running-a-script-with-the-help-of-grub-and-menu-lst

RobotHumans
sumber
Terima kasih atas jawabannya. Hanya untuk memperjelas, opsi harus ditambahkan ke baris fstab, benar? (EDIT: Nvm, googled it. Sepertinya nobootwait adalah yang saya butuhkan.)
Jeremy
1
Saya telah menggunakan opsi nobootwait di fstab, berfungsi dengan baik, terima kasih.
Jeremy
5
/dev/xvdh1 /myfs xfs defaults,nofail,x-systemd.device-timeout=30 0 0

bekerja untukku.

nofail ... Jangan melaporkan kesalahan untuk perangkat ini jika tidak ada.
x-systemd.device-timeout = 30 ... Boot akan memakan waktu 30 detik lebih lama jika perangkat tidak ada (standarnya adalah 90 detik).

Sumber: https://wiki.archlinux.org/index.php/fstab#External_devices

pengguna313829
sumber
Ini adalah jawaban terbaik dan paling sederhana. Perhatikan bahwa ini adalah sintaks baru untuk versi OS yang lebih baru yang menggunakan systemd, menggantikan nobootwaitsintaks lama
cxrodgers
Ini berhasil untuk saya. Key menambahkan batas waktu perangkat; hanya menggunakan nofail, boot akan gagal karena udev timeout. (mungkin unik untuk perangkat USB)
BobHy
1

Cara yang disarankan untuk melakukan mount selama boot adalah menginstruksikan sistem mereka melalui file fstab . Melihat Tanya Anda, saya bisa melihat Anda hampir sampai, tidak hanya memiliki instruksi yang mengatur perangkat untuk menggunakan opsi automount, yang memungkinkan sistem Anda untuk memasang perangkat saat tersedia.

Jadi, cukup tulis ulang baris di fstab Anda menjadi seperti di bawah ini:

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

Setelah mengubah dan menyimpannya, coba pasang dengan tangan:

$ sudo mount -a

Penting untuk dicatat bahwa:

  1. Anda harus yakin tentang UUID perangkat. UUID dihasilkan oleh utilitas make-filesystem (mkfs. *) Saat Anda membuat filesystem.
  2. Itu <options>perlu ditulis mengikuti format yang sangat spesifik, dipisahkan oleh koma tetapi tidak ada spasi setelah setiap koma. Hati-hati dengan ini ;-)
  3. Saya tidak yakin apakah ini akan berfungsi dengan baik karena Anda mencoba untuk mengotomatiskan sistem file NTFS, yang dapat ditangani dengan menggunakan utilitas NTFS-3G . Sementara instruksi saya seharusnya berfungsi dengan benar, saya tidak pernah mencoba automount NTFS sebelumnya. Jadi, jika gagal, saya sarankan Anda untuk melihat Mounting Windows Partitions ini untuk penggunaan alternatif NTFS.

Terima kasih!

crncosta
sumber
Saya pikir dia mendapatkan sebagian besar dari apa yang Anda katakan, tetapi tergantung ketika disk tidak terdeteksi. itu sebabnya saya menyarankan solusi untuk cara yang "tepat"
RobotHumans
Terima kasih atas jawabannya. FYI sudo blkidperintah adalah cara yang baik untuk mencari tahu UUID.
Jeremy
Saya baru saja mencoba baris yang tepat di fstab. Ketika HDD dicolokkan, sistem melakukan booting secara normal. Tetapi, selama boot, ketika HDD eksternal tidak dicolokkan, masih meminta saya untuk Tunggu / Lewati / Pemulihan Manualy. Karena prompt ini tidak ada batas waktu, jika saya tidak di terminal, kotak tidak akan bisa boot jika HDD eksternal tidak terpasang.
Jeremy
Anda perlu menambahkan opsi nofail.
kkron
0

Saya memiliki masalah yang sama. Saya telah mengedit fstab untuk mengomentari entri ketika saya tahu saya tidak akan memiliki drive hadir saat saya boot. Kemudian ketika saya memiliki drive hadir saya cukup mengedit fstab untuk menghapus komentar dan mengeluarkan mount -a. Ini bukan solusi yang sempurna. Akan lebih bagus jika saya bisa mencari cara agar sistem secara otomatis memasang drive jika ada atau secara otomatis lewati jika tidak ada. Masalah yang sama terjadi jika saham NFS Anda dipasang secara otomatis dan server tidak ada.


sumber
1
Lihat jawaban yang saya terima, cukup tambahkan nobootwait ke opsi mount di fstab.
Jeremy