Ich kann den Android 4.0 NFS-Client nicht dazu bringen, eine Verbindung zu meinem NFSv4-Ubuntu-Server herzustellen: „Kein solches Gerät“

Ich verwende den GLaDOS-Kernel , der die NFS-Module enthält (und ich verwende den Codenamen Android ICS 4.0.3 ROM ) auf einem GSM Galaxy Nexus. Ich versuche, eine Verbindung zu meinem NFSv4-Server (Ubuntu 11.10) herzustellen. Meine anderen Clients (z. B. Ubuntu 11.04-Laptop) können sich über dasselbe LAN-Netzwerk verbinden, aber mein Galaxy Nexus stellt keine Verbindung her.

Im Android-Terminal ( BTEP ) im su-Modus gebe ich diese Befehle ein:

insmod sunrpc.ko
insmod lockd.ko
insmod nfs.ko

lsmod zeigt die geladenen Module:

nfs 104232 0 - Live 0xbf036000
lockd 42336 1 nfs, Live 0xbf028000
sunrpc 150792 3 nfs,lockd, Live 0xbf000000

Mein Mount-Befehl (im Terminal im su-Modus) lautet:

mount -t nfs4 nfserver:/shared1 /sdcard/nfs/shared1

Der Fehler ist "kein solches Gerät". (Siehe Bearbeitung unten - ich habe jetzt einen neuen Fehler.) Es wird sofort zurückgegeben, daher bin ich mir ziemlich sicher, dass dies ausschließlich ein clientseitiger Fehler ist. Es versucht wahrscheinlich nicht einmal, den Server zu kontaktieren.

Normalerweise bedeutet der Fehler "no such device", dass das nfs-Kernelmodul nicht geladen ist. In meinem Fall ist es jedoch tatsächlich geladen, wie oben gezeigt. Kann jemand helfen?

BEARBEITEN : Also glaube ich jetzt, dass der Mount-Befehl von BusyBox NFSv4 nicht unterstützt. Leider unterstützt mein Server nur NFSv4. Also habe ich mir ein NAS-Gerät ausgeliehen, das NFS v3 unterstützt, und das eingerichtet.

Jetzt ist der Fehler "ungültiges Argument". Tatsächlich gibt der Mount-Befehl von BusyBox bei allen Mounts, die entweder „-t nfs“ oder „-t cifs“ verwenden, denselben Fehler „ungültiges Argument“ aus. Das führt mich zu dem Schluss (basierend auf dem Zitat unten), dass es einen Versionskonflikt zwischen BusyBox und meinem Linux-Kernel gibt.

  • busybox: 1.19.3-Stericson
  • Linux: 3.0.8-GLaDOS-V1-15

Meine Schlussfolgerung wird durch diesen Link gestützt, wo er sagt:

This is how I interpret it.
kernel is newer - recompile mount command (i.e. busybox etc)
Make sure that it uses the headers from the kernel it will run with.

Schließlich ist das Ausprobieren eines normalen NFS v3-Servers (das NAS-Gerät) mit Mount Manager weder mit NFS noch mit CIFS erfolgreich. AndSMB stellt jedoch über CIFS eine Verbindung zum NAS her.

Versuchen Sie statt nfs4 einfach "nfs" zu verwenden. - Ich wollte dir das per E-Mail schicken, dann habe ich diesen Beitrag hier gesehen.
@Ryan: Ich habe meinem Beitrag einen neuen Abschnitt mit weiteren Informationen hinzugefügt. Ich habe weiterhin Probleme mit Mount Manager. Sollen wir diese per E-Mail besprechen?
Soll ich einfach eine neue Frage stellen? Mir ist jetzt klar, dass NFSv4-Unterstützung in Android wahrscheinlich nicht vorhanden ist. Aber jetzt ist mein Problem, dass der Versuch, eine NFS v3-Freigabe über BusyBox mount zu mounten, den Fehler "ungültiges Argument" ergibt und der Versuch, sie über Mount Manager zu mounten, ebenfalls fehlschlägt. Jetzt möchte ich mich darauf konzentrieren, NFS v3 zum Laufen zu bringen. (Ich habe NFSv4 aufgegeben.)
@RyanConrad: Mount Manager funktioniert immer noch nicht. Ist es mit ICS nicht kompatibel? Nichts scheint zu funktionieren, nicht einmal CIFS. AndSMB funktioniert.
Ich suche immer noch nach einer funktionierenden Lösung, btw.

Antworten (3)

Ich kann Ihnen sagen, dass dies nicht der mountBefehl ist, sondern das nfs.ko-Modul, das NFS4 wahrscheinlich nicht unterstützt.

Wenn Sie mount -t nfs ...den Mount-Befehl aufrufen, wird nach dem Dateisystemtyp nfs gesucht. Wenn es nicht gefunden wird, erhalten Sie den no such deviceFehler. Wenn es es findet, übergibt es im Grunde das "Mount" an das Modul.

Für das Mount-Manager-Problem: Wenn Sie kein cifs-Modul haben, funktioniert cifs nicht mit dem Mount-Manager. AndSMB verwendet seine eigene cifs/samaba-Implementierung, und das ist in Ordnung, aber um etwas zu erreichen, das es jeder Anwendung ermöglicht, auf die gemountete Freigabe zuzugreifen, muss es das cifs.ko-Modul sein. Ich muss mich noch etwas genauer mit dem nfs-Problem befassen, das Sie immer noch haben.

Ich habe cifs.ko, und es wurde geladen, als ich die CIFS-Tests durchführte.
Ich stimme zu, dass NSFv4-Unterstützung in Android wahrscheinlich nicht vorhanden ist. Allerdings war ich nicht einmal in der Lage, NFS v3 zu mounten, wie ich im Abschnitt BEARBEITEN erklärt habe, den ich meinem Beitrag hinzugefügt habe. Ich schätze jede Hilfe, die Sie mit Mount Manager anbieten können. Ich würde es gerne verwenden, weil es genau die Funktionen hat, die ich brauche. Danke
Mount Manager ist nicht mit Ice Cream Sandwich kompatibel.
Es wird von Ihrem Gerät abhängen. Sie benötigen das richtige CIFS-Modul, damit der Mount-Manager funktioniert. Ich habe jetzt 2 Geräte, auf denen ICS läuft (auf einem läuft CM9, auf dem anderen ein gTablet). Das CM9-Gerät hat eine cifs.ko, das gTablet hat eine in den Kernel integrierte cifs-Unterstützung. Mount Manager arbeitet an beiden. Es könnte einen Fehler mit NFS in ICS geben, da ich noch keine Gelegenheit hatte, das zu testen, aber CIFS funktioniert, wenn Ihr Gerät dies unterstützt.
Ich werde CM9 auf meinem Galaxy Nexus installieren. Ich verwende jetzt Codename Android ROM.
Ich habe CM 9-20120418 auf meinem GNex installiert. Ich möchte Mount Manager damit ausprobieren. Hast du eine Anleitung? Übrigens, Cifs Manager funktioniert wieder, aber wie bei früheren ROMs funktioniert Mount Manager nicht. Freue mich auf Hilfe. Danke.
Stellen Sie sicher, dass Sie das cifs-Modul aus /system/lib/modules/ laden. Wenn Sie immer noch Probleme haben, sollte ich (hoffentlich) mein GNex in der nächsten Woche oder so bekommen, aber es gibt noch kein offizielles CM9 für die Sprint-Version.
an dieser Stelle gibt es kein cifs-Modul. Tatsächlich existiert das Verzeichnis /system/lib/modules/ nicht. Anscheinend handhabt CM9 das anders. Ich kann keine Dokumentation finden. Aber Cifs Manager funktioniert. Andere haben gesagt, dass cifs in CM9 "eingebaut" ist. Ich bin mir nicht sicher, was sie genau bedeuten, aber ich sehe nirgendwo .ko-Module.
Es kann vom CM9-Build abhängen, weil der vibrierendemtd /system/lib/modules/ hat und ich dort eine cifs.ko habe.
Ich suche immer noch nach einer Lösung dafür, btw.

vielleicht nicht das, was Sie wollen, aber ich tue dies

busybox mount -o rw,intr,soft,nolock,nfsvers=2 192.168.0.7:/mnt/HD/HD_a2 /mnt/sdcard/nfs

Dieser Ansatz wäre in Ordnung, funktioniert aber nicht mit meinem ROM. Welches ROM und welches Telefon verwenden Sie und haben Sie Kernelmodule hinzugefügt? Wenn Sie eine vollständig funktionierende Antwort geben, akzeptiere ich diese Art von Lösung. Es macht mir nichts aus, busybox mount zu verwenden. Danke.

Sie müssen den Mount-Befehl mit schreiben-t nfs ... nfsvers=4