Jak zmusić Raspberry Pi do korzystania z serwera NFS dla głównego systemu plików zamiast z karty SD?
Chciałbym mieć możliwość skonfigurowania mojego Raspberry Pi, aby miał swój główny system plików na zdalnym komputerze za pośrednictwem NFS do celów wydajnościowych / tworzenia kopii zapasowych / programowania. W jaki sposób mogę to zrobić?
Odpowiedzi:
Krótka wersja
Nadal będziesz potrzebować karty SD do rozruchu na wczesnym etapie, ale potem nic oprócz / boot nie będzie potrzebowało karty SD.
Detale
Zrobiłem to tylko na komputerze z systemem Linux. Teoretycznie jest to możliwe na każdym komputerze, który może eksportować systemy plików NFS.
Najłatwiejszym sposobem przygotowania głównego systemu plików jest skopiowanie systemu dostarczonego przez istniejące obrazy. Jako punkt wyjścia wykorzystałem oficjalny obraz Debiana 6 :
Zamontuj partycję root z tego obrazu za pomocą urządzenia loopback. Będziesz potrzebować przesunięcia obrazu, aby rozpocząć partycję root, w tym przypadku jest to druga partycja na obrazie:
Druga partycja rozpoczyna się w bloku (lub sektorze) 157696, więc przesunięcie wynosi (512 * 157696) = 80740352:
Po zamontowaniu obrazu prawdopodobnie chcesz go skopiować w bardziej trwały sposób, aby uniknąć używania urządzenia loopback na zawsze. Zrobiłem wolumin LVM2 i zamontowałem go w katalogu / mnt / rpi-root, więc zrobiłem:
Musimy teraz wyeksportować system plików, więc musimy dodać wiersz taki jak:
do / etc / export na serwerze NFS, gdzie 192.168.1.2 to adres Raspberry Pi. Po dodaniu tego uruchomienia
exportfs -rv
ponownie przeczytaj listę eksportów. (Zobacz eksport (5), aby uzyskać bardziej zaawansowane opcje, w tym symbole wieloznaczne / podsieci zamiast poszczególnych hostów)Możesz alternatywnie pominąć ten krok i zbudować główny system plików od zera, używając czegoś takiego
multistrap
.Teraz musimy zbudować kartę SD, która wykonuje rozruch na wczesnym etapie i uruchamia się przy użyciu tego udziału NFS. Zrobiłem to, biorąc pierwszą partycję oficjalnego obrazu i kopiując ją na kartę SD, gdzie karta SD to / dev / sdx:
a następnie ponieważ skopiowano tylko pierwszą partycję, edytując tablicę partycji za pomocą fdisk, aby usunąć dwie partycje, których nie skopiowaliśmy.
Następnie zamontowałem partycję z karty SD i edytowałem z niej plik cmdline.txt, aby przeczytać:
gdzie 192.168.1.1 to adres serwera NFS. Jeśli nie chcesz korzystać z DHCP, możesz ustawić alternatywny sposób adresu IP. Aby uzyskać szczegółowe informacje , zapoznaj się z tym dokumentem .
Po wykonaniu tej czynności możesz odmontować kartę SD i uruchomić Rapsberry Pi z rootem NFS. Możesz także manipulować systemem plików po stronie serwera lub innymi klientami NFS według własnego uznania (np. QEMU + binfmt_misc , migawki LVM, systemy kopii zapasowych itp.)
Opcjonalne rzeczy
Jeśli używasz ip = dhcp, prawdopodobnie będziesz musiał skomentować wiersz:
w / etc / network / interfaces (/ mnt / rpi-root / etc / network / interfaces), aby uniknąć sytuacji, w której zamiana między DHCP wczesnego rozruchu a zwykłym późniejszym powoduje komunikat:
Jeśli chcesz uruchomić wiele urządzeń z tego samego katalogu głównego, musisz zadbać o zapewnienie „lokalnego” / tmp (prawdopodobnie tmpfs) i innych subtelności, aby uniknąć problemów z wieloma komputerami próbującymi pisać do tych samych plików.
źródło
/home/user/Documents/raspisRootFolder
a klient pofstab
prostu montuje całość/
?/dev/mmcblk0p2 / ext4 defaults,noatime 0 1
od/etc/fstab
, chociaż myślę, że nie, nie powodując żadnych problemów, jeśli zostawisz go w.