[Ayuda] VMware & kernel 2.6.3
Miguel Cárdenas
warlockxxi en yahoo.com
Jue Mar 11 13:10:55 CST 2004
Hola lista
Ya superamos la parte del kernel y el sonido, ahora
estamos con la cuestion de aplicaciones y bueno segun
el documento
http://thomer.com/linux/migrate-to-2.6.html
en la seccion de configuracion del VMware para kernel
2.6 menciona algunos cambios en los fuentes de los
modulos:
First of all, replace all occurrences of
``/proc/ksyms'' with ``/proc/kallsyms'' in
/usr/bin/vmware-config.pl.
Untar vmnet.tar in /usr/lib/vmware/modules/source.
This creates a vmnet-only directory. In that
directory, edit bridge.c. Around line 368, change:
atomic_add(skb->truesize, &sk->wmem_alloc);
into:
atomic_add(skb->truesize, &sk->sk_wmem_alloc);
and, similarly, around line 618 and line 817, change
protinfo into sk_protinfo.
Respecto a algunos cambios de current->uid a
current->__uid y otros miembros, no fueron necesarios
ya que la estructura original sigue siendo sin el '__'
en sus miembros, al menos en el fuente de mi kernel
2.6.3
Finalmente me lance a compilar pero encontre algo un
poco terrible, un cambio realmente macabro... el error
que me avento el compilador despues de realizar los
cambios pertinentes fue el siguiente:
make[2]: Entering directory
`/tmp/vmware-config0/vmmon-only/driver-2.6.3'
../linux/driver.c:133: warning: initialization from
incompatible pointer type
../linux/driver.c: In function `init_module':
../linux/driver.c:246: structure has no member named
`prev'
../linux/driver.c:247: structure has no member named
`next'
../linux/driver.c: In function `Panic':
las lineas 246 y 247 de linux/driver.c contenido en el
archivo vmmon.tar (vmmon-only descomprimido) y pues me
puse a rastrear los headers del vmware y del sistema y
me encontre con esto:
En linux/driver.h (del vmmon.tar) esta definida la
siguiente estructura
typedef struct VMXLinuxState {
int major;
int minor;
struct miscdevice misc;
VmTimeStart startTime;
char deviceName[DEVICE_NAME_SIZE];
char buf[LINUXLOG_BUFFER_SIZE];
VMLinux *head;
/*
* for LinuxDriverPoll()
*/
struct timer_list pollTimer;
wait_queue_head_t pollQueue;
} VMXLinuxState;
Los miembros prev y next correspondientes a miscdevice
(misc) no existen, asi que me puse a seguir el hilo
hasta el header miscdevice.h del kernel y resulta que
tambien esto cambio entre mi kernel 2.4.21 y el 2.6.3
*** Declaracion en 2.4.21
struct miscdevice
{
int minor;
const char *name;
struct file_operations *fops;
struct miscdevice * next, * prev;
devfs_handle_t devfs_handle;
};
*** Declaracion en 2.6.3
struct miscdevice
{
int minor;
const char *name;
struct file_operations *fops;
struct list_head list;
struct device *dev;
char devfs_name[64];
};
aqui ya no es un nombre diferente de variable o
miembro, sino que son miembros totalmente
diferentes...
Me puse a buscar el bendito 'struct list_head' en los
headers del kernel nuevo (2.6.3) y lo encontre en
'list.h' declarado de la siguiente manera:
struct list_head {
struct list_head *next, *prev;
};
asi que modifique el linux/driver.c (de vmmon) de la
siguiente forma por si acaso pegaba (realmente no
sabia lo que iba a resultar):
//linuxState.misc.prev = 0;
//linuxState.misc.next = 0;
linuxState.misc.list.prev = 0;
linuxState.misc.list.next = 0;
y bueno, resolvi el problema exclusivamente hasta este
punto, el compilador supero esa parte del codigo, sin
embargo al seguir un poco mas adelante escupio decenas
de simbolos no definidos... esto ocurrio al compilar,
no en el link, ni siquiera llego a ese punto... los
simbolos indefinidos eran declarados en los headers y
bueno pues me doy... si me pongo a ver si se puede
arreglar cada uno de los simbolos tardare dias tal
vez, y probablemente al final alguna otra
incompatibilidad va a aparecer lo que hara mi trabajo
vano...
En fin, mi pregunta es... Alguien ya echo a volar el
VMware con un kernel 2.6.3 (en particular este, ya que
tal vez hubo cambios entre 2.6.0-test# y el actual...
Si hay algun valiente por aqui que lo intento con
exito me gustaria que comentara que paso o que se le
ocurrio...
Saludos y gracias
__________________________________
Do you Yahoo!?
Yahoo! Search - Find what you’re looking for faster
http://search.yahoo.com
_______________________________________________
Ayuda mailing list
Ayuda en linux.org.mx
Para salir de la lista: http://mail.linux.org.mx/cgi-bin/mailman/listinfo/ayuda/
Más información sobre la lista de distribución Ayuda