7.2 Kernel: Version Inconsistency??
![](https://seccdn.libravatar.org/avatar/d09bcfa0e73bd3815a4a73cd8d7e87bb.jpg?s=120&d=mm&r=g)
Greetings all, and especially SuSE builders. I installed the default SuSE kernel when installing 7.2 According to 'uname -r' this is "2.4.4-4GB". I also installed "linux -- the rest of the kernel source". In directory /usr/src/ I have linux -> linux-2.4.4 Under /usr/src/linux-2.4.4 the only files named "version.h" are ./include/i386/math-emu/version.h ./include/pcmcia/version.h neither of which is relevant to what I want to do, which is to compile the VNware modules for vmware-2.0.4 from the VMWare site (the version with the SuSE-7.2 distribution is 2.0.3 which does not support bidirectional parallel port "parport0": in fact vmware bombs out with a kernel OOPS if I try to connect this). Similar if you also install the "sources for the SuSE kernel" under /usr/src/linux-2.4.4.SuSE with the addition of an equally irrelevant "version.h" under SCSI drivers. Under / the only other "version.h" is /usr/include/linux/version.h which tells me that the version is 2.4.3, which is not the version of the installed kernel. And, yes, I have checked that the define #define LINUX_VERSION_CODE 132009 therein converts to hex as 20403 which is the result of evaluating the macro #define KERNEL_VERSION(a,b,c) ((a) << 16) + ((b) <<8) +(c)) with a=2, b=4, c=3. So, QUESTIONS: 1. Does this mean that SuSE has installed a mixture of code for kernel 2.4.3 with code for 2.4.4? 2. Or is the "2.4.3" code which is installed anyway (i.e. whether or not you install "the rest of the linux source code") the same for both versions, so that the "2.4.3" stuff is also valid for the "2.4.4" stuff which is under /usr/src/linux-2.4.4 ? 3. If so, would it then be safe to edit /usr/include/linux/version.h so that it says "2.4.4" instead of "2.4.3" ? Or would this break something? 4. Alternatively, would it be safe to leave it as it is, when compiling modules (as for VMWare-2.0.4) which are to be compiled against kernel version? Or would this mean that the modules would fail because they don't match the kernel version? 5. If (3) would be safe, but (4) would not be safe, and since the default kernel is 2.4.4, then why didn't SuSE fix "version.h" in the first place? 6. If (3) would not be safe, and (4) would not be safe, then what should I do? Put a fake "version.h" for kernel version 2.4.4 under /usr/src/linux/include/linux/ which is where VMWare seems to expect to find it anyway? If not, then what? 7. Could I compile a 2.4.4 kernel (SuSE or non-SuSE) with things as they are where "version.h" is concerned [yes/no]? How about kernel-version-specific modules [yes/no]? 8. Any other related inconsistencies? 9. If you intend to use the SuSE 2.4.4 kernel, then what kernel source packages should be installed, to be sure of getting things right when compiling other kernel-sensitive software (for example, VMware modules)? Or do such inconsistencies mean that you risk failure when you try? Please help. Ted. -------------------------------------------------------------------- E-Mail: (Ted Harding) <Ted.Harding@nessie.mcc.ac.uk> Fax-to-email: +44 (0)870 167 1972 Date: 21-Jul-01 Time: 21:02:58 ------------------------------ XFMail ------------------------------
![](https://seccdn.libravatar.org/avatar/406f6e98c5b18ecd161d103cc5799c45.jpg?s=120&d=mm&r=g)
On Sat, Jul 21, 2001 at 09:02:58PM +0100, Ted Harding wrote:
Greetings all, and especially SuSE builders.
I installed the default SuSE kernel when installing 7.2
According to 'uname -r' this is "2.4.4-4GB".
I also installed "linux -- the rest of the kernel source".
In directory /usr/src/ I have linux -> linux-2.4.4
Under /usr/src/linux-2.4.4 the only files named "version.h" are
./include/i386/math-emu/version.h ./include/pcmcia/version.h
neither of which is relevant to what I want to do, which is to compile the VNware modules for vmware-2.0.4 from the VMWare site
I believe the file /usr/src/linux-2.4.4.SuSE/include/linux/version.h will be created when you do the following: 1. Install the kernel sources. This should create and populate /usr/src/linux-2.4.4.SuSE 2. Create the correct configuration file as follows: make cloneconfig make menuconfig You don't need to change any configuration options while in menuconfig but you do need to save the configuration when you exit. 3. Build the modules: make dep make modules That last step (make modules) will take a long time, but once it is complete vmware will be able to build its modules. The above worked for me -- the VMWare installation went OK, including the building of its modules. NOTE: There is no need to build the kernel nor to install the modules. I suspect that things will be in good enough shape for vmware before the make modules completes, but I did let it run to completion myself. NOTE 2: The above description differs from what SuSE has on its web site. What I have described is simpler and since it doesn't install a self-made kernel you haven't voided your support agreement as you do when following SuSE's directions. -- ____________________________________________________________________ Robert Paulsen paulsen@texas.net
![](https://seccdn.libravatar.org/avatar/2a485c68157d61c3d8844573a98dd4cd.jpg?s=120&d=mm&r=g)
Yes *but* when I followed the directions, vmware runs fine but no sound on the Sb Live 128 I have. So I had to reload the stock SuSE kernel. Now I have vmware and sound :-) /Dee "Robert C. Paulsen Jr." <paulsen@texas.net> wrote:
I believe the file
/usr/src/linux-2.4.4.SuSE/include/linux/version.h
will be created when you do the following:
1. Install the kernel sources. This should create and populate /usr/src/linux-2.4.4.SuSE 2. Create the correct configuration file as follows: make cloneconfig make menuconfig You don't need to change any configuration options while in menuconfig but you do need to save the configuration when you exit. 3. Build the modules: make dep make modules That last step (make modules) will take a long time, but once it is complete vmware will be able to build its modules.
The above worked for me -- the VMWare installation went OK, including the building of its modules.
NOTE: There is no need to build the kernel nor to install the modules. I suspect that things will be in good enough shape for vmware before the make modules completes, but I did let it run to completion myself.
NOTE 2: The above description differs from what SuSE has on its web site. What I have described is simpler and since it doesn't install a self-made kernel you haven't voided your support agreement as you do when following SuSE's directions.
![](https://seccdn.libravatar.org/avatar/d09bcfa0e73bd3815a4a73cd8d7e87bb.jpg?s=120&d=mm&r=g)
On 21-Jul-01 Robert C. Paulsen Jr. wrote:
I believe the file
/usr/src/linux-2.4.4.SuSE/include/linux/version.h
will be created when you do the following:
1. Install the kernel sources. This should create and populate /usr/src/linux-2.4.4.SuSE 2. Create the correct configuration file as follows: make cloneconfig make menuconfig You don't need to change any configuration options while in menuconfig but you do need to save the configuration when you exit. 3. Build the modules: make dep make modules That last step (make modules) will take a long time, but once it is complete vmware will be able to build its modules.
The above worked for me -- the VMWare installation went OK, including the building of its modules.
As you say, the file /usr/src/linux-2.4.4.SuSE/include/linux/version.h does get created somewhere along the line, and VMware configures itself OK. So many thanks, Robert, for your good and clearly-explained hint! It's a pity, after all that (you could almost feel the table vibrating while the modules were being compiled), that the bi-directional parport still doesn't work (still bombing out with kernel Oops) after installing VMWare-2.0.4! And, by the way, I have just spotted where the "real" version.h is: /boot/vmlinuz.version.h #define UTS_RELEASE "2.4.4-4GB" #define LINUX_VERSION_CODE 132100 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) 132100[dec] <-> 20404[hex] and it is an exact copy of this which turns up, at the end of the day, in /usr/src/linux/include/linux/ Well, fancy that! Ted. -------------------------------------------------------------------- E-Mail: (Ted Harding) <Ted.Harding@nessie.mcc.ac.uk> Fax-to-email: +44 (0)870 167 1972 Date: 22-Jul-01 Time: 00:50:40 ------------------------------ XFMail ------------------------------
![](https://seccdn.libravatar.org/avatar/406f6e98c5b18ecd161d103cc5799c45.jpg?s=120&d=mm&r=g)
I left one thing out of my earlier message. I needed to delete the file: /etc/vmware/not_configured at some point -- don't remember exactly when. I think it was just after following the procedure I described and before actually running VMWare. -- ____________________________________________________________________ Robert Paulsen paulsen@texas.net
![](https://seccdn.libravatar.org/avatar/bce881f00c17a1bf997473f19b54e1d4.jpg?s=120&d=mm&r=g)
On Sat, Jul 21, Ted Harding wrote:
Greetings all, and especially SuSE builders.
I installed the default SuSE kernel when installing 7.2
According to 'uname -r' this is "2.4.4-4GB".
I also installed "linux -- the rest of the kernel source".
You don't need he package linux, only "kernel-source". You get the correct version.h file if you do the following: cd /usr/src/linux-2.4.4.SuSE make cloneconfig make include/linux/version.h
Under / the only other "version.h" is /usr/include/linux/version.h
Don't use the header files in /usr/include for kernel modules or similar. This are special header files for glibc and userland binaries, not for the kernel !
1. Does this mean that SuSE has installed a mixture of code for kernel 2.4.3 with code for 2.4.4?
No, you mix userland header files and kernel code.
2. Or is the "2.4.3" code which is installed anyway (i.e. whether or not you install "the rest of the linux source code") the same for both versions, so that the "2.4.3" stuff is also valid for the "2.4.4" stuff which is under /usr/src/linux-2.4.4 ?
Please read the /usr/include/linux/version.h, there are enough comments what you should do and what not.
3. If so, would it then be safe to edit /usr/include/linux/version.h so that it says "2.4.4" instead of "2.4.3" ? Or would this break something?
This would break everything. You really should read the first comments in this file!
default kernel is 2.4.4, then why didn't SuSE fix "version.h" in the first place?
Because you use the wrong file. Thorsten -- Thorsten Kukuk http://www.suse.de/~kukuk/ kukuk@suse.de SuSE GmbH Deutschherrenstr. 15-19 D-90429 Nuernberg -------------------------------------------------------------------- Key fingerprint = A368 676B 5E1B 3E46 CFCE 2D97 F8FD 4E23 56C6 FB4B
participants (4)
-
Dee McKinney
-
Robert C. Paulsen Jr.
-
Ted.Harding@nessie.mcc.ac.uk
-
Thorsten Kukuk