SlackwareThis Forum is for the discussion of Slackware Linux.
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
I had a very odd experience this evening, and I am starting to wonder if there may have been a mistake made in Slackware current.
I was installing Slackware 10.2 on an AMD K6 laptop I have (I have had Slackware installed on this machine a few times in the past), and got it installed without a problem. I went ahead and compiled 2.6.10 (yes, there is a reason I am using this specific version) and got that installed without any complications.
At this point, I got ready to sync up to Slackware current, something I have done on all of my machines. I followed the protocol to the letter, switching to runlevel 1, and installing glibc before anything else.
Which is where the problem started. After I installed the glibc packages, I went back into runlevel 3 and began the downloads to sync up with current. Unfortunately, as soon as I attempted to install the first package, I realized something went terribly wrong. Using installpkg came back with "Illegal Instruction". I then tried all of the other pkgtool programs, with the same result for all. Throwing a few random commands at the system, I also found a few other programs came back at me with the same error.
Now, I am running the exact same version of the glibc packages on my desktop as I type this. The only thing different between these setups is the CPU. The "Illegal Instruction" error would also seem to indicate a problem with running the glibc library on my CPU.
The bottom line is that the glibc packages should be compiled for i486, but would appear to be optimized for something higher than a K6. I was wondering if anyone else has attempted installing the glibc packages from current on a relatively old CPU and if they had any problems?
I'm not familiar with Slack so someone who is feel free to correct me, but most distros tend to arch optimise glibc as it's one of those packages which do benefit from the optimisation. Make sure you are indeed running the 486 build of glibc.
The AMD K6 is supposed to be i686 compatible. Slackware builds for the i486 architecture, and the compiler flags that Slackware uses for ARCH=i486 have always (?) been
"-O2 -march=i486 -mcpu=i686"
... until december.
Now, the newest glibc package in slackware-current, the one you upgraded to, uses
"-O3 -march=i486 -mtune=i686"
as compiler flags, which is explained in the ChangeLog entry of "Sat Dec 10 23:28:42 CST 2005" for the "d/gcc-3.4.4-i486-2.tgz" package.
This could be the cause of your problems with the K6, but as I am not a compiler guy I can only point out the difference in package builds and not provide you with the answer.
Hopefully others who read this can comment further on my observation.
I don't know if my experience is related, but I have a 400 MHz K6-III+ installed in my first box, having replaced the original Pentium-MMX. I have not tried this since my first failures, but about a year ago I tried compiling the 2.4 kernel specifically for the K6. I wasn't trying to tweak the gnat's ass, just experimenting to learn, but the compile with the K6 option never took. I ended up compiling for a generic i586. I shrugged and went on with life.
Thanks for everyone's response on this. I have since found that my assumption about the build optimization was correct, I was just wrong about the package in question.
The current glibc packages are indeed optimized for i486 as they should be. The package that was giving me the problem was actually bash. I figured this out after booting into a LiveCD and manually replacing the latest glibc packages with their 10.2 counterparts to no avail, and then noticing that you could not login to the machine after the reboot because bash could not be started to give me a prompt.
Now, as for bash being compiled with too high of optimizations, that is embarrassingly enough my own fault. I had compiled the package on my desktop and rync'd the resulting package to my other machines as I have a tendency to do, and simply forgot about the CPU issue. The K6 is supposed to be i686 compatible, but this is not the first i686 compiled binary it has choked on for me.
So, syncing up to Slackware -current did not break the machine, my own package did. That's what I get for foolishly trying to improve on Pat's work.