Netzwerktreiber auf FreeNAS/Nas4Free installieren (embedded)

FreeNAS und NAS4Free unterstützen nativ die jeweilige Hardware, der eingesetzten FreeBSD-Version, auf die es basiert. Trotzdem kann es Produkte geben, für die FreeBSD keine Treiber anbietet. Im How-To Netzwerktreiber auf FreeNAS/NAS4free installieren habe ich beschrieben, wie man einen Netzwerktreiber auf einer „Full“ Installation von FreeNAS/NAS4Free installiert.

Dieses How-To beschreibt, wie auch unerfahrene Unix-Anwender einen Netzwerkadaptertreiber auf einer „embedded“ Installation installieren.

Voraussetzungen

  • Beliebiger Monitor, der sich an den FreeNAS/NAS4Free-Server anschließen lässt
  • Tastatur
  • USB-Stick, Fat32-formatiert, als temporärer Speicher für die Treiberdatei)
  • FreeNAS/NAS4Free muss „embedded“ installiert sein. Bei einer „Full“ Installation ist die Vorgehensweise im Artikel Netzwerktreiber auf FreeNAS/NAS4free installieren beschrieben.
  • Binäre Treiberdatei (*.ko) für die entsprechende FreeBSD-Version auf die das entsprechende FreeNAS/NAS4Free basiert.
  • Computer/Tablet/etc. mit Webbrowser, der am gleichen Netzwerk angeschlossen ist, wie der Server (für den Zugriff auf die Webadministration)

Treiber installieren

Dieses How-To beschreibt als Beispiel die Installation eines binär vorhandenen Netzwerktreibers für die Netzwerkkarten mit Realtek RTL8111B, RTL8168B, RTL8111, RTL8168, RTL8111C, RTL8111CP, RTL8111D(L), RTL8168C, RTL8111DP, RTL8111E auf FreeNAS/NAS4Free.

  1. Passenden Treiber herunterladen oder selber kompilieren.
    Für die oben genannten Netzwerkadapter haben einige Freiwillige Treiber kompiliert. Siehe Download-Bereich. Bitte beachte die unterschiedliche Schreibweise von if_rl... und if_re... aufgrund der verschiedenen Treiberdateinamen in den Anweisungen Punkt 8, 14 und 16!
  2. Treiber auf den USB-Stick kopieren. Achte darauf, dass der Stick mit dem Dateisystem Fat32 formatiert ist. Das ist in allen mir bekannten Fällen der Auslieferungszustand, so dass du i.d.R. nichts umformatieren musst.
  3. Monitor und Tastatur an den FreeNAS/NAS4Free-Server anschließen und Server starten.
  4. Shell starten durch Wahl der Option 6 (Shell) im Console-Setup:

    Bildschirmfoto: Console Setup von FreeNAS

    Console Setup von FreeNAS/NAS4Free

  5. USB-Stick einstecken.
  6. Der Befehl
    dmesg | tail

    zeigt den Gerätenamen des Sticks an, z.B. da2(siehe Screenshot unten).

    Ausgabe von: dmesg | tail

    Ausgabe von: dmesg | tail

  7. Ein neues Verzeichnis „usb“ unter „/mnt“ anlegen:

    mkdir /mnt/usb

    und den USB-Stick darin mounten mit:

    mount_msdosfs /dev/da2s1 /mnt/usb

    Der Anhang s1 an da2 beschreibt den ersten Slice auf dem Gerät da2 (hier: USB-Stick). Weitere Informationen findet man im FreeBSD-Handbuch, Kapitel 3.

  8. Lade den Treiber zuerst nur temporär in den Speicher mit:
    kldload /mnt/usb/if_rl.ko

    Wenn eine Fehlermeldung „file exists“ erscheint, hast du wahrscheinlich eine neuere Version von FreeNAS/Nas4Free installiert. Dort ist höchst wahrscheinlich ein interferierender Treiber gleichen Namens unter /cf/boot/kernel vorhanden. Leider lässt sich dieser in einer Embedded-Installation nicht überschreiben. Er wird bei jedem Neustart frisch vom FreeNAS/NAS4Free-Image geladen.Mir ist keine Möglichkeit bekannt, diese Problem zu umgehen. Nur eine Full-Installation von FreeNAS/NAS4Free kann hier helfen. Siehe mein How-To Netzwerktreiber auf FreeNAS/NAS4Free installieren (Full-Installation) oder Markus Kommentar (Nr. 15) dazu.

  9. Beende die Shell durch Eingabe von exit auf der Konsole.
  10. Im erscheinende Hauptmenü, wähle die Option 1 (Assign interface and select your interface) und wähle den passenden Adapter (rl0).

    Bildschirmfoto: Console Setup von FreeNAS

    Console Setup von FreeNAS

  11. Wenn du zurück im Hauptmenü bist, wähle Option 2 (Set LAN IP address) und gebe die IP-Adresse deines NAS-Servers ein, z.B. 192.168.111.250. Die Adresse muss natürlich zu deinem Netzwerk passen.
  12. Danach startest du über das Hauptmenü wieder eine Shell mit der Option 6.
  13. Stelle sicher, dass du bereits eine Freigabe angelegt hast. Wenn nicht hole es in der Web-Administration nach. Schaue ggf. in die Dokumentation von FreeNAS/NAS4Free. Nachfolgend gehen wir davon aus, dass du die Freigabe unter /mnt/netzwerk angelegt hast.
  14. Kopiere den Treiber auf eine Freigabe. Ich empfehle auf einer Freigabe ein eigenes Verzeichnis anzulegen, z.B. mit dem Namen „system“ und die Treiberdatei dort hinein zu kopieren. Wenn sich Deine Freigabe im Verzeichnis /mnt/netzwerk befindet:
    mkdir /mnt/netzwerk/system
    cp /mnt/usb/if_rl.ko /mnt/netzwerk/system/
    Das Ablegen des Treiber in einer Freigabe ist insofern immanent wichtig, da es sonst bei Ablage, z.B. im Verzeichnis /boot/kernel/ (wo sich Treiber i.d.R. befinden sollten), beim nächsten Systemstart nicht mehr zur Verfügung steht. Bei einer „embedded“ Installation befindet sich der komplette Verzeichnisbaum, außer den Freigaben, in eine RAM Disk, der bei jedem Neustart frisch von dem „embedded“ Image auf dem USB-Stick,CD, etc. in die RAM Disk kopiert wird. Befindet sich der Treiber nicht im Image, wird er nicht mitkopiert und kann auch nicht gestartet werden.
  15. Öffne jetzt auf einem Arbeitsplatzrechner einen Browser und starte die Webadministration durch Eingabe der vorher eingetragenen IP-Adresse des Servers, z.B. http://192.168.111.250. Gib dein admin-Kennwort ein. Die Standard-Kennwörter für den Benutzer „admin“ sind „freenas“ bzw. „nas4free“.
  16. Damit der Treiber bei jedem Systemstart geladen wird, gehe nach „System|Erweitert|Befehlsskript|Hinzufügen“ und gebe folgenden Befehl ein: kldload /mnt/netzwerk/system/if_rl.ko. GGf. musst du den Treiberdateinamen anpassen, z.B. kldload /mnt/netzwerk/system/if_re.ko. „Typ“ muss „PostInit“ sein. Dann auf „Hinzufügen“ klicken. Schließe die Webadministration.
  17. Jetzt kannst du den Server mit „Reboot system“ (Option 7 im Console Setup) neu starten. Der Treiber sollte jetzt auch nach einem Neustart geladen werden.

    Bildschirmfoto: Console Setup von FreeNAS

    Console Setup von FreeNAS/NAS4Free

Download

Weiter unten kannst du bereits fertig kompilierte (binäre) Treiber für Netzwerkkarten mit RTL8111B, RTL8168B, RTL8111, RTL8168, RTL8111C, RTL8111CP, RTL8111D(L), RTL8168C, RTL8111DP, RTL8111E, für ein paar FreeNAS/NAS4Free-Version herunterladen, die einige Freiwillige dankenswerter Weise zur Verfügung gestellt haben.

Ich kann keine Gewähr für die Funktionalität, Qualität oder Datensicherheit der unten angegebenen Treiber übernehmen, noch habe ich sie alle getestet! Die Benutzung erfolgt unter eigener Verantwortung.

[TABLE=3]

Interessante Link

Bildnachweis

Titleimage:
BSD Daemon by Diavolo Qqta (CC BY-NC-SA 2.0)
Ethernet NIC 100Mbit PCI“ by afrank99. CC BY-SA 2.0 via Wikimedia Commons.


22 Kommentare

  • I’ve found driver for my NIC, but I’ve got to compile them first but I’m running only on windows, is there a way to do so on windows

  • Dear Jo, To be brief, it is not possible to compile a driver for FreeNAS/NAS4Free on Windows natively.

    You need a FreeBSD installation on a (virtual) machine to compile the driver yourself. An you need the appropriate version and architecture which fits to your FreeNAS/NAS4Free version. But be advised that is not that easy unfortunately.

    Doesn’t fit the drivers provided on this page to your FreeNAS/NAS4Free version?

  • Hallo,

    Deine Tutorials sind klasse!!!! Gerade für mich als Nas4Free-Neuling 🙂

    Habe mir jetzt den aktuellen Treiber für meine neue INTEL PRO 1000GT-Netzwerkarte gezogen und möchte diesen Treiber gern in die Embedded-Version einfügen. Leider habe ich NULL Ahnung, wie ich das machen soll, weil der Treiber nur als .tar.gz-File vorliegt.

    Kann Jemand helfen??????

    • Hallo Peter, das ist leider nicht so leicht. Das tar.gz-File ist ein unter UNIX übliches Archivformat, wie ZIP unter Windows. Es enthält in deinem Fall den Quellcode des Treibers. Du müsstest nach dem Entpacken den Quellcode des Treibers unter FreeBSD in der passenden Architektur (32- oder 64-bit) und der zur NAS4Free passenden FreeBSD-Version kompilieren oder kompilieren lassen. Dann, gemäß meiner Anleitung installieren. Ersteres ist leider eine große Hürde, da du eine passende FreeBSD-Installation benötigst.

      Manchmal ist es viel einfacher eine von NAS4Free unterstützte Netzwerkkarte einzubauen.

  • Hallo Hani,

    ohjeeeee … das liest sich zu kompliziert 🙁 Kein Wunder, dass sich Linux niemals auf breiter Front durchsetzen wird. Das ist teilweise einfach zu kryptisch und verworren 🙁

    Danke für Deinen Hinweis!!!

  • Hi,

    leider habe ich auch ein recht neues Mainboard (Asus H87i-Plus), welches anscheinend bisher nicht unterstützt wird von F4N.
    Da ich dort einen Intel Treiber benötigen würde habe ich wohl auch keine Chance den Umweg über eine externe Netzwerkkarte zu vermeiden oder?

    Gruß

  • Hallo,

    ich versuche gerade den Treiber zu installieren. Allerdings kann ich den Treiber nicht temporär laden 🙂

    kldload /mnt/usb/if_rl.ko –> no such file or directory

    Die .ko-Datei ist natürlich auf dem Stick vorhanden! Allerdings fehlt bei mir bei der dmesg-Augabe der GEOM-Hinweis „Label of provider “ ….

    Tipp???

    • Hallo Markus, hat denn das Mounten mittels „mount_msdosfs …“ (Punkt 7) geklappt?

      Gebe mal folgendes in die Shell ein:


      cd /mnt
      ls -la

      Wird da das Verzeichnis „usb“ aufgelistet? Wenn nicht, ist der USB_Stick nicht eingehängt (gemountet). Das lässt sich auch letztendlich aus der Fehlermeldung: „no such file or directory“ schließen.

      Lautet dein Gerätename in der „dmesg|tail“-Ausgabe auch „da2“ oder anders? Dementsprechend musst du den mount-Befehl anpassen. Ist der Gerätename „da4“ muss er:

      mount_msdosfs /dev/da4s1 /mnt/usb

      lauten.

      Wenn bis dahin soweit alles korrekt war kopiere den Treiben am besten auf einen anderen Stick und starte den Server neu. Versuche dann noch mal den Stick zu mounten. Unter „/mnt“ muss sich dann in Verzeichnis „usb“ befinden, wenn du nach meiner Anleitung vorgehst.

  • Hallo Hani,

    erst einmal vielen Dank, dass Du Dir am 1. Weihnachtstag die Zeit nimmst zu antworten 🙂

    Ich habe nun 3 verschiedene FAT32-Sticks ausprobiert, auf dem sich die Dateien if_re.ko und if_rl.ko befinden … bei keinem Stick kommt nach dem DMESG-Befehl der „GEOM Label“-Hinweis „msdosfs USB Disk“

    Die Sticks werden immer als da1 angezeigt.

    „mount_msdosfs /dev/da1 /mnt“ führt dazu, dass die beiden .ko-Dateien unter /mnt liegen … UND meine vorhandenen Einhängepunkt ZFS und Snapshot verschwunden sind :-((((

    Es ist zum Verzweifeln!!!

    • Markus, das sieht bis hierhin erst mal ganz gut aus. Dein Stick ist gemountet, nur an der falschen Stelle. Die Treiber müssen sich in einem Unterordner befinden und nicht direkt unter „/mnt“, sonst überschreibt es die Mountpoints deiner Freigaben, wie es bei dir jetzt geschehen ist. Ich glaube ich habe einen Zwischenschritt nicht beschrieben (Habe das How-To korrigiert).

      Gehe folgendermaßen vor:

      Nach einem frischen Neustart, erzeuge zuerst ein Verzeichnis „usb“ unter „/mnt“ mit

      mkdir /mnt/usb

      Jetzt mountest du den USB-Stick darin mit:

      mount_msdosfs /dev/da1s1 /mnt/usb

      Die Treiber-Dateien (*.ko) müssen sich jetzt im Unterverzeichnis „/mnt/usb“ befinden. Dann sollten auch deine Freigaben noch da sein. Lade den Treiber temporär mit

      kldload /mnt/usb/if_rl.ko

      und folge der Anleitung weiter. Ich hoffe, dass es jetzt funktioniert.

      PS: GEOM-Label ist hier nicht so wichtig. FYI: http://www.freebsd.org/doc/de/books/handbook/geom-glabel.html

  • Hi Hani,

    Du bist klasse 🙂 … aber leider funktioniert auch das nicht 🙁

    Der kldload-Befehl führt zur Ausgabe diverser Fehlermeldung … „modul register: rl/miibus already exist“ … Modul rl/miibus: failed to register 17 … dann folgen noch ein paar „Register 17“-Fehler und am Ende steht …

    can`t load /mnt/usb/if_rl.ko : File exists

    Heisst das etwa, dass der Treiber schon vorhanden ist?! Ich werde das ganze Vorhaben nun auch beenden 🙁

    Danke noch einmal!!!!!!

  • Sooo … nun habe ich es auf einem anderen Weg geschafft den Realtek-Treiber zu installieren:

    Zuerst einmal das Verzeichnis /cf unmounten … umount /cf

    dann sofort wieder mit Read-Write-Rechten mounten … mount -o rw /cf

    Dann kann man die .ko-Datei vom USB-Stick oder mit WinSCP vom PC aus in das Verzeichnis /cf/boot/kernel kopieren!

    .. jetzt nur noch den Eintrag if_rl_load=“YES“ in die loader.conf eintragen und einen Neustart machen.

    Et voila …. :-))))))

  • Hi
    ich habe nun das gleiche Problem wie Markus, „file exists“ (N4F version 9.1). Wollte einen Treiber für meine intel i217 laden, aber bleibe immer an dem Punkt hängen. Irgendwelche tips? Kann über WINscp leider nicht auf die box zugreifen da support für diese Netzwerkkarte erst in n4f version 9.2 kommen wird.

    • Dom: Ich bin kein FreeBSD Experte, aber „file exists“ zeigt IMHO in diesem Kontext an, dass ein interferierender Treiber diesen Namens schon geladen wurde. Ich bin mir aber nicht 100%ig sicher. Schau mal unter „/cf/boot/kernel“:

      ls /cf/boot/kernel

      Findet sich da eine Datei gleichen Namens?

      Du musst es genauso machen, sie Markus es dankenswerterweise hier in Kommentar 15 gepostet hat (Du brauchst kein WinScp“):

      Wichtig: Du musst N4F als FULL-Installation aufgesetzt haben!

      Eine etwas ausführlichere Anleitung (in englisch) habe ich unter http://www.kristijan.org/2010/11/freenas-realtek-network-card/ gefunden. Ich habe auch mein How-to’s diesbezüglich aktualisiert.

      Bein einer embedded-Installation wird es etwas komplexer. Statt den Treiber nach „cf/boot/kernel“ zu kopieren und in die „loader.conf“ einzutragen, gehe nach meiner Anleitung von Punkt 10 bis Ende vor.

      Nach einiger Überlegung sehe ich bei einer Embedded-Installation IMHO keine Möglichkeit dieses Problem wirklich zu umgehen, da der interferierende Treiber bei jedem Neustart erneut geladen würde. Einziger Workaround ist IMHO eine Full-Installation.

  • @ Markus: Vielen Dank für deine konstruktive Rückmeldung. Ich weiß das sehr zu schätzen!

    Da ich keine Nas4Free/FreeNAS-Installation mehr habe, kann ich vieles nicht mehr nachvollziehen. In meiner alten FreeNAS 6.4 lagen die Treiber noch unter „/boot/kernel“.

  • How-To aktualisiert: „file exist“ Fehlermeldung bei aktuellen Versionen. Danke an Markus für den Hinweis.

    How-to modified: Address „file exist“ error. Thanks to Markus for pointing me to this issue.

  • Pingback: Netzwerktreiber auf FreeNAS installieren | Hanis Sammelsurium

  • Pingback: Coach Training Procedure

  • Pingback: save my Marriage Advice

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert