Mėnesio archyvas: rugpjūčio 2016

Raspberry Pi NFS serveris ir Windows klientas

Įžanga

Microsoft pateikiamas NFS klientas yra prieinamas tik Enterprise ir Ultimate Windows versijose, tad šiame straipsnyje aprašysiu kaip paleisti NFS serverį Raspberry Pi 3 kompiuteryje ir prie jo prisijungti iš Windows 10 Home kliento (viskas turėtų veikti ir su kitomis Windows versijomis).

Raspberry Pi serveris

titulinis

Disko prijungimas

Prijungiam diską prie Raspberry Pi ir vykdom komandą fdisk -l. Sužinome kokį žymėjimą gavo prijungtas diskas:

fdisk

Sukuriame prijungimo vietą:

sudo mkdir /media/transcend

Kadangi prijungtas diskas yra NTFS failų sistemos, įsitikiname, kad įdiegtas NTFS skaitymo – rašymo draiveris:

sudo apt-get update

sudo apt-get install ntfs-3g

/etc/fstab faile sukuriame tokį įrašą:

Perkrauname Raspberry ir naujai prijungtame diske sukuriame katalogą, kuriame saugosime NFS share:

mkdir /media/transcend/NFS

NFS serverio nustatymas

sudo apt-get install nfs-common nfs-server

Pridedame tokią eilutę į /etc/exports failą:

exports

192.168.8.0/255.255.255.0 reiškia, kad bus priimti prisijungimai iš vietinio tinklo adresų diapazono 192.168.8.1 – 192.168.8.254. Opcija insecure pridėta, nes kitaip Windows klientas neprisijungia.

Windows klientas

Parsisiunčiame sukompiliuotus NFS Windows kliento failus iš čia.

išarchyvuojame ir sekame šiais žingsniais:

  1. (Jei neįdiegta) įdiegiame vcredist*.exe bibliotekas.
  2. Du kartus spaudžiame ant nfs41_driver.cer failo, pasirenkame Install Certificate ir įkeliame jį į Trusted Root Certification Authorities saugyklą.
  3. Atidarome komandinę eilutę kaip administratorius.
  4. Vykdome install.bat failą.
  5. Kopijuojame konfigūracinius failus:
    1. mkdir C:\etc
    2. copy etc_netconfig C:\etc\netconfig
    3. copy ms-nfs41-idmap.conf C:\etc\
  6. Leidžiame Windows užkrauti bandomaisiais sertifikatais pasirašytus failus:
    bcdedit /set testsigning on
  7. Perkrauname kompiuterį.
  8. Išjungiame DFS klientą:
    1. Paleidžiame regedit ir keliaujame į HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Mup
    2. Pridedame DWORD reikšme pavadinimu DisableDfs ir reikšme 1.
    1. Pridedame DNS priesagą, jei jos nėra:dns_suffix
    2. Perkrauname kompiuterį.
  9. Išbandome NFS klientą vykdydami komandą:
    nfsd_debug.exe --noldap --uid 1000 --gid 1000 -d 3
  10. Jei klientas nenulūžo ir veikia, atsidarome kitą komandinės eilutės langą ir prijungiame NFS share kaip Z diską:
    nfs_mount.exe Z: 192.168.8.103:\media\transcend\NFS

    kur 192.168.8.103 yra Raspberry Pi adresas.

Veikia:

veikia

Jei prijungiant NFS share meta panašią klaidą:

failed_mount

o NFS serveris paleistas, bet jį perkrovus:

sudo /etc/init.d/nfs-kernel-server restart

viskas sėkmingai prijungiama, vadinasi tikėtina, kad kraunantis Raspberry Pi nfs-kernel-server yra paleidžiamas anksčiau negu prijungiamas išorinis diskas. Tam pataisyti, galima uždelsti nfs-kernel-server paleidimą, tarkim 10 sekundžių, redaguojant /etc/init.d/nfs-kernel-server failą – po start sekcijos pridėjus sleep 10 eilutę:

sleep_nfs_kernel

Automatinis paleidimas ir prijungimas

Įsitikinus, kad viskas veikia, paleidžiame cmd.exe kaip administratorius, grįžtame į išarchyvuotą NFS kliento katalogą ir įrašome NFS klientą kaip servisą:

nfsd.exe -install

Tada per Run paleidžiame services.msc, susirandame pnfs client įrašą ir jo paleidimo tipą pakeičiame į automatinį:

servicesmsc

Automatiniam NFS share prijungimui, paleidžiam Task Scheduler, kairėje pusėje pasirenkam Task Scheduler Library ir sukuriame naują užduotį, dešinėje panėleje spausdami Create Task. Užduočiai suteikiame pavadinimą, Triggers kortelėje sukuriam trigerį, kuris suveiktų sistemos paleidimo metu su kokių 30 sekundžių uždelsimu, Actions kortelėje sukuriame Start a program veiksmą, kuris paleistų skriptą su panašiu turiniu:

C:\Users\User\Desktop\ms-nfs41-client-x64\nfs_mount.exe Z: 192.168.8.103:\media\transcend\NFS

Conditions kortelėje nuimame paukštuką nuo start the task only if computer is on AC power.

taskscheduler

Spaudžiam OK.

Kitą kartą paleidus kompiuterį, NFS klientas bus paleistas ir share prijungtas automatiškai.

Šaltiniai

  1. Raspberry Pi: How to Create an NFS Server
  2. NFSv4.1 Client for Windows
  3. NFSv4.1 Client for Windows (Mailing list)
  4. nfs-kernel-server starts too early