News   Magazin   Börse   Links   ArcArchie   Homepages
 Magazin  NFS zwischen Windows und RISC OS Home 
Hardware   Software   Praxis   Sonstiges  
NFS zwischen Windows und RISC OS  Carlos Michael Santillán
Wenn man einen Windows und einen RISC OS Rechner sein eigen nennt und diese beiden auch im gleichen Netzwerk stehen, kommt früher oder später der Wunsch auf, zwischen den beiden Rechnern Dateien übers Netzwerk auszutauschen. Angeregt durch einen Artikel bei Drobe Launchpad möchte ich hier eine NFS Lösung vorstellen, die recht einfach zu installieren ist und auch nichts kostet. NFS oder Network File System ist ein ursprünglich für Unix gedachtes Protokoll, das über ein Netzwerk Zugriff auf Dateien ermöglicht. Unixe wie z. B. Linux oder *BSD haben NFS in der Regel von Hause aus dabei. Aber darauf soll hier nicht eingegangen werden. In diesen Artikel soll der Windowsrechner der NFS Server und der RISC OS Rechner als Client fungieren. Es gibt drei NFS Clients für RISC OS. Der von OmniClient soll langsam sein, der zweite ist das kommerzielle ImageFS. Hier gehe ich aber nur auf das freie Programm Sunfish ein. Für Windows gibt es einige NFS Server, aber mir ist nur der TrueGrid NFS Server als kostenloser bekannt. Zuerst sollte der RISC OS und der Windowsrechner im selben Netzwerk angeschlossen und entsprechend konfiguriert sein. Sunfish und der TrueGrid NFS Server muß natürlich auf der jeweiligen Maschine heruntergeladen sein.

Um den NFS Server auf dem PC zu installieren, sollte in der Hosts-Datei des PCs der Windowsrechner selbst mit seinen Namen eintragen sein. Vermutlich kann man darauf verzichten, aber so steht es in der Anleitung von dem TrueGrid NFS Server. Die Host-Datei liegt im Windowsverzeichnis und hat je nach Windowsversion unterschiedliche Positionen. Am einfachsten benutzt man die Suchfunktion von Windows und läßt nach der Datei hosts suchen. Bei XP Rechnern liegt die Datei im Verzeichnis C:\WINDOWS\system32\drivers\etc. Wenn man sie gefunden und mit dem Editor geöffnet hat, kann man unter den Kommentaren den Eintrag 127.0.0.1  localhost finden. Direkt hinter localhost sollte man ein Leerzeichen und dann Namen des Rechners hinzufügen. Also z. B. 127.0.0.1  localhost winrechner. Wenn man schon dabei ist, kann man in der nächsten Zeile seinen RISC OS Rechner eintragen. Dann muß man aber natürlich die IP Nummer des Risc PC, Iyonix pc oder Omega verwenden. Also z. B. 192.168.2.2  rorechner. Statt winrechner bzw. rorechner kann man man natürlich einen anderen Namen verwenden.

Ausgabe von rpcinfo -p Nun entpackt man das heruntergeladene TrueGrid-NFS Server-Archiv in das neue Verzeichnis C:\Programme\NFS. Dann muß man das Verzeichnis etc in dem Windowsverzeichnis (%WinDir%, bei XP C:\WINDOWS) anlegen und dort die Dateien rpc und exports aus dem Archiv bzw. C:\Programme\NFS hineinkopieren. Das Windowsverzeichnis hat je nach Version unterschiedliche Namen, liegt aber immer in der Wurzel der C-Platte. Dann geht man in die Kommandozeile (Start/Ausführen und dann je nach Windowsversion cmd oder command eingeben) und wechselt mit cd c:\Programme\NFS das Verzeichnis. Unter Windows NT (NT4, 2000, XP, 2003) gibt man portmap add und dann nfs add ein. Den NFS Server kann man jetzt mit nfs start starten. Bei Windows 4 (95, 98, Me) soll man portmap und dann nfs eintippen. Um zu prüfen ob der Server läuft, kann man nun rpcinfo -p eingeben und dann sollte etwas wie im Bild ausgegeben werden.

Der NFS Server ist jetzt recht offen konfiguriert, da jeder mit NFS auf die Platten C und D vollen Zugriff hat. Das wird später geändert, zunächst mehr zu Sunfish. Mit nfs stop kann man den NFS Server anhalten.

Sunfish wird, wie bei RISC OS üblich, an beliebiger Stelle auf der Festplatte abgelegt. Dann startet man Sunfish und klickt auf das Sunfish-Symbol. Es wird sich dann das leere Filerfenster Sunfish:mounts öffnen. Mit der Auswahl von New mount... im Hauptmenü öffnet man die Konfiguration. Unter Server trägt man dann den NFS Server, also den Windowsrechner, ein. Wenn man in der Host-Datei von RISC OS (!Boot.Resources.!Internet.files.Hosts oder über die Netzwerkkonfiguration) den PC eingetragen hat (z. B. 192.168.2.3  winrechner) kann man unter Server winrechner eintragen. Wenn nicht, muß man die IP Nummer des Windowsrechners (z. B. 192.168.2.3) als Server eintragen. Als Export wird für den ersten Test /c eingetragen. Bei Mount leafname trägt man nun win_c ein.

Nun sollte man vom RISC OS Rechner aus auf die PC-Festplatte zugreifen können, wenn der NFS Server läuft (nfs start). Mit einen Klick auf das win_c Symbol im Sunfish-Filer sollte die C-Partition des PC in einen Filerfenster erscheinen. Wenn auf dem PC eine Firewall läuft, muß man diese vermutlich abschalten und evtl. sollte man wegen der Sicherheit die Verbindung zum Internet unterbinden. Spätestens jetzt sollte der RISC OS Rechner Zugriff auf den PC haben. Ich gehe später noch genauer auf die Firewall ein.

Windows -access=rorechner,uid=500,gid=100,umask=027,path=c:\Share Wenn alles funktioniert, kann man sich nun an die bessere und etwas sicheren Konfiguration vom NFS Server machen. Ich gehe mal davon aus, daß nur das Verzeichnis C:\Share auf dem PC dem RISC OS Rechner zur Verfügung gestellt werden soll. Die Konfigurationsdatei exports im Verzeichnis etc muß dann in den Editor geladen werden. Die letzten beiden Zeilen (/c -path=c:\ und /d -path=d:\) werden nun mit einen # in der ersten Spalte auskommentiert, damit zukünftig die Laufwerke C und D nicht mehr komplett für jeden bereitstehen. Dann schreibt man direkt eine Zeile darunter: Windows -access=rorechner,uid=500,gid=100,umask=027,path=c:\Share

Ich habe hier den Share Windows genannt und erlaube den Zugriff darauf nur dem Rechner rorechner, der ja so in der Hostdatei steht. Alternativ kann man die IP Nummer eingeben oder mehrere Rechner mit Doppelpunkt getrennt. Den Rest sollte man so übernehmen. Wenn das Kommandozeilenfenster noch geöffnet ist und man im Verzeichnis c:\Programme\NFS ist, muß man nun den NFS Server mit nfs stop beenden und mit nfs start direkt wieder starten. So werden dann die Änderungen in exports wirksam. Ein rpcinfo -p sollte zeigen ob der Server läuft. Auf alle Fälle darf man in exports keine Leerzeilen anlegen. Das führte bei mir zu Problemen und der NFS Server lief nicht. Nicht unwichtig ist, daß der TrueGrid NFS Server leider keinen Schutz durch Benutzernamen und Passwort kennt. Auch ist der Zugriff auf dem Windowsrechner nicht durch die Rechte eines Windowsbenutzers begrenzt.

Server: winrechner, Export: Windows, uid: 500, gid: 100, umask: 027, Leafname: Windows Auf den RISC OS Rechner erstellt man nun einen neuen Mount. Die richtigen Einträge kann man in der Abbildung ersehen. Nun sollte man auf das Verzeichnis Share des PCs zugreifen können.

Wenn auch dies einwandfrei klapt, muß man sich an die evtl. deaktivierten Firewall auf dem PC machen. Ich selbst nutze die Firewall von XP mit Service Pack 2. Über Start/Systemsteuerung/Windows-Firewall wird der Firewallmanager geöffnet. Da sich beim mountd der Port bei jedem Start ändert, bietet sich die klassische Weise einzelne Ports zu öffenen nicht an. Aber die XP SP2 Firewall erlaubt auch die Freigabe anhand der Programme. Dazu klickt man statt auf Port... auf den Knopf Programm... und wählt nfs.exe aus. Dazu muß man sich ins Verzeichnis C:\Programme\NFS durchklicken. Dann sollte man auf alle Fälle den Bereich einschränken um nicht jeden den Zugriff via NFS zu erlauben. Unter Bereich ändern... sollte man zumindestens das eigene Netzwerk auswählen oder wie ich in der benutzerfreien Liste den RISC OS Rechner (z. B. 192.168.2.2/255.255.255.255) eintragen. Dies ist natürlich nur ein minimaler Schutz. Wie schon erwähnt, wäre ein zusätzlicher Paßwortschutz wüschenswert. Genauso verfährt man dann mit portmap.exe. Wie man dies bei anderen Firewalls macht, muß in der Dokumentation nachgelesen werden. Für NFS wird der Port 2049 unter UDP und für den Portmapper der Port 111 unter UDP benutzt. Der Mountd benutzt leider bei jeden Start einen anderen Port unter UDP. Nach meinen Beobachtungen liegt der Port zwischen 600 und 1023.

Sowohl der NFS Server als auch Sunfish können mit mehrere Shares umgehen. Dazu muß auf dem Windowsrechner in der Datei exports einfach die letzte Zeile dupliziert und entsprechend angepaßt werden. Bei Sunfish legt man dann einfach einen zweiten Mount an. Auch ein zweiter Rechner mit einen NFS Server sollte man mit Sunfish ansprechen können.

Durch portmap add und nfs add wurden der NFS Server als Dienst bei meinen Rechner angemeldet. Damit wird der NFS Server bei jeden Start der Rechners gestartet. Da ich nur selten den PC nutze und dann meist keine Dateien austausche, möchte ich das der NFS Server nur bei Bedarf läuft. Also habe ich im Dienstemanager von XP den Autostarttyp beim TrueGrid NFS Server und TrueGrid Portmapper von Automatisch auf Manuell umgestellt. Da mir das Starten und Beenden durch den Dienstemanager zu umständlich ist habe ich mir folgenden kleinen Batchdateien geschrieben, die dies erledigen.

nfs_start.bat:
c:\Programme\NFS\nfs start
nfs_stop.bat:
c:\Programme\NFS\nfs stop
c:\Programme\NFS\portmap stop


Mit den Batchdateien kann dann der Administrator mit einen Doppelklick den NFS Server starten bzw. anhalten.

Sunfish zeigt die Dateien mit den richtigen Dateityp an, sofern die Dateiendung dem MimeMap-Modul bekannt ist. Ist die Extension unbekannt, dann ist der Dateityp Text. Dies kann man nach Bedarf z. B. auf Data umstellen. Einen fehlenden Typ kann in !Boot.Resources.!Internet.files.MimeMap hinzufügt werden. Dann muß das MimeMap Modul neu gestartet werden. Hat eine Datei auf den RISC OS Rechner keine Extension, wird der Dateityp als Hexadezimalezahl an den Dateinamen auf dem PC angehängt. Dieses Verhalten kann man für alle Dateien ein- oder abschalten. Ich bleibe bei der Standardeinstellung und habe mir eh schon längst angewöhnt Bildern, MP3s usw. eine Extension zu geben, um diese unproblematisch auf anderen Plattformen nutzen zu können. Unter Umständen kann man die Transfergeschwindigkeit mit zwei Optionen (MaxDataBuffer: 8192 und Pipelining: 1) beschleunigen. Das muß jeder selbst ausprobieren. Spätestens jetzt sollte man einen Blick in die kurze Sunfish Dokumentation werfen.

Die Einrichtung der NFS Verbindung zwischen Windows und RISC OS ist recht schnell und einfach erledigt. Nun kann ich bei Bedarf recht komfortabel und schnell Dateien zwischen meinen Risc PC und den PC austauschen. Ich hatte bis auf eine Ausnahme bislang noch keine Probleme mit dieser Konstellation. Die Verbindung ist auch recht schnell und der PC Filer öffnet sich schneller auf meinen Risc PC mit 10 MBit Netzwerkkarte als mit dem Explorer auf dem PC selbst. Anscheinend gibt es Probleme sehr große Dateien (ab ca. 100 MByte) ohne Fehlermeldung und unbeschädigt vom Risc PC zum Windowsrechner zu transportieren. Aller Wahrscheinlichkeit nach liegt das Problem beim NFS Server. Wenn man nach der Fehlermeldung den Transfer abbricht und dann noch einmal anstößt, wird die große Datei ohne Fehlermeldung und unverändert transportiert. Trotz diesem Problem ist Sunfish und der TrueGrid NFS Server eine gute und kostengünstige Art beide Welten zu verbinden. Es spricht natürlich auch nichts dagegen einen anderen NFS Server unter Windows oder gar Linux, *BSD usw. als Fileserver einzusetzen. Dieser sollte dann aber einen Schutz mit Authentifizierung (PCNFSD) und Bindung an einen unpreviligierten Benutzer bieten. Dann sollte man auch, wenn möglich, die Verbindung mit TCP statt mit UDP zu machen.

Downloadquellen:
Sunfish
TrueGrid NFS Server
Hardware   Software   Praxis   Sonstiges  
ArcSite   News   Magazin   Börse   Links   ArcArchie   Homepages