I am trying to address an issue, which I believe I can resolve through a recompile of the Linux Kernel. However, I have run into some road bumps in this process; and having limited exposure to Linux previously obviously does not help. I've been following what documents I can find online, but many just list a set of commands to walk through and don't tell you how to handle these road bumps.
The Problem I am trying to address is one regarding SCSI devices, or rather programs that access these SCSI devices causing the following Kernel Warning Message:
sg_write: data in/out 4204/4204 bytes for SCSI command 0xd--guessing data in;
program java not setting count and/or reply_len properly
These messages are being caused by the IBM ServeRAID agent. Upon investigation, I found that this is not a problem unique to the ServeRAID agent, but that other programs that access SCSI devices also trigger this message. More information on this are at the following pages:
This new message/problem was introduced after linux kernel 2.6.9
IBM and Red Hat claim that these messages are benign, and should just be lived with. However, as per the postings in the above links, they can cause performance issues. For me, these messages occur about every five seconds. I know I can suppress these messages from displaying on the console, but then I will also be suppressing messages that I may want to know about. Also, suppressing these messages from the console doesn't stop them from flooding the logs. Again, I would rather keep the console and logs clean for legitimate warnings and errors.
WHAT I WOULD LIKE TO DO
I would like to recompile the Linux Kernel in the same exact configuration that my current kernel is in, except with a modified sg.c that omits this warning generating code, code that wasn't there in 2.6.9.
Prior to this, I would like to compile the Kernel exactly as I have it now, so I can compare it with the current Kernel files and know that I am indeed compiling it exactly as it is installed.
WHAT I'VE DONE SO FAR
I installed the Development Tools, so I have gcc.
I did a "yum install kernel-devel kernel-headers"
I downloaded kernel-2.6.18-164.11.1.el5.src.rpm
I tried to install this rpm in su, but came up with the following error
error: can not create %sourcedir /usr/src/redhat/SOURCES
I manually created the redhat and SOURCES directory
Tried to install the RPM again - this time it did, however with warnings
"user mockbuild does not exist - using root
group mockbuild does not exist - using root"
I'm not particularly worried about these warnings.
When I was done with this there was a directory /usr/src/SOURCES that was empty that was generated by this process. Don't know if this was the error in the original rpm or what. But I went into /usr/src/redhat/SOURCES and did a
tar -xjvf linux-2.6.18.tar.bz2 -C /usr/src
This created a directory ./linux-2.6.18 in /usr/src.
I went into this directory and tried #make oldconfig
From this, I got an onslaught of warnings: trying to assign nonexistant symbol ...
And then it started asking me about "NEW" options. I find this interesting, because this is supposed to be the same exact version of the kernel that I have now.
CONCERNS AND QUESTIONS
The nonexistent symbol warnings concern me. Not sure if they are expected or not. Do I have the correct directory structure? Are the .patch and some other files that are in /usr/src/redhat/SOURCES part of this? Are they supposed to be in the same directory? Or where are these symbols/modules expected to be?
Most of the tutorial documents I've read assume that you are compiling a new or different version of linux, and that you're just going to drop it into the /boot directory with "make install" and update grub. I would like to have these files separate. The first set so I can compare what I've compiled with the currently installed to see if I indeed compiled the exact same kernel, (and that I have this process down correctly). What do I need to do, modify a make file, change version number or some such to identify the different builds?
...as my experience is limited, I kind of need to be led step by step, and would like to know what each step does, rather than just going through a series of motions.
Thanks for the time and help in advance.
I'm running Red Hat Enterprise Linux 5.4
IBM xSeries 250
4MX RAID Controller
When I installed RHEL 5.4, I chose to install virtualization
The purpose of this server will be to run a Lotus Domino Server
We may also use the server as a file server in the future - to replace our OS/2 file server.
Only other regular software we'll be using - Microlite BackupEdge and IBM's Raid_Agent.