Das neue EEE-Forum
https://www.eee-forum.de/forum/

Problem-Behebung Datendurchsatz CIFS Netz-LW gering
https://www.eee-forum.de/forum/viewtopic.php?f=50&t=23
Seite 1 von 1

Autor:  tosty [ Fr 22. Okt 2010, 11:04 ]
Betreff des Beitrags:  Problem-Behebung Datendurchsatz CIFS Netz-LW gering

In einem anderen Forum sprach mich der Benutzer "Linuxnutzer" auf folgendes Problem an, das bei mir nicht auftrat (weil ich irgendwann mal eine fixe Lösung für mich per angepaßtem Kernelmodul erstellt hatte) und dessen Lösung wir hier denn mal vorstellen wollten:

Problem:

1. Bei der Verbindung mit Windows/Samba Netzlaufwerken mittels CIFS (z.B. via des XandrosFileManagers) wird nur eine geringe Übertragungsgeschwindigkeit erreicht (sprich "langsam", Kopieren von Dateien dauert relativ lange).

2. Im Kernel Ring Buffer (Anzeige via "dmesg") erscheint (sehr oft) die folgende Meldung:
"Unable to load NLS charset utf-8"

Hintergrund:

CIFS (und andere Dateisystem) greifen auf den "Native Language Support" des Kernels zurück. Als Standard NLS Option verwendet der Asus Xandros Kernel den (falschen) Wert "utf-8" (richtig wäre "utf8"), was dazu führt, daß wiederholt versucht wird, Unterstützung für "utf-8" (als Kernelmodul) zu laden.

Gelöst werden kann dies - ohne Veränderungen am Kernel selbst vornehmen zu müssen - bspw. durch Beretstellung eines Kernelmodules für "utf-8".

Problemlösung (kurz, vorkompiliertes Modul):

1. Konsole öffnen mit Strg + T

2. Holen des passenden Moduls mit

Code:
wget http://www.to-st.de/download/linux/eeepc/nls_utf-8.ko


3. Verschieben an die passende Stelle mit root-Rechten

Code:
sudo mv nls_utf-8.ko /lib/modules/2.6.21.4-eeepc/kernel/fs/nls/


4. Liste der Kernelmodule/-abhängigkeiten neu generieren

Code:
sudo depmod -ae


Bei danach neu erstellten Netzlaufwerksverbindungen sollte keine Fehlermeldung (siehe oben) ausgegeben werden und die Verbindung sollte einen (deutlich) schnelleren Datentransfer/-zugriff ermöglichen.

Problemlösung (lang, Selbstvornahme Patch + Modulkompilierung):

Hierzu wird die Kernelsource des Kernels 2.6.21.4-eeepc benötigt (vorkonfiguriert) sowie die entsprechenden Tools zum Erzeugen eines Kernels bzw. von dessen Modulen.

1. Kernelsource nehmen (z.B. unter /usr/src/linux-source-2.6.21.4-eeepc/),
nach fs/nls gehen und dann den Code des Module nls_utf8 (nls_utf8.c) kopieren als nls_utf-8.c

2. Folgende Änderungen (diff nls_utf8.c nls_utf-8.c) vornehmen:

Code:
37c37
<       .charset        = "utf8",
---

>       .charset        = "utf-8",

45c45
< static int __init init_nls_utf8(void)
---

> static int __init init_nls_utf_8(void)

54c54
< static void __exit exit_nls_utf8(void)
---

> static void __exit exit_nls_utf_8(void)

59,60c59,60
< module_init(init_nls_utf8)
< module_exit(exit_nls_utf8)
---

> module_init(init_nls_utf_8)
> module_exit(exit_nls_utf_8)


3. Ergänzung des Makefiles (am Ende hinzufügen)

Code:
obj-$(CONFIG_NLS_UTF_8)               += nls_utf-8.o


4. Einzelnes Modul kompilieren mit:

Code:
make CONFIG_NTFS_UTF_8=m M=fs/nls


Danach das resultierende Modul wieder an die entsprechende Stelle kopieren usw. (siehe weiter oben)

Seite 1 von 1 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/