View previous topic :: View next topic |
Author |
Message |
flo_02_mu n00b
Joined: 06 Aug 2004 Posts: 73
|
Posted: Mon Apr 25, 2005 4:04 pm Post subject: wlan-Benennung + wlan-Schönheitsfehler |
|
|
Hallo!
Folgendes Szenario:
Ich verwende einen Laptop, der zu Hause an einer Dockingstation hängt und über
diese einen Netzwerkanschluss hat. Das Netzwerk wird dann als eth0 richtig
erkannt und funktioniert.
Wenn ich an der Uni bin hab ich diese Dockingstation jedoch nicht dabei,
folglich keinen "verdrahteten" Netzwerkanschluss, sondern eine wlan-pcmcia
Karte, die mit dem orinoco_cs-Modul wunderbar funktioniert.
ABER: Da ich ja ja nur entweder verdrahtet oder wlan betreibe, bekommt die
wlan-Karte beim einstecken ebenfalls wieder eth0 zugewiesen. Dies ist äußerst
unpraktisch, da damit die ganze Konfiguration per init-scripte (baselayout
1.11.9-r1) durcheinanderkommt.
Meine bisherige Lösung:
In /usr/src/linux/drivers/net/wireless/orinoco_cs.c vor
Code: | SET_NETDEV_DEV(dev, &handle_to_dev(handle)); |
ein Code: | sprintf(dev->name, "wlan0"); |
einfügen. Das führt dazu, dass die wlan-Karte immer den Namen wlan0 bekommt,
statt ethX. Funktioniert zwar, aber irgendwie finde ich das unbefriedigend,
v.A. weil man jeden neuen Kernel erst patchen muss. Gibt es hier keine bessere
Möglichkeit? Vllt. eine Modul-Option oder so?
Was mich noch stört:
Wenn ich die Karte einstecke, dann wird richtigerweise versucht das script
/etc/init.d/net.wlan0 zu starten. Dies geht anstandslos, solange ich
Verbindung zum AP habe. Das weiß ich jedoch beim einstecken leider noch nicht.
Habe ich keine Verbindung, so hagelt es Fehlermeldungen, denn dann kann
logischerweise kein dhcpcd anlaufen, etc. Gibt es hier keine Möglichkeit zu
sagen: "Führe das Script aus - wenn keine Verbindung besteht, unterbreche,
sobald Verbindung besteht, mach weiter"?
Letzter Schönheitsfehler:
Beim Abziehen der wlan-Karte bekomme ich die Meldung: "cardmgr + wlan0: error
fetching interface information: Device not found" (Was ja auch logisch ist,
das Device is' ja schon "abgezogen" ) Lässt sich hier eine elegantere Lösung
finden?
- Flo |
|
Back to top |
|
|
flo_02_mu n00b
Joined: 06 Aug 2004 Posts: 73
|
Posted: Sun May 01, 2005 10:28 am Post subject: |
|
|
Ist meine Vorgehensweise wirklich so selten?
- Flo |
|
Back to top |
|
|
theche Guru
Joined: 26 Feb 2004 Posts: 512
|
Posted: Sun May 01, 2005 10:37 am Post subject: |
|
|
wenn du die kabelnetzwerkkarte fest in den kernel reinbaust oder das modul zuerst lädst sollte diese karte immer eth0 bekommen. _________________ Stellt euch vor, es geht, und keiner bekommt's hin! --theche, der gefragt worden ist, was sein nick bedeuten soll... |
|
Back to top |
|
|
TheSmallOne Guru
Joined: 22 Jan 2005 Posts: 467 Location: Germany
|
Posted: Sun May 01, 2005 12:23 pm Post subject: |
|
|
Hm, ist nicht genau wegen dieser Benennungsproblematik udev erfunden worden?
Vielleicht solltest du dich da mal einlesen. |
|
Back to top |
|
|
flo_02_mu n00b
Joined: 06 Aug 2004 Posts: 73
|
Posted: Sun May 01, 2005 12:32 pm Post subject: |
|
|
Das mit dem einkompilieren müsste eigentlich klappen, stimmt. Versuch ich später mal...
Aber bei udev hab ich eigentlich keine Hoffnung, denn Netzwerk-Devices tauchen ja nicht unter /dev auf, die bennent der Kernel / das entsprechende Modul quasi selbst. Ich lass mich da aber gerne eines Besseren belehren.
- Flo |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5317
|
Posted: Sun May 01, 2005 12:53 pm Post subject: |
|
|
mit udev an sich gehts nicht.
Man kann aber mit udev + nameif( kann network devices anhand ihrer MAC-Adresse umbenennen, ist in net-tools)
eine regel erstellen.
Code: | $ udevinfo -p /sys/class/net/eth0/ -a
looking at class device '/sys/class/net/eth0':
SUBSYSTEM="net"
SYSFS{addr_len}="6"
SYSFS{address}="00:40:45:08:2d:49"
SYSFS{broadcast}="ff:ff:ff:ff:ff:ff"
SYSFS{features}="0x0"
SYSFS{flags}="0x1002"
SYSFS{ifindex}="2"
SYSFS{iflink}="2"
SYSFS{mtu}="1500"
SYSFS{tx_queue_len}="1000"
SYSFS{type}="1" |
so könnte eine udev-regel aussehen:
Code: | SUBSYSTEM="net", SYSFS{address}="00:40:45:08:2d:49", PROGRAM="/sbin/nameif wlan0 00:40:45:08:2d:49" |
mit diese regel wird das netzwerk device mit der Mac-Adresse "00:40:45:08:2d:49" in wlan0 umbenannt
gruß
firefly _________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5317
|
Posted: Sun May 01, 2005 12:59 pm Post subject: |
|
|
man kann auch eine generelle regel in udev aufstellen und die eigentliche konfiguration in /etc/mactab vornehmen.
(syntax der mactab siehe man nameif)
anstelle von
Code: | SUBSYSTEM="net", SYSFS{address}="00:40:45:08:2d:49", PROGRAM="/sbin/nameif wlan0 00:40:45:08:2d:49" |
für jedes device, das hier
Code: | SUBSYSTEM="net", PROGRAM="/sbin/nameif -c /etc/mactab" |
gruß
firefly _________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
flo_02_mu n00b
Joined: 06 Aug 2004 Posts: 73
|
Posted: Sun May 01, 2005 1:56 pm Post subject: |
|
|
Das mit nameif ist eigentlich genial, funktioniert auch - was das Umbenennen betrifft. Aber anscheinend für PCMCIA nicht ganz geeignet, denn sobald man die Karte einsteckt versucht der cardmgr "network start eth0" auszuführen... und währenddessen benennt udev erst das device um. Schade eigentlich, die Lösung hätte mir gut gefallen. Aber mit dem fest einkompilierten Netzwerktreiber kann ich auch leben.
Weiß jemand was zu dem anderen Problem? Also zum (fort/)ausführen von /etc/init.d/net.wlan0, sobald ein AP in Reichweite ist?
- Flo |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5317
|
Posted: Sun May 01, 2005 2:01 pm Post subject: |
|
|
du könntest das für die pcmcia karte den nameif command auch in /etc/conf.d/net einfügen, und zwar so:
in der /etc/conf.d/net kann man folgende funktionen definieren: preup, predown, postup und postdown
(steht in der net .example alles drinn).
gruß
firefly _________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5317
|
Posted: Sun May 01, 2005 2:08 pm Post subject: |
|
|
diese funktionen in /etc/conf.d/net gibt es erst ab baselayout-1.11.9
gruß
firefly _________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
flo_02_mu n00b
Joined: 06 Aug 2004 Posts: 73
|
Posted: Sun May 01, 2005 2:32 pm Post subject: |
|
|
Hmm...
also das mit dem einkompilieren / Modul zuerst laden funktioniert doch nicht. Eigentlich auch klar, Der Netzwerkanschluss hängt an der Dockingstation, ist also physikalisch nicht vorhanden, wenn diese nicht dranhängt. Und was nicht vorhanden ist, kann auch kein eth0 werden.
Mit den preup-Funktionen wird das irgendwie auch nix... sobald ich die Karte einstecke wird vom cardmgr "./network start eth0" ausgeführt. Woher der cardmgr das eth0 nimmt ist mir allerdings ein wenig rätselhaft.
- Flo |
|
Back to top |
|
|
firefly Watchman
Joined: 31 Oct 2002 Posts: 5317
|
Posted: Sun May 01, 2005 2:58 pm Post subject: |
|
|
Wenn das so aussieht könntest du entwerder das network-script in /etc/pcmcia so anpassen das nameif vor dem starten des eigentlichen net.* scriptes ausgeführt wird plus starten des passenden scriptes
oder folgendes:
- Du erstellst einen zusätzlichen virtuellen Runlevel(einfach einen ordner in /etc/runlevels erstellen)
- kopierst den inhalt von /etc/conf.d/net in 2 dateien z.b /etc/conf.d/net.wireless und /etc/conf.d/net.network.
die du entsprechen konfiguierst(in net.wirelss die wireless konfiguration, als eht0, und in net.network für den anschluss an der docking-station)
- erstellst dir eine start-script, welches eine symlink von /etc/conf.d/net auf net.network oder net.wireless setzt. das start-script muss vor pcmcia und den net.* scripten gestartet werden beim booten.
- in den neuen Runlevel kopierst den inhalt von default und zusätzlich dein start-script per rc-update.
- zum schluss musst du nur noch den bootmanager so konfiguieren, das du beim starten auswählen kannst in welchen virtuellen runlevel gestartet werden soll auser default(das geht über den kernel-parameter softlevel, welcher von einem der gentoo-boot-scripten im boot-runlevel ausgewertet wird).
wenn du hilfe brauchst beim erstellen des scriptes meld dich einfach
gruß
firefly _________________ Ein Ring, sie zu knechten, sie alle zu finden,
Ins Dunkel zu treiben und ewig zu binden
Im Lande Mordor, wo die Schatten drohn. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|