Welches Modul/Treiber für welche Hardware, Kernel compilieren...
-
minimike
- Beiträge: 5616
- Registriert: 26.03.2003 02:21:19
- Lizenz eigener Beiträge: neue BSD Lizenz
- Wohnort: Köln
-
Kontaktdaten:
Beitrag
von minimike » 06.05.2007 13:43:10
Hi ich kann folgendes Modul vmnet für VMware mit Kernel 2.6.21-git5 nicht kompelieren
Code: Alles auswählen
bitch:/usr/src/vmware-any-any-update109/vmnet-only# make
Unknown VMware Workstation 6.0.0 build 44426 detected. Building for Workstation 5.5.3.
Using 2.6.x kernel build system.
make -C /lib/modules/2.6.21-git5-amd64/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.21-git5-amd64'
CC [M] /usr/src/vmware-any-any-update109/vmnet-only/driver.o
CC [M] /usr/src/vmware-any-any-update109/vmnet-only/hub.o
CC [M] /usr/src/vmware-any-any-update109/vmnet-only/userif.o
/usr/src/vmware-any-any-update109/vmnet-only/userif.c: In function 'VNetCopyDatagramToUser':
/usr/src/vmware-any-any-update109/vmnet-only/userif.c:633: error: 'const struct sk_buff' has no member named 'h'
/usr/src/vmware-any-any-update109/vmnet-only/userif.c:633: error: 'const struct sk_buff' has no member named 'nh'
/usr/src/vmware-any-any-update109/vmnet-only/userif.c:639: error: 'const struct sk_buff' has no member named 'h'
make[2]: *** [/usr/src/vmware-any-any-update109/vmnet-only/userif.o] Fehler 1
make[1]: *** [_module_/usr/src/vmware-any-any-update109/vmnet-only] Fehler 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.21-git5-amd64'
make: *** [vmnet.ko] Fehler 2
bitch:/usr/src/vmware-any-any-update109/vmnet-only#
Ich bin kein Coder aber ich meine das ist der Schnipsel
Code: Alles auswählen
static INLINE_SINGLE_CALLER int
VNetCopyDatagramToUser(const struct sk_buff *skb, // IN
char *buf, // OUT
size_t count) // IN
{
if (count > skb->len) {
count = skb->len;
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 4)
if (copy_to_user(buf, skb->data, count)) {
return -EFAULT;
}
#else
/*
* If truncation occurs, we do not bother with checksumming - caller cannot
* verify checksum anyway in such case, and copy without checksum it is
* faster.
*/
if (skb->pkt_type == PACKET_OUTGOING && /* Packet must be outgoing */
skb->ip_summed == VM_CHECKSUM_PARTIAL && /* Without checksum */
skb->h.raw != skb->nh.raw && /* We must know where header is */
skb->len == count) { /* No truncation may occur */
size_t skl;
int csum;
u_int16_t csum16;
skl = skb->h.raw - skb->data;
if (VNetCopyDatagram(skb, buf, skl)) {
return -EFAULT;
}
csum = VNetCsumCopyDatagram(skb, skl, buf + skl);
if (csum < 0) {
return csum;
}
csum16 = csum;
if (copy_to_user(buf + skl + skb->csum, &csum16, sizeof csum16)) {
return -EFAULT;
}
} else {
if (VNetCopyDatagram(skb, buf, count)) {
return -EFAULT;
}
}
#endif
return count;
}
Kann mir da jemand helfen?
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft
-
Spasswolf
- Beiträge: 3472
- Registriert: 30.11.2005 10:32:22
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Wald
Beitrag
von Spasswolf » 06.05.2007 19:05:19
Es geht um die folgende struct aus ../include/linux/skbuff.h:
struct sk_buff {
.
.
.
union {
struct tcphdr *th;
struct udphdr *uh;
struct icmphdr *icmph;
struct igmphdr *igmph;
struct iphdr *ipiph;
struct ipv6hdr *ipv6h;
unsigned char *raw;
} h;
union {
struct iphdr *iph;
struct ipv6hdr *ipv6h;
struct arphdr *arph;
unsigned char *raw;
} nh;
.
.
.
};
Die beiden unions sind im git-patch aus dem Kernel geflogen. Die unions einfach wieder in den header zu schreiben bringt auch nichts, da die unions nicht meht initialisiert werden.
-
comes
- Beiträge: 2702
- Registriert: 11.03.2005 07:33:30
- Wohnort: /dev/null
-
Kontaktdaten:
Beitrag
von comes » 06.05.2007 19:30:48
was ich mich die ganze zeit frage, wieso fummelt alle welt noch mit den any-any patches rum? die sind gestorben, brauch man nicht mehr! finito! aus! ende! vorbei!
vmware workstation oder was auch immer laden, entpacken, dann den üblichen 3 satz, fertig, läuft!
-
minimike
- Beiträge: 5616
- Registriert: 26.03.2003 02:21:19
- Lizenz eigener Beiträge: neue BSD Lizenz
- Wohnort: Köln
-
Kontaktdaten:
Beitrag
von minimike » 06.05.2007 20:18:21
comes hat geschrieben:was ich mich die ganze zeit frage, wieso fummelt alle welt noch mit den any-any patches rum? die sind gestorben, brauch man nicht mehr! finito! aus! ende! vorbei!
vmware workstation oder was auch immer laden, entpacken, dann den üblichen 3 satz, fertig, läuft!
nein
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft
-
minimike
- Beiträge: 5616
- Registriert: 26.03.2003 02:21:19
- Lizenz eigener Beiträge: neue BSD Lizenz
- Wohnort: Köln
-
Kontaktdaten:
Beitrag
von minimike » 06.05.2007 20:21:43
Ich habe VMware WS6 für 64 Bit. Das Ergebniss bekomme ich mit dem Code von VMware WS6 sowie auch mit dem vom vmware-any-any-patch. Ich muss mal im VMware Forum nachfragen
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft
-
minimike
- Beiträge: 5616
- Registriert: 26.03.2003 02:21:19
- Lizenz eigener Beiträge: neue BSD Lizenz
- Wohnort: Köln
-
Kontaktdaten:
Beitrag
von minimike » 06.05.2007 20:35:46
Spasswolf hat geschrieben:Es geht um die folgende struct aus ../include/linux/skbuff.h:
Die beiden unions sind im git-patch aus dem Kernel geflogen. Die unions einfach wieder in den header zu schreiben bringt auch nichts, da die unions nicht meht initialisiert werden.
schon ab git1?
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft
-
Spasswolf
- Beiträge: 3472
- Registriert: 30.11.2005 10:32:22
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Wald
Beitrag
von Spasswolf » 06.05.2007 23:43:35
Nach ein bischen wühlen im Code hab ich hoffentlich 'ne Lösung
Code: Alles auswählen
static INLINE_SINGLE_CALLER int
VNetCopyDatagramToUser(const struct sk_buff *skb, // IN
char *buf, // OUT
size_t count) // IN
{
if (count > skb->len) {
count = skb->len;
}
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 4, 4)
if (copy_to_user(buf, skb->data, count)) {
return -EFAULT;
}
#else
/*
* If truncation occurs, we do not bother with checksumming - caller cannot
* verify checksum anyway in such case, and copy without checksum it is
* faster.
*/
if (skb->pkt_type == PACKET_OUTGOING && /* Packet must be outgoing */
skb->ip_summed == VM_CHECKSUM_PARTIAL && /* Without checksum */
skb->transport_header != skb->network_header && /* We must know where header is */
skb->len == count) { /* No truncation may occur */
size_t skl;
int csum;
u_int16_t csum16;
skl = skb_transport_offset(skb);
if (VNetCopyDatagram(skb, buf, skl)) {
return -EFAULT;
}
csum = VNetCsumCopyDatagram(skb, skl, buf + skl);
if (csum < 0) {
return csum;
}
csum16 = csum;
if (copy_to_user(buf + skl + skb->csum, &csum16, sizeof csum16)) {
return -EFAULT;
}
} else {
if (VNetCopyDatagram(skb, buf, count)) {
return -EFAULT;
}
}
#endif
return count;
}
Es könnte aber durchaus sein das noch an anderen Stellen Änderungen nötig sind. Such mal nach entsprechenden Dateien mit
Edit: Ja, mit git1 begannen die Änderungen im Netwerkteil des Kernels.
Edit2: grep Befehl geändert
-
minimike
- Beiträge: 5616
- Registriert: 26.03.2003 02:21:19
- Lizenz eigener Beiträge: neue BSD Lizenz
- Wohnort: Köln
-
Kontaktdaten:
Beitrag
von minimike » 07.05.2007 23:36:02
Ja habe deine Änderungen mit einem Editor übernommen, Die Datei userif.c kompeliert er nun, jetzt hängt er bei bridge.c
Code: Alles auswählen
make[1]: Entering directory `/usr/src/linux-headers-2.6.21-git5-amd64'
CC [M] /usr/src/vmware-any-any-update109/vmnet-only/driver.o
CC [M] /usr/src/vmware-any-any-update109/vmnet-only/hub.o
CC [M] /usr/src/vmware-any-any-update109/vmnet-only/userif.o
CC [M] /usr/src/vmware-any-any-update109/vmnet-only/netif.o
CC [M] /usr/src/vmware-any-any-update109/vmnet-only/bridge.o
/usr/src/vmware-any-any-update109/vmnet-only/bridge.c: In function 'VNetBridgeReceiveFromVNet':
/usr/src/vmware-any-any-update109/vmnet-only/bridge.c:557: error: 'struct sk_buff' has no member named 'mac'
/usr/src/vmware-any-any-update109/vmnet-only/bridge.c:557: error: 'struct sk_buff' has no member named 'nh'
/usr/src/vmware-any-any-update109/vmnet-only/bridge.c:557: warning: left-hand operand of comma expression has no effect
/usr/src/vmware-any-any-update109/vmnet-only/bridge.c:557: warning: left-hand operand of comma expression has no effect
/usr/src/vmware-any-any-update109/vmnet-only/bridge.c:557: warning: value computed is not used
/usr/src/vmware-any-any-update109/vmnet-only/bridge.c: In function 'VNetBridgeComputeHeaderPos':
/usr/src/vmware-any-any-update109/vmnet-only/bridge.c:1075: error: 'struct sk_buff' has no member named 'h'
/usr/src/vmware-any-any-update109/vmnet-only/bridge.c:1075: error: 'struct sk_buff' has no member named 'nh'
/usr/src/vmware-any-any-update109/vmnet-only/bridge.c:1080: error: 'struct sk_buff' has no member named 'h'
/usr/src/vmware-any-any-update109/vmnet-only/bridge.c:1080: error: 'struct sk_buff' has no member named 'nh'
/usr/src/vmware-any-any-update109/vmnet-only/bridge.c:1080: error: 'struct sk_buff' has no member named 'nh'
/usr/src/vmware-any-any-update109/vmnet-only/bridge.c: In function 'VNetBridgeReceiveFromDev':
/usr/src/vmware-any-any-update109/vmnet-only/bridge.c:1166: error: 'struct sk_buff' has no member named 'mac'
/usr/src/vmware-any-any-update109/vmnet-only/bridge.c:1190: error: 'struct sk_buff' has no member named 'mac'
make[2]: *** [/usr/src/vmware-any-any-update109/vmnet-only/bridge.o] Fehler 1
make[1]: *** [_module_/usr/src/vmware-any-any-update109/vmnet-only] Fehler 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.21-git5-amd64'
make: *** [vmnet.ko] Fehler 2
bitch:/usr/src/vmware-any-any-update109/vmnet-only#
Da ich keinen Plan vom Kernel Coden sowie von C habe muss ich wohl wieder deine Hilfe bemühen.
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft
-
Spasswolf
- Beiträge: 3472
- Registriert: 30.11.2005 10:32:22
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Wald
Beitrag
von Spasswolf » 08.05.2007 08:48:51
Wenn du die Datei postest, kann ich's versuchen.
-
minimike
- Beiträge: 5616
- Registriert: 26.03.2003 02:21:19
- Lizenz eigener Beiträge: neue BSD Lizenz
- Wohnort: Köln
-
Kontaktdaten:
Beitrag
von minimike » 08.05.2007 13:13:18
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft
-
Spasswolf
- Beiträge: 3472
- Registriert: 30.11.2005 10:32:22
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Wald
Beitrag
von Spasswolf » 08.05.2007 15:12:50
Hier ist der Patch:
Code: Alles auswählen
diff -Naur a/bridge.c b/bridge.c
--- a/bridge.c 2007-05-08 15:10:12.000000000 +0200
+++ b/bridge.c 2007-05-08 15:03:16.000000000 +0200
@@ -1071,13 +1071,14 @@
static INLINE_SINGLE_CALLER void
VNetBridgeComputeHeaderPos(struct sk_buff *skb) // IN: buffer to examine
{
+ const unsigned char *nh = skb_network_header(skb);
/* Maybe some kernel gets it right... */
- if (skb->h.raw != skb->nh.raw) {
+ if (skb->transport_header != skb->network_header) {
return;
}
switch (be16_to_cpu(skb->protocol)) {
case ETH_P_IP:
- skb->h.raw = skb->nh.raw + (skb->nh.raw[0] & 0x0F) * 4;
+ skb->transport_header = skb->network_header + (nh[0] & 0x0F) * 4;
return;
default:
LOG(3, (KERN_DEBUG "Unknown EII protocol %04X: csum at %d\n",
@@ -1163,7 +1164,7 @@
# endif
if (bridge->smac) {
- if (VNetCallSMACFunc(bridge->smac, &skb, skb->mac.raw,
+ if (VNetCallSMACFunc(bridge->smac, &skb, skb_mac_header(skb),
SMAC_CheckPacketFromHost) !=
PacketStatusForwardPacket) {
LOG(4, (KERN_NOTICE "bridge-%s: packet dropped .\n",
@@ -1187,7 +1188,7 @@
#endif
#endif
- skb_push(skb, skb->data - skb->mac.raw);
+ skb_push(skb, skb->data - skb_mac_header(skb));
LOG(3, (KERN_DEBUG "bridge-%s: receive %d\n",
bridge->name, (int) skb->len));
-
minimike
- Beiträge: 5616
- Registriert: 26.03.2003 02:21:19
- Lizenz eigener Beiträge: neue BSD Lizenz
- Wohnort: Köln
-
Kontaktdaten:
Beitrag
von minimike » 08.05.2007 23:06:59
Nein das funktioniert nicht. Nun zum einen artet das in Arbeit für dich aus und ich kann dich nicht wirklich gut Unterstützen um mein Problem zu lösen. Kann ich dir den aktuellsten Code seitens von VMware für die Treiber zukommen lassenund ich revanchiere mich dann in Paderborn oder Siegburg im Spätsommer mit Bier? Die Treiber sind meine ich unter der GPL
Fährst du auch AMD64? Dann schicke ich auch die DEB*s vom Kernel die ich gebaut habe mit. Natürlich auch mit dem neuen Wlanstack mit sammt Treiber für rtl8187 Wlan Chips.
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft
-
Spasswolf
- Beiträge: 3472
- Registriert: 30.11.2005 10:32:22
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Wald
Beitrag
von Spasswolf » 08.05.2007 23:32:08
Ja, das wär einfacher wenn du mir den ganzen Code schicken kannst ( Zensiert ). Ein amd64 System hab ich auch. Dein Kernel deb sollte ich aber nicht brauchen, es müsste reichen, dass ich mir einen neuen git oder mm Kernel bauen.
Das Bier ist auch 'ne gute Idee
![Very Happy :D](./images/smilies/icon_biggrin.gif)
, aber ich kann trotzdem für nichts garantieren.
-
Spasswolf
- Beiträge: 3472
- Registriert: 30.11.2005 10:32:22
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Wald
Beitrag
von Spasswolf » 10.05.2007 14:21:54
Du hast Post.
-
minimike
- Beiträge: 5616
- Registriert: 26.03.2003 02:21:19
- Lizenz eigener Beiträge: neue BSD Lizenz
- Wohnort: Köln
-
Kontaktdaten:
Beitrag
von minimike » 10.05.2007 22:34:01
Danke
![Smile :)](./images/smilies/icon_smile.gif)
Nur habe ich jetzt ein anderes Problem. Mein Rechner ist kaputt. Gestern abend sah ich noch einige kryptische Symbole beim herunterfahren kurz zuvor verhielt sich die Mühle seltsam. Jetzt habe ich nur noch einen schwarzen Bildschirm. Morgen früh fahre ich mit dem Rad zu Snogard und werde das Mainboard einschicken. Ich überlege mir derzeit ein anderes zu Kaufen weil die retour mindestens 5 Wochen dauert. Ich werde versuchen bis Di das zu Testen.
liebe Grüsse, Darko
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft
-
Spasswolf
- Beiträge: 3472
- Registriert: 30.11.2005 10:32:22
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Wald
Beitrag
von Spasswolf » 15.05.2007 14:19:35
Ich konnte es inzwischen auch testen, da der Vmware Player 2.0 den gleichen Code für das vmnet Kernelmodul benutzt. Bis jetzt gab's keine Probleme (mit Kernel 2.6.21-git12 und 2.6.22-rc1).
-
minimike
- Beiträge: 5616
- Registriert: 26.03.2003 02:21:19
- Lizenz eigener Beiträge: neue BSD Lizenz
- Wohnort: Köln
-
Kontaktdaten:
Beitrag
von minimike » 20.05.2007 17:42:48
Ja auch hier ein voller Erfolg
![Hail :hail:](./images/smilies/icon_hail.gif)
:hail::hail::hail::hail::hail:
Du bist zwar nicht Karel Gott aber dafür ein Kernelgott
Danke Darko
"Lennart Poettering is one of those typical IT leaders..." "like Linus Torvalds and Theo de Raadt?" "more like Bozo the Clown" After all, now a good employee of Microsoft
-
Spasswolf
- Beiträge: 3472
- Registriert: 30.11.2005 10:32:22
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Wald
Beitrag
von Spasswolf » 21.05.2007 12:49:35
Freut mich das es bei dir auch funktioniert!