This is a revised and hopefully better version of my initial post. It was morning, my thinking cap was missing and only one cup of coffee and I had to leave for work. All work no pay.
Okay I attempted to to do a recovery with Slackware 14.2 in a virtual machine. This was a fully updated install via slackpkg before starting. I reproduced the problem created by the OP. This is what happened.
The OP properly followed the directions for installing multilib, with one major problem, the installed system was Slackware (x86) not Slackware64 (x86_64). The first part of the install takes care of the compat32-tools, gcc and glibc. Glibc was the failure point.
The compat32-tools and gcc* packages were all installed without issues. The problem was at the installation of glibc. The doinst.sh install script is what caused the problem. Quoting from doinst.sh
Quote:
# Swap glibc on the fly.
#
# If we're on a running system we have to handle this _very_ carefully. :-)
# The tricks involved here get trickier every time...
|
Well it's expecting to do this on a x86_64 install not a x86 install Installing on a x86 system is an unanticipated and not designed for "trick". After all the purpose of multilib is to add 32-bit capability to a Slackware64 install.
The install was left totally unusable. Nothing worked, as the OP pointed out, basic commands no longer worked. The system could find anything due to the library changes not meant for an x86 install. The machine had to be turned off or reset. Rebooting resulted in: "Kernel panic - not syncing" No working init found." Attempting to boot from the DVD and passing parameters to boot: results in the same. After booting to the DVD you can mount and navigate the install, but you cannot chroot to the mounted drive to do anything useful.
In my original post, I stated the OP could recover by doing an install from the DVD and skip the formatting part. As Didier Spaier pointed out, this "would leave all broken software in the system alongside the good one and result in a broken packages database". Here is why:
Take the x86 install, that I am fairly certain that OP meant to install as a x86_64 system. Here we have a system full of x86 packages. If Slackware64 is installed on top of Slackware we will end up with two sets of packages installed one x86 and one x86_64. If Slackware is installed on top of Slackware, it won't be as bad, but you will end up with two sets of packages for all those patched (_slack14.2 tag) packages. Bottom line, There is only one fix option and that is to format and install. If you need to recover to access data to save I will describe that later.
How to tell if the install is x86 or x64_86. Well in the root of the DVD, one side will have a /slackware directory, the other side will have a /slackware64 directory. When you boot to the DVD the first screen will also tell you what you are about to install.
Welcome to
Slackware64 version 14.2 (Linux kernel 4.4.14)! = x86_64 or 64-bit
Welcome to
Slackware version 14.2 (Linux kernel 4.4.14)! = x86 or 32-bit
Advanced. Not guarantee to work. It does in my test install, ran it though several times no issues.
Here is the recover option for the x86 install. I tested it, seem to be okay with no problems so far. Boot to the DVD, mount the affected partition to /mnt on the DVD. Run pkgtool and remove the following using "Remove packages that are currently installed": (Do not remove any other packages.)
compat32-tools-3.7-noarch-19alien.tgz
gcc-7.3.0_multilib-x86_64-2alien.txz
gcc-brig-7.3.0_multilib-x86_64-2alien.txz
gcc-g++-7.3.0_multilib-x86_64-2alien.txz
gcc-gfortran-7.3.0_multilib-x86_64-2alien.txz
gcc-gnat-7.3.0_multilib-x86_64-2alien.txz
gcc-go-7.3.0_multilib-x86_64-2alien.txz
gcc-objc-7.3.0_multilib-x86_64-2alien.txz
glibc-2.27_multilib-x86_64-2alien.txz
<<< This package may or may not be installed.
After that is done, exit pkgtool, umount /mnt and run setup. Set the TARGET to the affected partition. Do not format this partition. At the PACKAGE SERIES SELECTION screen, deselect all series except for D and L. Next use menu or expert to pick which packages to install. With the D set,
deselect everything except the gcc* packages. With the L set,
deselect everything except for glibc (a bit tedious do this but it's needed). This will install only those packages. You can probably skip the CONFIGURE THE SYSTEM screen but it doesn't hurt. I tried it both ways.
Now reboot to the hard disk. Now you can use slackpkg to restore the correct packages. Do not run slackpkg update, you don't want to add more packages to the mix.
All of the affected gcc and glibc packages have been patched. So the will be two version of each on the system right now. The one just installed and the one already there (_slack14.2). The best way to handle this is remove the patches. One would think the opposite, but the last package install was the version from the DVD. Do the following:
# slackpkg remove gcc
Then
deselect the non patched pacakges (with out the _slack14.2 tag) to remove them. Only the _slack14.2 packages should be selected for removal.
# slackpkg remove glibc
Be careful here,
deselect everything except the glibc-2.23 with the _slack14.2 tag. Only one package should be selected. The glibc-2.23 with the _slack14.2 tag.
# slackpkg upgrade-all
This should show you all gcc* the packages and glibc package to upgrade.
Once this is done the system has been recovered.