Red Hat Bugzilla – Bug 43759
rebuilding kernel fails when trying to compile aic7xxx_drv.o
Last modified: 2007-04-18 12:33:36 EDT
From Bugzilla Helper:
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0b; Windows NT 5.1; DigExt;
Description of problem:
When trying to rebuild the kernel it fails when trying to compile
aic7xxx_drv.o for the scsi controller. I have a super micro 370dl3
motherboard with a Onboard Adaptec AIC-7892 single channel Ultra3/160 SCSI
controller. I used kgcc to compile redhat 7.1 with the command make
Steps to Reproduce:
1. just load in the scsi low level driver aic7xxx_drv and use the default
parameters. when trying to build a new kernel.
Actual Results: last lines of compile
drivers/scsi/aic7xxx_new/aic7xxx_drv.o(.text+0x118): multiple definition
drivers/scsi/aic7xxx_new/scsi_drv.o(.text+0xa108): first defined here
make: *** [vmlinux] Error 1
Expected Results: It should have continued compiling and made the bzImage
One additional note. I am using the xfs file system by sgi. I do not
think this has any relevance to this particular bug. However I do have to
use the kgcc to compile because of it.
I just tried this, and for me it compiles fine. Maybe there's a bit more
to this than just setting SCSI and aic7xxx from "M" to "Y", so could you
attach your .config?
Also, maybe SGI broke the kernel so please report this problem also to them.
As for using kgcc; we (Red Hat) trust egcs less than gcc 2.96 for building
kernels, and egcs is known to miscompile some codefragments; the kernel tries
to avoid those but I can't guarantee there are none left.
I figured out my problem ... I needed to do a make mrproper first. I ran into
another quirk. In order to make the initrd file I needed to compile aic as a
module however in order to get it to boot the system it needed to be compiled
into the kernel since I boot to a scsi drive. Here is how I solved the problem
in case someone else experiences something similar.
how to build a linux kernel with xfs and scsi drives.
first must build kernel with aic7xxx module support then build with aic
when building kernel run a make mrproper first
then make sure enable xfs support
enable scsi aic7xxx
(this assumes you did a previous build as a module so you can use that
directory to make an
then save and exit
install bzimage to /boot
make modules_install (be sure to rename previous module install before you do
now copy back the old /lib/modules directory with aic as a module
go to /boot
do a mkinitrd /boot/initrd-nameofkernel nameofkernel
it should build the initrd and find the aic module which it needed to work
then go back to the modules directory and but back the modules that you
compiled for the
add new entry to lilo.
do a lilo -t -v to test and make sure there are no problems.
type lilo to commit changes
reboot to new kernel....
Things is, if you build it in your kernel, you don't need a initrd at all,
and if you build it as a module, you can boot BECAUSE of the initrd....