Our product software is still using old Red Hat(RH) version 5.1, 2.6.32 kernel. We install our software as an iso CD through USB 2.0 CDROM. Our hardware was so far was having only USB 2.0 ports. We have got new hardware, which has only USB 3.0 ports.

Unfortunately RH 5/2.6.32 don't have USB 3 (xHCI) USB host adapter emulation support. It's available only from RH 7.

As a workaround, I enabled xhci in kernel and wanted to added the xhci.ko in initrd.img modules directory and also updated module-info, modules.alias, modules.dep, pci.ids accordingly. Created the iso with the new initrd.img, but I don't see any difference in install logs like xhci loaded, etc.

I found out init and /sbin/loader are the two guys loading the modules, and realized I have to make change "say insmod xhci.ko". Unfortunately those files are ELF files and not script files like mentioned by others in web searches.

With further research, I found out their source file is available in anaconda installer. I am not able to find the source of this anaconda installer anywhere.

I have 2 questions:

  1. How do people using old kernels/distribution still support new hardware? initrd.img's init and /sbin/loader are ELF files. Is there a way to load new driver modules without changing those init/loader files?

  2. Is modifying the source of anaconda the only option? Where I can find the source?


You cannot just copy a kernel module from a newer kernel version to a system using an older kernel. Sometimes you can use an older driver module with a newer kernel (with certain limitations) but not vice versa.

And the lack of USB 3 support is only the first of the problems you're likely to encounter: you might find that the old 5.1 kernel won't even support the storage controller on the new hardware, so the RHEL 5.1 installer would fail to see any disks to install onto.

  1. How do people using old kernels/distribution still support new hardware?


You install a version of OS that supports the actual physical hardware, then a virtualization layer that can provide an emulated version of older hardware (say, USB 2 controller, storage controller and a virtual CDROM drive). Then install the older version of the OS onto a virtual machine.

Sure, the virtualization will cause some overhead, but since you'll be running an 11 years old OS, the modern hardware should have so much better performance that you can still do all the things you could do with RHEL 5.1 on bare metal 11 years ago.

And unless your production software explicitly requires RHEL 5.1 only, please try using RHEL 5.11 instead. RedHat has kept the userspace ABI stable during the entire 5.x lifecycle: that's the entire point of an enterprise Linux distribution. Unless your production software includes custom kernel modules, going to a higher minor release should be no problem at all.

By going from 5.1 to 5.11, you gain 7 year's worth of security and other bugfixes.

If your production software needs to be accessible from the internet, still using 5.11 is already bad enough in terms of information security; explicitly installing a new RHEL 5.1 today for production use would be just irresponsible.

  1. Is modifying the source of anaconda the only option? Where I can find the source?

If you boot the installer with a dd boot option, it will prompt for a "driver disk". This can be a floppy, CD or any other supported media containing extra driver modules. The anaconda installer would then automatically load the extra modules and use them as part of the installation.

  • Thanks for your detailed suggestions. I haven't copied the xhci ko from newer kernel, I just enabled the xhci support, and got the ko from the same kernel version and added in initrd modules. So storage controller also would be required for the USB 3.0 support ? Will enabling a driver for it to works. Sorry, for sticking to the same kernel, its a custom changed kernel to suit the product needs, so the virtualization will not suit our product. dd boot option looks like a good option, will try and update. Thanks again for the suggestions – santhosh kumar Jul 9 '19 at 9:11
  • No, you would need the XHCI driver so the system can access your installation source, and the storage controller driver so the system can access the installation target disk. But if you have a customized kernel, then I don't really know what drivers it has available and what it has not. Good luck: dealing with special stuff that is tied to obsolete versions of operating systems tends to be painful. You have my sympathy. – telcoM Jul 9 '19 at 10:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.