Kernel include

Jakub Kocourek jakub.kocourek na volny.cz
Sobota Duben 9 12:29:26 CEST 2005


Tak už jsem zjistil, že problém asi nebude v include. VmWare prostě na
2.6.11.2 (možná až 2.6.11.6) neběhá ani po aktualizaci. V jádru 2.6.12 bude
chyba opravena (testuju 2.6.12-rc2 a tam běhá OK).
Co se týká lufs, tak tam už opravdu nevím. Netušim, podle čeho instalátor
usuzuje, že mám špatné zdroje jádra :( Vzhledem k tomu, že
z /usr/src/linux-2.6.12-rc2 (=/usr/src/linux) jsem kompiloval a v adresáři
boot mám správné System.map a config, tak už nevím co dál.

Jakub Kocourek

Jakub Kocourek wrote:

> Mám problém s jádrem 2.6.11.2 na Slackware 10.1. Jedná se o originální
> jádro z www.kernel.org. Lze jej zkompilovat, běží OK, je stabilní. Jenže
> jsem přecházel z řady 2.4.x a tak jsem si řekl, že aktualizuji i
> hlavičkové soubory jádra (include). To jsem ale nikdy nedělal, protože
> jsem to do teď nepotřeboval. Provedl jsem to prostým zkopírováním adresáře
> include z /usr/src/linux-2.6.11.2 do /usr/include. Soubory se úspěšně
> přepsaly. Když kompiluji nějaký program, hlavičkové soubory fungují OK a
> vše jde. Horší je to s moduly jádra. Ať použiju jibovolné z 2 umístění
> include, kompilace končí chybou. Tady je příklad:
>
------------------------------------------------------------------------------
> root na KENNY:/usr/local/bin# ./vmware-config.pl
> Making sure VMware Workstation's services are stopped.
> 
> Stopping VMware services:
>    Virtual machine monitor                                            
>    done
> 
> Trying to find a suitable vmmon module for your running kernel.
> 
> None of VMware Workstation's pre-built vmmon modules is suitable for your
> running kernel.  Do you want this program to try to build the vmmon module
> for
> your system (you need to have a C compiler installed on your system)?
> [yes]
> 
> Using compiler "/usr/bin/gcc". Use environment variable CC to override.
> 
> What is the location of the directory of C header files that match your
> running
> kernel? [/usr/include]
> 
> The header files in /usr/include are generally for C libraries, not for
> the running kernel. If you do not have kernel header files in your
> /usr/src directory, you probably do not have the kernel-source package
> installed. Are you
> sure that /usr/include contains the header files associated with your
> running
> kernel? [no] yes
> 
> Extracting the sources of the vmmon module.
> 
> Building the vmmon module.
> 
> Using standalone build system.
> make: Entering directory `/tmp/vmware-config5/vmmon-only'
> make[1]: Entering directory `/tmp/vmware-config5/vmmon-only'
> make[2]: Entering directory
> `/tmp/vmware-config5/vmmon-only/driver-2.6.11.2' make[2]: Leaving
> directory `/tmp/vmware-config5/vmmon-only/driver-2.6.11.2' make[2]:
> Entering directory `/tmp/vmware-config5/vmmon-only/driver-2.6.11.2' In
> file included from ../linux/hostif.c:61: ../include/pgtbl.h: In function
> `PgtblVa2PTELocked': ../include/pgtbl.h:81: warning: passing arg 1 of
> `pmd_offset' from incompatible pointer type
> make[2]: Leaving directory
> `/tmp/vmware-config5/vmmon-only/driver-2.6.11.2' make[1]: Leaving
> directory `/tmp/vmware-config5/vmmon-only' make: Leaving directory
> `/tmp/vmware-config5/vmmon-only' Unable to make a vmmon module that can be
> loaded in the running kernel: insmod: error inserting
> '/tmp/vmware-config5/vmmon.o': -1 Invalid module format
> There is probably a slight difference in the kernel configuration between
> the
> set of C header files you specified and your running kernel.  You may want
> to
> rebuild a kernel based on that directory, or specify another directory.
> 
> For more information on how to troubleshoot module-related problems,
> please visit our Web site at
> "http://www.vmware.com/download/modules/modules.html" and
>
"http://www.vmware.com/support/reference/linux/prebuilt_modules_linux.html".
> 
> Execution aborted.
>
----------------------------------------------------------------------------------
> V tomto případě je mi divné, že program kompiluje modul s příponou .o, což
> je modul pro řadu 2.4.x. Zkoušel jsem modul kompilovat ručně jako .ko a
> zavést a on fungoval. Jenže zrovna ten vmware-config je potřeba úspěšně
> dokončit, i když mu ten modul sám zkompiluju :(
>
----------------------------------------------------------------------------------
> root na KENNY:/etc# /usr/local/share/lufs/prepmod
> + /sbin/modprobe lufs 2>/dev/null
> Preparing LUFS kernel module... Run /usr/local/share/lufs/prepmod if
> problems occur.
> Running kernel version: 2.6.11.2 (base version 2.6.11.2)
> Destination module directory: /lib/modules/2.6.11.2/kernel/fs/lufs
> Using kernel sources: /lib/modules/2.6.11.2/build
> + set -e; /bin/mkdir -p `dirname /usr/local/var/lib/lufs/lufs.ko`; /bin/rm
> -f /usr/local/var/lib/lufs/lufs.ko; make -C /lib/modules/2.6.11.2/build
> SUBDIRS="/usr/local/share/lufs/2.6" modules EXTRA_CFLAGS=""; /bin/mv
> -f /usr/local/share/lufs/2.6/lufs.ko /usr/local/var/lib/lufs/lufs.ko;
> /bin/rm -f /usr/local/share/lufs/2.6/proc.o
> /usr/local/share/lufs/2.6/.proc.o.flags
> /usr/local/share/lufs/2.6/.proc.o.cmd /usr/local/share/lufs/2.6/inode.o
> /usr/local/share/lufs/2.6/.inode.o.flags
> /usr/local/share/lufs/2.6/.inode.o.cmd /usr/local/share/lufs/2.6/dir.o
> /usr/local/share/lufs/2.6/.dir.o.flags
> /usr/local/share/lufs/2.6/.dir.o.cmd /usr/local/share/lufs/2.6/file.o
> /usr/local/share/lufs/2.6/.file.o.flags
> /usr/local/share/lufs/2.6/.file.o.cmd /usr/local/share/lufs/2.6/symlink.o
> /usr/local/share/lufs/2.6/.symlink.o.flags
> /usr/local/share/lufs/2.6/.symlink.o.cmd
> /usr/local/share/lufs/2.6/lufs.mod.o
> /usr/local/share/lufs/2.6/.lufs.mod.o.flags
> /usr/local/share/lufs/2.6/.lufs.mod.o.cmd /usr/local/share/lufs/2.6/lufs.o
> /usr/local/share/lufs/2.6/.lufs.o.flags
> /usr/local/share/lufs/2.6/.lufs.o.cmd /usr/local/share/lufs/2.6/lufs.mod.c
> /usr/local/share/lufs/2.6/.lufs.ko.cmd; make: Entering directory
> `/usr/src/linux-2.6.11.2'
>   CC [M]  /usr/local/share/lufs/2.6/dir.o
>   CC [M]  /usr/local/share/lufs/2.6/file.o
>   CC [M]  /usr/local/share/lufs/2.6/inode.o
>   CC [M]  /usr/local/share/lufs/2.6/proc.o
>   CC [M]  /usr/local/share/lufs/2.6/symlink.o
>   LD [M]  /usr/local/share/lufs/2.6/lufs.o
>   Building modules, stage 2.
>   MODPOST
> *** Warning: "kill_proc_info" [/usr/local/share/lufs/2.6/lufs.ko]
> undefined!
>   CC      /usr/local/share/lufs/2.6/lufs.mod.o
>   LD [M]  /usr/local/share/lufs/2.6/lufs.ko
> make: Leaving directory `/usr/src/linux-2.6.11.2'
> + /bin/rm -rf /lib/modules/2.6.11.2/kernel/fs/lufs; /bin/mkdir
> -p /lib/modules/2.6.11.2/kernel/fs/lufs; /bin/ln
> -s /usr/local/var/lib/lufs/lufs.ko
> /lib/modules/2.6.11.2/kernel/fs/lufs/lufs.ko + /sbin/rmmod lufs
> 2>/dev/null; /sbin/insmod /lib/modules/2.6.11.2/kernel/fs/lufs/lufs.ko
> 2>/dev/null
> Failed to prepare lufs.ko module for your Linux kernel 2.6.11.2.
> Detected Linux kernel sources "/lib/modules/2.6.11.2/build" do not appear
> to be valid.
> Please install kernel-source-x.y.z.i386.rpm or
> kernel-headers_x.y.z_i386.deb.
> The following directory paths were search (first existing directory used):
>                 /lib/modules/2.6.11.2/build
>                 /usr/src/kernel-headers-2.6.11.2
>                 /usr/src/linux-2.6.11.2
>                 /usr/src/linux-2.6.11.2
>                 /usr/src/linux
>                 /usr/src/kernel-source-2.6.11.2
>  at /usr/local/share/lufs/prepmod line 181
>
---------------------------------------------------------------------------------------
> A o tomto už vůbec nevim, co si mám myslet. Možná jsou to jen náhody, ale
> silně podezírám include.
> 
> Díky za jakýkoliv nápad.
> 
> Jakub Kocourek



Další informace o konferenci Linux