Κάντε Auto-mount συσκευές κατά την εκκίνηση του συστήματος χωρίς αλλαγές στο /etc/fstab
Η Ιστορία:⌗
Ένα από τα προβλήματα που εντόπισα όταν αποφάσισα να προσθέσω εξωτερικό δίσκο στο Raspberry Pi 4 server μου, ήταν ότι για να πραγματοποιηθεί αυτόματα το mount κατά το boot, έπρεπε να κάνω κάποιες αλλαγές στο /etc/fstab . To πρόβλημα που υπήρχε με αυτή την λύση ήταν η Ρώσικη ρουλέτα.
Το πρόβλημα:⌗
Οποιοδήποτε συντακτικό/λογικό λάθος πάνω στην αλλαγή, κατέληγες σε grub rescue που έπρεπε να μπει ποντίκι-πληκτρολόγιο για να πραγματοποιηθούν αλλαγές, είτε να αφαιρεθεί η sd από το Raspberry Pi, να συνδεθεί σε άλλο σύστημα και να αναιρεθεί η αλλαγή. Επιπλέον, υπήρχε και το πρόβλημα του αν για οποιοδήποτε λόγο δεν ήταν συνδεδεμένη η συσκευή κατά το boot, πάλι κατέληγε σε grub rescue.. Και αν εκείνη την ώρα απουσίαζες από το σπίτι και έκανες αλλαγές μέσω ssh και VPN.. και κάποιος από λάθος αφαίρεσε/κούνησε το καλώδιο….. RIP
Συνεπώς, έπρεπε να βρω μία διαφορετική προσέγγιση για να επιλύσω το πρόβλημα μου με το automount. Εκεί έρχεται η λύση που προσφέρει το Auto-Fs.
Η λύση στο πρόβλημα:⌗
Το autofs πρόκειται για ένα πρόγραμμα για την αυτόματη προσάρτηση συσκευών ανάλογα με τις ανάγκες του χρήστη σε πραγματικό χρόνο. Οι αυτόματες προσαρτήσεις γίνονται mount μόνο κατά την προσπέλαση και un-mount μετά από μια περίοδο αδράνειας. Εξαιτίας αυτού, η αυτόματη προσάρτηση κοινών αρχείων NFS/Samba εξοικονομεί bandwith και τελικά προσφέρει καλύτερες συνολικές επιδόσεις σε σύγκριση με τις στατικές προσαρτήσεις μέσω της fstab.
Παραδοσιακά για εγκατάσταση του autofs σε Debian based συστήματα δίνουμε:
sudo apt install autofs
Για τα Fed-ωραία και τα υπόλοιπα distros ( i use arch btw), μπορείτε να δώσετε τις αντίστοιχες εντολές εγκατάστασης βάση του package manager && repository που χρησιμοποιεί η δικιά σας διανομή Linux. DuckDuckGo it λοιπόν!
Ρύθμιση του autofs⌗
Για να λειτουργήσει ομαλά το mount με το AutoFs, πρέπει να κάνουμε αλλαγές σε 2 αρχεία:
- Στο auto.master έτσι ώστε να το οδηγήσουμε στο directory που θέλουμε να κάνει αυτόματα mount,
- Στο auto.usb οπού θα εξηγεί στο autofs τα τι που πώς, σχετικά με την συσκευή που θέλουμε να κάνουμε mount.
Επεξεργασία auto.master⌗
Ανοίγουμε έναν test editor για να το επεξεργαστούμε (εγώ δουλεύω με nano):
sudo nano /etc/auto.master
και έπειτα προσθέτουμε το εξής:
/media /etc/auto.usb --timeout=60 --ghost
Kαι τώρα μπορούμε να δημιουργήσουμε το auto.usb αρχείο. Συνεχίζουμε από τερματικό:
sudo nano /etc/auto.usb
Και προσθέτουμε την παρακάτω γραμμή:
myUSB -fstype=auto,uid=pi,gid=pi,rw UUID=YOUR_UUID
Οπού:
- myUSB : Το όνομα του φακέλου που θα εμφανιστεί εντός /media. Στο παράδειγμα π.χ. θα εμφανιστεί ως
/media/myUSB
, - Το -fstype ορίζουμε τον τύπο του filesystem οπού είναι η συσκευή οπού θα κάνουμε mount.
- uid του χρήστη μας,
- gid της ομάδας που συμμετέχει ο χρήστης μας,
- rw οπού δίνουμε read write δικαιώματα,
- το UUID της συσκευής.
Για να βρούμε το UUID της συσκευής μας, δίνουμε:
sudo lsblk -f | grep -v loop
Φυσικά αποθηκεύουμε τις αλλαγές και έπειτα κάνουμε και μία επανεκκίνηση στο systemd service:
sudo systemctl restart autofs.service
Και είμαστε έτοιμοι!!!
Unmount⌗
Φυσικά, αν για οποιοδήποτε λόγο θέλουμε να αφαιρέσουμε την συσκευή ενώ έχουμε τo PC/RaspberryPi/Server ανοικτό, απλά δίνουμε:
sudo umount /media/myUSB
Και όταν τον συνδέσουμε ξανά, το autofs θα τον ξανακάνει mount αυτόματα. :)