| Summary: | Unable to install driver rpms from driver update disk iso at boot time | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | Red Hat Enterprise Linux 5 | Reporter: | Dave Wagner <qlogic-redhat-ext> | ||||||||||||||||
| Component: | Driver Update Disk | Assignee: | Jiri Benc <jbenc> | ||||||||||||||||
| Status: | CLOSED NOTABUG | QA Contact: | Cui Chun <ccui> | ||||||||||||||||
| Severity: | high | Docs Contact: | |||||||||||||||||
| Priority: | unspecified | ||||||||||||||||||
| Version: | 5.6 | CC: | kdube, lalit.chandivade, nilesh.javali, qcai, ravi.anand, sarang.radke | ||||||||||||||||
| Target Milestone: | rc | Keywords: | Reopened | ||||||||||||||||
| Target Release: | --- | ||||||||||||||||||
| Hardware: | All | ||||||||||||||||||
| OS: | Linux | ||||||||||||||||||
| Whiteboard: | |||||||||||||||||||
| Fixed In Version: | Doc Type: | Bug Fix | |||||||||||||||||
| Doc Text: | Story Points: | --- | |||||||||||||||||
| Clone Of: | Environment: | ||||||||||||||||||
| Last Closed: | 2012-10-22 13:55:54 UTC | Type: | --- | ||||||||||||||||
| Regression: | --- | Mount Type: | --- | ||||||||||||||||
| Documentation: | --- | CRM: | |||||||||||||||||
| Verified Versions: | Category: | --- | |||||||||||||||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||||||||||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||||||||||||||
| Attachments: |
|
||||||||||||||||||
|
Description
Dave Wagner
2011-07-20 09:55:05 UTC
What kernel version do you build the ISO against? Do you have a pointer for dd.iso and rpms that we can have a try? Created attachment 514198 [details]
Driver update disk iso for RHEL5.6 kernel version 2.6.18-238.el5
it's good to try to install the rpm manually to see if it goes through:
[root@deb mnt]# rpm -ivh ./rpms/2.6.18-238.el5/x86_64/kmod-qla2xxx-8.03.03.15.05.06-1.1.x86_64.rpm
error: Failed dependencies:
ksym(kobject_uevent_env) = 7199b58c is needed by kmod-qla2xxx-8.03.03.15.05.06-1.1.x86_64
ksym(pci_get_domain_bus_and_slot) = 8459944e is needed by kmod-qla2xxx-8.03.03.15.05.06-1.1.x86_64
You need to use the greylist feature of the ddiskit to omit those
2 symbols to become rpm dependency.
Basically the issue happens when the module needs a symbol,
which is not white listed:
- when making the rpm for the driver, each extern symbol, that the
driver uses is put to the "Requires" section
- later, when you install the rpm, the requires section is run against
the white list to check all the extern symbols match what the kernel
provides
- so if the needed extern symbol is not in white list, the installation
fails on the above check
We bypass this during the rpm assembly time by filtering out unwanted
symbols -> symbols that should have been in white list, but are not
-> grey symbols ;)
As for ddiskit implementation, it's enough to provide file called
symbols.greylist, that have one grey symbol per line.
jirka
please let me know if you need more info, I'll close this within a week if I dont hear from you Jiri, I will update by 11/11 if the symbols.greylist would work for us or not. Thanks, Lalit. Jiri, I built the driver update iso on a fresh installed RHEL5.6 system. Then installed the rpm from the iso manually to check if goes through as mentioned in #comment3. It installed fine without any kernel symbol dependency failure. Hence I proceeded further to use the iso during BFS installation and see the original issue reported i.e the qla2xxx.ko is installed from modules.cgz in the iso vs the rpm installation. I am expecting the kmod-qla2xxx rpm from the iso to get installed after using the driver update iso. Let me know if this is correct. Thanks, Nilesh Created attachment 533053 [details]
New qla2xxx driver update iso
Attaching the driver update iso with which the kmod-qla2xxx rpm is installed manually without any ksym dependency failure.
(In reply to comment #6) > Jiri, > > I built the driver update iso on a fresh installed RHEL5.6 system. > Then installed the rpm from the iso manually to check if goes through as > mentioned in #comment3. It installed fine without any kernel symbol dependency > failure. Hence I proceeded further to use the iso during BFS installation and > see the original issue reported i.e the qla2xxx.ko is installed from > modules.cgz in the iso vs the rpm installation. I am expecting the kmod-qla2xxx > rpm from the iso to get installed after using the driver update iso. Let me > know if this is correct. oops, missed t his comment.. but it looks like it works for you the rpm from the ISO should be installed after you used the ISO I'll close this as NOTABUG if I dont hear from you, please put NEEDINFO state if you make a comment, so there's better chance I dont miss it next time ;) thanks (In reply to comment #8) > (In reply to comment #6) > > Jiri, > > > > I built the driver update iso on a fresh installed RHEL5.6 system. > > Then installed the rpm from the iso manually to check if goes through as > > mentioned in #comment3. It installed fine without any kernel symbol dependency > > failure. Hence I proceeded further to use the iso during BFS installation and > > see the original issue reported i.e the qla2xxx.ko is installed from > > modules.cgz in the iso vs the rpm installation. I am expecting the kmod-qla2xxx > > rpm from the iso to get installed after using the driver update iso. Let me > > know if this is correct. > > oops, missed t his comment.. but it looks like it works for you > the rpm from the ISO should be installed after you used the ISO That's what is not working. The rpm from the ISO does not install. > That's what is not working. The rpm from the ISO does not install.
Your rpms do not contain dud-qla2xxx... provides, which makes anaconda
fail to find the rpm.
The reason is probably that your ddiskit qla2xxx directory does not contain
updated kmotool from tmpl/new/rpm/SOURCES/kmodtool, could you please check?
If thats not the case, please attach your whole ddiskit tarball you use, thanks
closing as NOTABUG for no feedback, please reopen with data requested if needed (In reply to comment #11) > closing as NOTABUG for no feedback, please reopen with data requested > if needed Jiri, Sorry for the delayed response. I tried using the correct Provides field within the kmodtool and still see the issue. Please suggest how to re-open the bug so that I can attach the complete package that is being used to build the iso. Thanks, Nilesh Created attachment 592919 [details]
DDiskit build package
The attached DDiskit package is used to build the iso on RHEL5.8 i686 system. And it contains qla2xxx.spec which uses kmodtool_qla2xxx and qla2xxx-8.03.07.14.5.6.tar.bz2 sources. The kmodtool_qla2xxx uses the Provides field to include dud-${kmod_name}. I verified this using the rpm --provides command on the generated rpm. Let me know if this is the field that you are expecting to have in the built rpm. The qla2xxx module still gets loaded from modules.cgz instead of the rpm. Thanks, Nilesh I've just tried to build ISO image from the ddiskit sources from comment 13 (with added -V OEMDRV parameter to mkisofs as the only change) and the result works perfectly for me. What do you mean by "[t]he qla2xxx module still gets loaded from modules.cgz instead of the rpm"? Do you mean "from modules.cgz from the installation media instead of modules.cgz from the driver disk"? If so, could you please attach the built ISO image and anaconda.log? (Accessible as /tmp/anaconda.log during the installation; you don't have to perform the whole installation, grabbing the file after you specified the driver disk etc. is enough.) Is this still an issue? If so, could you please provide the data according to comment 15? Thanks! Can you please specify where to use -V OEMDRV parameter to mkisofs. I checked adding the parameter in Build.rules as below, 123 diskiso: disk images cleandiskiso 124 @echo -e "\nBuilding ISO image..." 125 @mkisofs -R -o -V OEMDRV images/dd.iso disk >/dev/null 2>&1 Are you suggesting the same change. If yes, then this gives iso build errors, Building ISO image... make: *** [diskiso] Error 2 Let me know if I'm missing anything. Thanks, Nilesh (In reply to comment #17) > 125 @mkisofs -R -o -V OEMDRV images/dd.iso disk >/dev/null 2>&1 Please do not put the parameter in the middle of "-o images/dd.iso". The correct command line is: @mkisofs -R -V OEMDRV -o images/dd.iso disk >/dev/null 2>&1 In any case, this is just for convenience (see RHEL 5 Installation Guide, section 7.3.1), it is not needed and probably won't solve the problem. Please explain what you mean by "[t]he qla2xxx module still gets loaded from modules.cgz instead of the rpm". Do you mean "from modules.cgz from the installation media instead of modules.cgz from the driver disk"? If so, could you please attach the built ISO image and anaconda.log? (Accessible as /tmp/anaconda.log during the installation; you don't have to perform the whole installation, grabbing the file after you specified the driver disk etc. is enough.) The discussion here is in context of driver disk and not installation media. Here is the snapshot of driver disk after it is mounted in /mnt, [root@Accord-RHEL5-x86 mnt]# ls -R -1 .: modinfo modules.alias modules.cgz <=== qla2xxx module gets loaded from here modules.dep pcitable rhdd rpms ./rpms: 2.6.18-308.el5 repodata ./rpms/2.6.18-308.el5: i686 ./rpms/2.6.18-308.el5/i686: kmod-qla2xxx-8.03.07.14.5.6-1.1.i686.rpm <== This rpm is not seen installed after installation of OS. kmod-qla2xxx-xen-8.03.07.14.5.6-1.1.i686.rpm ./rpms/repodata: filelists.xml.gz other.xml.gz primary.xml.gz repomd.xml The expected behavior is that the rpms should get installed and the qla2xxx module should get loaded from rpm. Thank you for explaining where you see the problem, this was not clear. However, I also need the second part of my questions answered to be able to help you. Please attach the anaconda.log and the built ISO image. Created attachment 627393 [details]
qla2xxx dd.iso
Please find attached the qla2xxx dd.iso and anaconda.log.
Thanks,
Nilesh
Created attachment 627405 [details]
anaconda log file
Anaconda log file
Created attachment 627605 [details]
Patch for testing
Thanks. I think I found the problem. You're using two symbols that are not on kABI whitelist: pci_get_domain_bus_and_slot and kobject_uevent_env.
I'm attaching a patch to ddiskit to verify this. You'll need to run "make distclean" before you build an image with this patch, or the patch will not have the intended effect.
Please test whether the image built with this patch applied works for you. Please note the patch is for testing purposes only, it circumvents part of kABI checks and as such it could cause problems with kernel security updates and/or with RHEL upgrading, and images built by ddiskit with this patch applied are not intended to be shipped.
The attached patch in comment 23 installed the qla2xxx driver rpm on OS installation. Please get the two symbols submitted for inclusion on the kABI whitelist. RHEL5 driver updates do not support non-whitelisted symbols. |