Page 1 of 1

Install 32bit glibc without downgrading 64 bit??

Posted: 2020/03/20 19:09:13
by mathog
Installed CentOS 8 on a Powerdge T110 II. This system was a spare which never had CentOS 7 installed on it, so It still needed the BIOS and BMC firmware updated. Dell doesn't list RH 8 as a supported OS, the most recent is RH 7. Nevertheless downloaded these:

Code: Select all

T110-II_BIOS_5R0T5_LN_2.10.0.BIN
T110-II_ESM_Firmware_414G9_LN32_1.95_A00.BIN
The first one installed OK and updated the BIOS with:

Code: Select all

./T110-II_BIOS_5R0T5_LN_2.10.0.BIN
Unfortunately when the 2nd one runs it does this:

Code: Select all

Collecting inventory...
..../bmcie.sh: line 27: ./bmcfwul: No such file or directory
.
Inventory collection failed.
If it is run with --extract the bmcfwul binary appears in that directory. This script was used on some other similar machines which were running CentOS 7. So either this is a 7 vs. 8 difference or there is something package missing that it needs, but it doesn't warn about. It is a 32 bit dynamic binary. Trying to run it interactively gives the same thing:

Code: Select all

file bmcfwul
bmcfwul: sticky ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.2.5, not stripped
./bmcfwul
bash: ./bmcfwul: No such file or directory
This was because it needed 32 bit versions of glibc. Unfortunately...

Code: Select all

dnf install glibc-2.28-72.el8.i686
CentOS-8 - AppStream                                                 14 kB/s | 4.3 kB     00:00    
CentOS-8 - Base                                                      15 kB/s | 3.8 kB     00:00    
CentOS-8 - Extras                                                   2.9 kB/s | 1.5 kB     00:00    
Extra Packages for Enterprise Linux 8 - x86_64                       85 kB/s |  19 kB     00:00    
Dependencies resolved.
====================================================================================================
 Package                       Architecture       Version                  Repository          Size
====================================================================================================
Installing:
 glibc                         i686               2.28-72.el8              BaseOS             3.3 M
Downgrading:
 glibc                         x86_64             2.28-72.el8              BaseOS             3.5 M
 glibc-common                  x86_64             2.28-72.el8              BaseOS             811 k
 glibc-langpack-en             x86_64             2.28-72.el8              BaseOS             818 k

Transaction Summary
====================================================================================================
Install    1 Package
Downgrade  3 Packages

Total download size: 8.4 M
Is this ok [y/N]: y
Downloading Packages:
(1/4): glibc-langpack-en-2.28-72.el8.x86_64.rpm                     3.1 MB/s | 818 kB     00:00    
(2/4): glibc-2.28-72.el8.i686.rpm                                    18 MB/s | 3.3 MB     00:00    
(3/4): glibc-common-2.28-72.el8.x86_64.rpm                          1.8 MB/s | 811 kB     00:00    
(4/4): glibc-2.28-72.el8.x86_64.rpm                                 3.4 MB/s | 3.5 MB     00:01    
----------------------------------------------------------------------------------------------------
Total                                                               3.5 MB/s | 8.4 MB     00:02     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                            1/1 
  Downgrading      : glibc-common-2.28-72.el8.x86_64                                            1/7 
  Downgrading      : glibc-langpack-en-2.28-72.el8.x86_64                                       2/7 
  Running scriptlet: glibc-2.28-72.el8.x86_64                                                   3/7 
  Downgrading      : glibc-2.28-72.el8.x86_64                                                   3/7 
  Running scriptlet: glibc-2.28-72.el8.x86_64                                                   3/7 
  Running scriptlet: glibc-2.28-72.el8.i686                                                     4/7 
  Installing       : glibc-2.28-72.el8.i686                                                     4/7 
  Running scriptlet: glibc-2.28-72.el8.i686                                                     4/7 
  Cleanup          : glibc-2.28-72.el8_1.1.x86_64                                               5/7 
  Cleanup          : glibc-langpack-en-2.28-72.el8_1.1.x86_64                                   6/7 
  Cleanup          : glibc-common-2.28-72.el8_1.1.x86_64                                        7/7 
  Running scriptlet: glibc-common-2.28-72.el8_1.1.x86_64                                        7/7 
  Running scriptlet: glibc-common-2.28-72.el8.x86_64                                            7/7 
  Verifying        : glibc-2.28-72.el8.x86_64                                                   1/7 
  Verifying        : glibc-2.28-72.el8_1.1.x86_64                                               2/7 
  Verifying        : glibc-common-2.28-72.el8.x86_64                                            3/7 
  Verifying        : glibc-common-2.28-72.el8_1.1.x86_64                                        4/7 
  Verifying        : glibc-langpack-en-2.28-72.el8.x86_64                                       5/7 
  Verifying        : glibc-langpack-en-2.28-72.el8_1.1.x86_64                                   6/7 
  Verifying        : glibc-2.28-72.el8.i686                                                     7/7 

Downgraded:
  glibc-2.28-72.el8.x86_64  glibc-common-2.28-72.el8.x86_64  glibc-langpack-en-2.28-72.el8.x86_64 

Installed:
  glibc-2.28-72.el8.i686                                                                            

Complete!
bmcfwul will run now, but before I install the firmware, which requires a reboot, what exactly did those "downgrades" do? The x86_64 packages are still installed. What changed?

Thanks.

Re: Install 32bit glibc without downgrading 64 bit??

Posted: 2020/03/20 19:15:39
by TrevorH
You went from 2.28-72.el8_1.1 to an earlier version. You should yum update to get back to where you were and post whatever the errors are when it fails. Your mirror/repo must be missing the latest i686 package.

Re: Install 32bit glibc without downgrading 64 bit??

Posted: 2020/03/20 20:55:33
by mathog
TrevorH wrote:
2020/03/20 19:15:39
You went from 2.28-72.el8_1.1 to an earlier version. You should yum update to get back to where you were and post whatever the errors are when it fails. Your mirror/repo must be missing the latest i686 package.
Not the repo, I cut and pasted the wrong line from

Code: Select all

dnf provides /lib/libdl.so.2
as there were a couple of matches. "dnf update" fixed it.

Thanks.

Re: Install 32bit glibc without downgrading 64 bit??

Posted: 2020/03/20 21:08:30
by mathog
What is the CentOS 8 equivalent of this?

Code: Select all

compat-libstdc++-33-3.2.3-72.el7.i686
Thanks.

Re: Install 32bit glibc without downgrading 64 bit??

Posted: 2020/03/21 00:46:13
by jlehtone
That package provides 32-bit libstdc++ that was originally supplied with GCC 3.3.
The package exists for compatibility, just to keep old binaries functional.

RH 5 had already GCC 4. The compat-libstdc++-33 could be found from CentOS 5, 6, and 7.
RH 5 appeared about 2007. Do you really have 14+ years old unreplaceable binaries?

Re: Install 32bit glibc without downgrading 64 bit??

Posted: 2020/03/21 17:42:35
by mathog
jlehtone wrote:
2020/03/21 00:46:13
RH 5 had already GCC 4. The compat-libstdc++-33 could be found from CentOS 5, 6, and 7.
RH 5 appeared about 2007. Do you really have 14+ years old unreplaceable binaries?
At least one - see the first post in this thread. This situation isn't that unusual when working with older hardware. The manufacturers tend to stick with firmware loaders based on tried and true, ie very old, programs. These tend to be archaic even when the last firmware update is released, and only become more difficult to use as the years pass.

This machine also has Ubuntu 18.04 LTS as an option, but it couldn't even run the BIOS updater. If push comes to shove I can install Centos 7 on some partition, boot that, install the BMC update, then wipe that partition.

It would be a lot easier to load compat-libstdc++ though. Perhaps the el7 one will install on CentOS 8? Either that or maybe I can copy the needed dynamic library files (and their dependencies, if any) from a CentOS 7 system into a directory, set up LD_LIBRARY_PATH to point to it, and go from there?

Re: Install 32bit glibc without downgrading 64 bit??

Posted: 2020/03/21 18:01:03
by jlehtone
I would try whether yum is willing to install the rpm. If not, I wonder if it is possible to rebuild the rpm from srpm in el8.

Would it be possible to run a el7 container in the el8 system? Probably, but would it have sufficient access to hardware?

Some programs are statically linked monoliths. Nearly independent of the OS. Too bad the hw vendors did not do that.

Re: Install 32bit glibc without downgrading 64 bit??

Posted: 2020/03/23 21:17:10
by mathog
There were only two files in compat-libstdc++-33 (well, a file and a link) and those were copied over to /lib from a CentOS 7 system. But the firmware installer still did not work. In retrospect perhaps all it needed was a reboot or ldconfig. Before that happened though, a couple of other suspects were installed because of the instsvcdrv messages which were appearing, and one or both of these may be needed too.

Code: Select all

dnf install OpenIPMI
dnf install redhat-lsb-core
At that point it was rebooted, and then this ran without problems:

Code: Select all

./T110-II_ESM_Firmware_414G9_LN32_1.95_A00.BIN
However, the BCM won't let anything connect to the shared port. An nmap subnet scan shows the MAC of the shared ethernet interface at the hardcoded IP address, but a port scan of that IP address shows all ports closed, and an https: connection to it times out. This looks like it is probably this non-CentOS issue:

https://blog.le-vert.net/?p=178

So, bottom line, it was possible with way too much effort to upgrade the firmware on this machine under CentOS 8, but the compat-libstdc++-33 files had to come from either an existing CentOS 7 (as here) or by unpacking the corresponding RPM on CentOS 8.

Thank you for all the help.