1. 10
  1.  

  2. 6

    Architecture information in several Linux distributions is confusing to me. ArchLinux states its arch as i686, where lots of packages require SSE instruction set, which is not a part of i686. Running it on an i686-compatible CPU like Pentium 4 involves in getting lots of SIGILL crashes. I wonder if that’s the case with Debian’s i686?

    1. 2

      This is not the case with Debian’s i686. Debian i686 will not require SSE.

    2. 3

      It’s mildly interesting that NetBSD i386 still runs on a 486. Other than a [relatively] ancient and unpatched release of Linux, it’s an option if you don’t fancy cross-compiling the world yourself.

      1. 2

        I thought they had done this a while ago, but I must be wrong. I was under the impression, actually, that all current Linux distributions were targeting i686 and that the i386 marker was just for legacy reasons.

        1. 3

          Linux itself dropped support for 80386 (but not 80486+) several years ago, which might be what you’re thinking of. Most distros don’t support hardware that old regardless, though; Debian is actually quite unusual for supporting Pentiums this late, e.g. Ubuntu requires a Pentium Pro or newer and has since 2010.

          (As of Jessie, Debian actually packages two i386 kernel images, one for 586 (Pentium) and one for 686 (Pentium Pro+). However, having two copies of all packages is unreasonable, and building a separate 586 architecture for the dozen hobbyists using those systems is not a good use of resources.)

          1. 4

            Debian has some info on the progression of their x86 hardware requirements here. They’ve required a 486 or higher since Debian 3.1 (2005), and and a Pentium/586 or higher since Debian 6 (2011). And now a 686+.

            To further confuse things, some distros have also been tuning for more recent processors by default, which is distinct from which architecture is required. Which one a distro is doing sometimes gets misreported (especially on forums). You can pass a more recent architecture to gcc’s -mtune flag than you pass to its -march flag, which will have the effect that it optimizes for the more recent architecture, as far as can be done without emitting any instructions that are illegal on the older one.

            1. 1

              That seems to be it, actually. Thanks for the information!

          2. 1

            Unfortunately, the Edison is a 586. I ran into this problem trying to build Rust on it.

            $ uname -a
            Linux europa.local 3.10.17-yocto-standard-r2 #7 SMP PREEMPT Thu Feb 26 09:57:06 UTC 2015 i686 GNU/Linux