Ok, this should be a simple one for you guys...
At work, we have this bootable mini-USB drive, that we use to image our desktops. We use this device on over 30 different workstations. Welp, this brand new IBM device we just got in, the imaging process is failing. The reason being, the kernel on the USB image is seeing the drive as a /dev/hda instead of a /dev/sda device. We've seen this in the past, and just had to go into the BIOS and switch things over to a compatiblity mode, or update the kernel a few versions. No luck this time.
To further troubleshoot this issue, we grab an Ubuntu disk and booted into a Live environment, the Ubuntu disk IS seeing the driver properly; /dev/sda. However, our customized kernel is not. I've gone back through the kernel config line by line, and checked that all normal settings for SATA are enabled, however I still must be missing something. I just can't see what it possibly could be. I've tried multiple kernel versions, including the absolute latest. Still no luck.
Anybody have a suggestion, of where/what I can take a look at in the kernel. Ubuntu doesn't look like it is doing anything fancy, and my kernel does work on 30 other workstations. It's just IBM's latest device that is a no-go.
Assuming I understand the problem description
I take it that you boot Linux from an external USB hard drive and that you want all workstations to be imaged to appear to have a /dev/sda so you don't have to enhance your imaging scripts.
The Ubuntu live CD may be confusing the issue, the fact that it sees sda instead of hda may be more the order in which it loads (insmod/modprobe) modules in its initrd than a kernel build options issue.
On some other IBM systems (Intel-based motherboards), sda is activated in the CMOS settings for the IDE controller: "enhanced mode, not backwards compatible", and hda appears with the default "backwards compatble mode". This is the opposite of what you said where you are setting compatibilty mode, you need to disable it to make it act as sda.
I don't use USB drives for imaging, just network (PXE) and bootable CDROMs, so I'm not sure what device your USB drive appears as when you boot. I have found after making a Linux-bootable memory stick that almost all BIOS are buggy and boot from it in low-speed mode; only one Dell desktop BIOS I tried booted from USB in high speed mode. That means a Linux kernel and initrd can take several minutes to boot from low-speed USB, instead of the few seconds it should take in USB high-speed mode. Perhaps that is because BIOS writers don't have any bootable USB devices to test with, since they don't use anything other than Windows, which doesn't boot from USB drives.
Thanks for the explanation...
Thanks for the explanation...and I think I see what you are saying here. Let's just ignore the fact that I'm using a USB bootable device, as the same thing happens using our bootable CD as well.
Regardless, I think you have answered the main question....the reason the Ubuntu CD (kernel) is seeing it as sda (in my mind properly), and our bootable CD and USB device (kernel) is not, is the fact that the Ubuntu CD is loading something up differently. I guess my other question, is what could that have been? There really isn't an "issue" any more, just more so a curiosity...as no matter what I threw at my kernel, I couldn't get it to show the device as sda.
Generic kernel/initrd loading
When you ask "what is [Ubuntu Live CD] loading": when one builds a generic kernel, one goes through "make menuconfig" and sets everything to "m" (build as module) if possible, or "Y" (build statically into Kernel). Other generic decisions: 386 processor (lots of them still in use!). In the initrd, which is a mini root filesystem, one then does some hardware detection (the equivalent of lspci -n to get vendor:device ids) and then loads at least enough support to "mount root filesystem", so you have to load maybe SATA, ATA, SCSI, ext3, reiserfs, etc, whatever is needed to "boot" the system.
I think device is set to PATA/SATA compatibility, it will matter whether we load the (kernel support as a module) SATA support before the ATA support as to whether the device is to run as sda or hda.
The lack of understanding of initrd in relation to kernel is responsible for most of posts to this group (kernel panic -- trying to kill init ...). It is kind of an advanced topic, but one that easily be taught in academic setting, in just a few hours. Except Bill Gates has made sure any Linux-related class got cancelled at last minute, worldwide.