• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] WLAN-Konfiguration über boot.local

erlkoenig

Newbie
Hallo,

dank des Tutorials auf linux-club.de habe ich nun mein T-SInus 154 data auf Suse Linux 10 zum Laufen gebracht. Die Konfiguration über Yast läuft nicht so, wie sie soll, über die Konsole kann ich WLAN einwandfrei konfigurieren.

Nun ist es mir etwas umständlich, folgenden Code bei jedem Systemstart in der Konsule auszuführen;

Code:
linux:/home/benutzer # modprobe ndiswrapper
linux:/home/benutzer # iwconfig wlan0 essid 'Netzwerkname'
linux:/home/benutzer # iwconfig wlan0 key 1234-5678-9012
linux:/home/benutzer # dhcpcd wlan0

Ich habe gelesen, dass man u. a. Konsolenanweisungen bei jedem Start automatisch ausführen kann, indem man ihn in die boot.local schreibt.
Wir sähe das denn für den oben genannten Code aus? Ich habe es einfach mal folgendermaßen geraten:

Code:
modprobe ndiswrapper
iwconfig wlan0 essid 'Netzwerkname'
iwconfig wlan0 key 1234-5678-9012
dhcpcd wlan0

"modprobe ndiswrapper" scheint zu funktionieren, denn die Lampe meines WLAN-Empfängers leuchtet. Der Netzwerk-Key wird auch eingetragen, aber sonst funktioniert nichts. Übrigens verursacht die Änderung der boot.local-Datei beim Systemstart eine zusätzliche Wartezeit von ca. 20 Sekuden.

Ich danke euch im Voraus für die Antworten! Ich bin für jede Antwort dankbar.

Mit freundlichen Grüßen
erlkoenig
 

Grothesk

Ultimate Guru
Die zusätzliche Wartezeit dürfte vom DHCP verursacht werden. Offensichtlich stimmt da in dem Bereich was nicht. Nimm mal versuchsweise den Eintrag wieder raus.
 
OP
E

erlkoenig

Newbie
Hallo,

vielen Dank für die Antwort!
Ich habe nun den DHCP-Eintrag entfernt und die Ladezeit ist nun auch verschwunden.

Woran könnte es nun aber liegen, dass die ESSID nicht korrekt eingetragen wird?

Ein weiteres Problem ist, dass sich die ESSID nicht mehr ändern lässt, wenn ich die Daten über boot.local eingetragen und gestartet habe. Wie könnte man das Problem beheben?

Dank im Voraus
erlkoenig
 

oc2pus

Ultimate Guru
indem du ein korrektes runlevel-script erstellst welches in der richtigen Reihenfolge desSystemstarts eingebunden ist ...

siehe dazu im Faq-Forum:
[Allgemein] runlevel scripte - Scripts selber erstellen
http://www.linux-club.de/viewtopic.php?t=16069

und zusätzlich hier als Beispiel:
http://nextgen.no-ip.org/~andrew/linux/ndiswrapper/ndiswrapperinfo10-32bit.php#Automation

dieses Startscript ist eigentlich das was du brauchst ;)
 
OP
E

erlkoenig

Newbie
Hallo,

vielen Dank für den perfekten Link!
Ich habe das Script nun so installiert, wie es auf der Seite beschrieben war.

Script:
Code:
  #!/bin/sh
  #
  # Script to start/stop wireless
  #
  # Taken and modified from
  # http://ndiswrapper.sourceforge.net/phpwiki/index.php/StartupScripts
  #


  ### BEGIN INIT INFO
  # Provides:       ndiswrapper
  # Required-Start: $local_fs
  # Should-Start:
  # Required-Stop:
  # Should-Stop:
  # Default-Start:  2 3 5
  # Default-Stop:
  # Description:    Configure WLAN cards with Windows-based NDIS drivers
  ### END INIT INFO




  case $1 in
        'start') echo "Starting ndiswrapper"
                  modprobe ndiswrapper
                  ifup wlan0
                  iwconfig wlan0 essid 'Oehler DSL Privat'
  #
  #Uncomment and modify the following line if you use WEP
                   iwconfig wlan0 key restricted
                   iwconfig wlan0 key 41353874703375763350463553
  #
  #Uncomment and modify the following line if you use static IPs
  #                 ifconfig wlan0 My_ip
  #
  #                 route add default gw My_gateway
                  dhcpcd wlan0
                  iwconfig
          ;;
  
          'stop') echo "Shutting down ndiswrapper"
                  ifdown wlan0
                  modprobe -r ndiswrapper
          ;;
    esac

Dann Permissons gesetzt und folgenden Befehl ausgeführt:

Code:
insserv -v -d /etc/init.d/ndiswrapper

Es kam folgende Ausgabe:

Code:
linux:~ # chmod 755 /etc/init.d/ndiswrapper
linux:~ # insserv -v -d /etc/init.d/ndiswrapper
enable service ../ndiswrapper -> /etc/init.d/rc3.d/S01ndiswrapper
enable service ../ndiswrapper -> /etc/init.d/rc3.d/K21ndiswrapper
enable service ../ndiswrapper -> /etc/init.d/rc5.d/S01ndiswrapper
enable service ../ndiswrapper -> /etc/init.d/rc5.d/K21ndiswrapper
linux:~ #

Eigentlich sollte folgende Ausgabe kommen:

Code:
insserv: enable service ../ndiswrapper -> /etc/init.d//rc2.d/S01ndiswrapper
insserv: enable service ../ndiswrapper -> /etc/init.d//rc2.d/K22ndiswrapper
insserv: enable service ../ndiswrapper -> /etc/init.d//rc3.d/S01ndiswrapper
insserv: enable service ../ndiswrapper -> /etc/init.d//rc3.d/K22ndiswrapper
insserv: enable service ../ndiswrapper -> /etc/init.d//rc5.d/S01ndiswrapper
insserv: enable service ../ndiswrapper -> /etc/init.d//rc5.d/K22ndiswrapper
insserv: creating .depend.boot
insserv: creating .depend.start
insserv: creating .depend.stop

Der Systemstart verläuft nun genau so, wie zu dem Zeitpunkt, als ich die im vergangenen Post beschriebenen Daten in die boot.local geschrieben habe.

Das Problem ist also weiterhin, dass die ESSID nicht korrekt eingetragen wird und sich bei aktiviertem Script auch nicht mehr nach dem Systemstart ändern lässt.

Was könnte es noch für Möglichkeiten geben, warum die ESSID nicht richtig eingetragen wird bzw. sich nicht ändern lässt?

Dank im Voraus
erlkoenig
 

oc2pus

Ultimate Guru
das Beispiel ist nicht ganz korrekt, deshalb hatte ich auch mein Howto noch erwähnt!

in "Required-Start: $local_fs" sollte doch bestimmt noch der dhcpd rein, d.h. dieses script braucht als Vorbedingung zusätzlich den DHCP.

danach wieder insserv ausführen, damit werden dann die Links neu gesetzt. Die Beispielausgabe weicht deshalb auch von deiner Ausgabe ab. Die Nummern in den Links dienen nur dazu eine Ordnung festzulegen.
 
OP
E

erlkoenig

Newbie
Wie setzt man denn DHCP als Vorbedingung ins Required-Start?

Code:
  ### BEGIN INIT INFO
  # Provides:       ndiswrapper
  # Required-Start: $local_fs
  # Should-Start:
  # Required-Stop:
  # Should-Stop:
  # Default-Start:  2 3 5
  # Default-Stop:
  # Description:    Configure WLAN cards with Windows-based NDIS drivers
  ### END INIT INFO

Dank im Voraus
erlkoenig
 

oc2pus

Ultimate Guru
hm, eigentlich solltest du das meinem HowTo entnehmen können :mrgreen:


Dokumentation: man init

also, du musst dort $<name1> ... $<nameN> eintragen
und zwar für alle Dienste die VOR deinem Script gestartet werden sollen. Den Namen des Dienstes entnimmst du dem Verzeichnis /etc/init.d

Beispiele:
named ==> $named
xinetd ==> $xinetd
...

ein wichtiger bei dir Fehlender Kandidat ist network ... ohne das das Netzwerk aktiviert wuerde, keine ESSID Eintragung möglich ...
 
OP
E

erlkoenig

Newbie
Hallo,

vielen Dank für die genaue Beschreibung!
Ich habe es nun mit $network und $dhcpd ausprobiert, jedoch brachte das keine Verbesserung.

Gibt es noch eine Möglichkeit?

Dank im Voraus
erlkoenig
 

oc2pus

Ultimate Guru
mal was anderes:

wieso geht das nicht mit YaST ?
du musst nur als modulname "ndiswrapper" eintragen und die restlichen WLAN-Paramter.

eine evtl LAN-Karte solltest du auf "activate onplugged" setzen
die WLAN Karte auf "activate on boot"
 
OP
E

erlkoenig

Newbie
Hallo,

bei der Konfiguration über Yast scheint zwar zunächst alles in Ordnung zu sein, jedoch komme ich nicht ins Internet.

iwconfig gibt Folgendes aus:
Code:
wlan0     IEEE 802.11g  ESSID:"Netzwerkname"  Nickname:"linux"
          Mode:Managed  Frequency:2.437 GHz  Access Point: 00:04:0E:47:69:79
          Bit Rate=24 Mb/s
          RTS thr=2347 B   Fragment thr=2346 B
          Encryption key:1234-56789-01234   Security mode:open
          Power Management:off
          Link Quality:94/100  Signal level:-69 dBm  Noise level:-256 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:7  Invalid misc:50   Missed beacon:0

Ich habe das dann noch so konfiguriert, dass die iwconfig-Ausgabe der Ausgabe gleicht, die ich bei der reinen Konsolenkonfiguration erhalte:

Code:
linux:/home/benutzer # iwconfig wlan0 nickname off
linux:/home/benutzer # iwconfig wlan0 key restricted

Doch es führt zu keinem Erfolg.

Wüsste jemand in dieser Hinsicht einen Tipp, der zur Problemlösung helfen könnte?

Dank im Voraus
erlkoenig
 

oc2pus

Ultimate Guru
schau mal in /var/log/boot.msg und /var/log/messages nach.

dort solltest du sehen das/ob ndiswrapper geladen wird und warum er beim booten "wartet" ...
 
OP
E

erlkoenig

Newbie
Vielen Dank für die Hilfe!

In der boot.msg steht nichts zum ndiswrapper, allerdings in der /var/log/messages:

Code:
Jul 23 18:12:35 linux kernel: ndiswrapper: module not supported by Novell, setting U taint flag.
Jul 23 18:12:35 linux kernel: ndiswrapper version 1.2 loaded (preempt=no,smp=no)
Jul 23 18:12:35 linux kernel: ndiswrapper: driver ts154usb (Deutsche Telekom AG,11/13/2003, 1.0.5.0) loaded
Jul 23 18:12:42 linux kernel: wlan0: ndiswrapper ethernet device 00:30:f1:bb:67:22 using driver ts154usb, configuration file 083A:4501.0.conf
Jul 23 18:12:42 linux kernel: wlan0: encryption modes supported: WEP, WPA with TKIP, WPA with AES/CCMP
Jul 23 18:12:42 linux kernel: usbcore: registered new driver ndiswrapper
Jul 23 18:12:47 linux ifup: No configuration found for wlan0
Jul 23 18:13:23 linux modify_resolvconf: Service dhcpcd modified /etc/resolv.conf. See info block in this file
Jul 23 18:13:34 linux kernel: wlan0: no IPv6 routers present

Das hört sich schon ganz interessant an. Insbesondere "linux ifup: No configuration found for wlan0" scheint mir eine Problemquelle zu sein.
Hättest du ein paar Tipps, wie ich die in der Logdatei genannten Probleme beheben kann?

Dank im Voraus
erlkoenig
 

oc2pus

Ultimate Guru
Jul 23 18:12:47 linux ifup: No configuration found for wlan0

dann hast du den Befehl ndiswrapper -m vergessen ...
* Link the ndiswrapper to the wlan0 interface like so (puts an ndiswrapper file in /etc/modprobe.d/)...

ndiswrapper -m ==> es gibt eine Konfig für wlan0, sonst gibt es nur eine für z.Bsp: ifcfg-wlan-bus-pci-0000:06:00.0.. (kannst du in /etc/sysconfig/network sehen)

siehe auch hier:
[TIP] ndiswrapper Tutorial für SuSE-10.0 und SuSE-10.1
http://www.linux-club.de/viewtopic.php?t=62810

und hier (ist zwar SuSE-9.3 aber trotzdem aktuell)
http://ndiswrapper.sourceforge.net/mediawiki/index.php/Suse_Professional_9.x
 
OP
E

erlkoenig

Newbie
oc2pus schrieb:
dann hast du den Befehl ndiswrapper -m vergessen ...

Das kann es nicht sein, denn:

Code:
linux:/home/oehler # ndiswrapper -m
modprobe config already contains alias directive

Könnte dieser Fehler vielleicht noch eine andere Ursache haben?
 

oc2pus

Ultimate Guru
was hast du denn im YaST unter "Name der Hardware Konfiguration" eingetragen ?

das muss korrespondieren mit dem Eintarg /etc/sysconfig/network/ifcfg-wlan0

Code:
_nm_name='XXXX-0'
wobei XXXX-0 in Yast Eingetragen wurde

in /etc/modprobe.d/ndiswrapper steht dann:
Code:
alias wlan0 ndiswrapper

==> wenn ndiswrapper als Modul angesprochen wird, wird ifcfg-wlan0 gelesen und die darinstehenden Parameter werden verwendet (ESSID, ...)


evtl. hilft es alle Netzkonfigs zu löschen, YaST beenden, dann nochmal alles durchgehen. Jetzt weisst du ja wie es geht. YaST neigt manchmal dazu etwas zu doppeln/vermischen.

So wie es aussieht ist deine ndiswrapper Konfiguration in Ordnung => WLAN-Adapter ist aktiv, du kannst ihn ja manuell aktivieren. Der Rest ist eigentlich nur noch das Hotplug Voodoo in der boot-Reihenfolge.

und auch hier mal reinschauen:
http://de.opensuse.org/SDB:Ndiswrapper

du kannst auch das mal probieren:
http://de.opensuse.org/SDB:Waiting_for_Mandatory_Device
 
OP
E

erlkoenig

Newbie
Hallo,

der Name der Hardware-Konfiguration ist bei der Default-Wert static-0.

Nähere Infos kannst du /etc/sysconfig/network/ifcfg-wlan0 entnehmen:

Code:
BOOTPROTO='dhcp'
BROADCAST=''
IPADDR=''
MTU=''
NAME='Ethernet-Netzwerkkarte'
NETMASK=''
NETWORK=''
REMOTE_IPADDR=''
STARTMODE='auto'
USERCONTROL='no'
WIRELESS_AP=''
WIRELESS_AUTH_MODE='open'
WIRELESS_BITRATE='auto'
WIRELESS_CA_CERT=''
WIRELESS_CHANNEL=''
WIRELESS_CLIENT_CERT=''
WIRELESS_DEFAULT_KEY='0'
WIRELESS_ESSID='Netzwerkname'
WIRELESS_FREQUENCY=''
WIRELESS_KEY=''
WIRELESS_KEY_0='12345678901234567890123456'
WIRELESS_KEY_1=''
WIRELESS_KEY_2=''
WIRELESS_KEY_3=''
WIRELESS_KEY_LENGTH='128'
WIRELESS_MODE='Managed'
WIRELESS_NICK=''
WIRELESS_NWID=''
WIRELESS_POWER='yes'
WIRELESS_WPA_IDENTITY=''
WIRELESS_WPA_PASSWORD=''
WIRELESS_WPA_PSK=''
_nm_name='static-0'

Lassen sich daraus fehlerhafte Einstellungen entnehmen?
Liest Yast diese Datei aus, also kann ich in dieser Datei Änderungen ohne Yast vornehmen?

Dank im Voraus
erlkoenig
 

oc2pus

Ultimate Guru
das sieht soweit ordentlich aus.

ich habe dir oben noch mal zwei links gepostet. Die bitte nochmal durchlesen.
 
OP
E

erlkoenig

Newbie
Ich habe mir soeben die beiden Artikel durchgelesen.

Die Informationen des Ndiswrapper-Artikels waren mir nicht neu, der Artikel umfasst ungefähr genau das "Newbie-Wissen", das ich mir schon angeeignet hatte.

Zum 2. Artikel: Kennzeichen von "Waiting for Mandatory Device" ist ja, wenn ich mich nicht irre, das TimeOut. Allerdings trat dies nur auf, als ich noch den DHCP-Befehl in die boot.local geschrieben hatte. Inzwischen gibt es keine zusätzliche Ladezeit mehr beim Bootvorgang.
Oder habe ich das mit dem TimeOut falsch verstanden?

Du hattest mir ja vorgeschlagen, die Netzkonfiguration zu löschen. Was und wo kann ich denn dazu löschen? Den ganzen Ordner "/etc/sysconfig/network" darf ich wohl nicht löschen, oder?

Dank im Voraus
erlkoenig
 

oc2pus

Ultimate Guru
nein nur innerhalb YaST die Netzwerkkarten löschen!
YaST beenden und dann neu eingeben.

das wäre doch gelacht wenn wir deine WLAN-Konfiguration nicht hinbekommen :)
 
Oben