0

I have a very old (8 years!) server which was recently damaged by a power spike when a high-voltage step-down transformer in the building "ceased to be". It will no longer boot from HDD, no way no how. This server was running Slackware 13 and serving up an accounting package written in the PVX language. The whole system is/was 32-bit. I managed to boot the system from USB using Ubuntu 16.04 LTS, manually installed, then started, the various raid software required to bring up one of the arrays, fudged a bunch of symbolic links, restored a few .ssh directories and voila! we have a pseudo-stable machine which has been serving the accounting software in a production environment. I am holding my breath that there's no power outages that outlast the UPS as the whole system is LiveCD.

In the meantime I've set up a new server from the same image used to boot the old machine (16.04 LTS), of course it's 64-bit. I copied over the software and data directories from the old server, all permissions and locations are correct. I initially had issues getting PVX listening daemons to start as they weren't even recognized as executable until I manually added some i386 packages (libc6, libc5, libncurses5, etc. as it needed /lib/ld-linux.so.2). Now the startup scripts will run, the listening daemons are listening, PC clients can connect but they can't log in... an error is returned that another PVX program (LOGON) fails to run. It's odd to me that the "try Ubuntu" LiveCD will run the software just fine, with no modifications whatsoever (i.e. no manual installation of 32-bit packages) but the clean install on the new machine lacks many libraries. Also, on the LiveCD install, there are ~90 libraries in the top level of the /lib directory, whereas on the clean install there's only one: ld-linux.so.2. all other libraries are in /lib/i386-linux-gnu and /lib/x86_64-linux-gnu subdirectories. I could simply generate the appropriate links in /lib which point to files in the i386 and i86_64 dirs, but I'm hesitant to start making a mess...

Any help GREATLY appreciated.

  • 1
    If you have "no qualms about installing every i386 package on the planet" why not simply use a 32-bit image in the first place? – steeldriver Aug 16 '16 at 21:49
  • @steeldriver, I installed the OS on both machines using the same image, the installer doesn't give me an option to install 32-bit on a machine with a 64-bit processor. I never considered this option, I suppose as a last resort I can do a complete re-install but if there's a way to get it working by adding some packages I'd prefer to go about it that way. How would I go about forcing 32-bit installation? Thx. – Dave Spear Aug 17 '16 at 14:29
  • The installers are architecture-specific - you can download a 32-bit ISO from Ubuntu 16.04.1 LTS (Xenial Xerus). I suppose you could try to recursively identify all the needed 32-bit libraries using ldd, objdump etc. but I would not personally go that route. – steeldriver Aug 17 '16 at 14:37
  • Hmmm. Your comment got me thinking that I must have the 64-bit installer. uname -a on both machines confirms that in fact they are both 64-bit installations... so, I've edited my post above to reflect this and ask new questions. Thanks much for your help. – Dave Spear Aug 17 '16 at 18:23
0

You've gotten the first step, getting the 32 bit loader installed (your /lib/ld-linux.so.2 from package libc6-x32), so the ldd output on your 32 bit executable should be reasonable (i.e. not claiming "not a dynamic executable") and you can identify where the program expects to find the libraries, and add the necessary for it. I've not found it too hard to get old 32 bit progs to run that way.

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.