[colug-432] ABI and hardware architecture and OS match-ups

Rick Troth rmt at casita.net
Fri Sep 23 10:54:00 EDT 2016


On 09/23/2016 08:57 AM, Brian Miller wrote:
> Well, personnally, if I were doing something like that for BSD, I would 
> build a script,
>
> pkg install XXXX
> pkg install YYY
>
> because I can't image any software you need that isn't already in their 
> package repositories.  Then maybe a couple of HEREDOCS with the 
> configuration you want.  Why re-engineer something that's already 
> working well?

Thanks for the reply and feedback.

Yeah, I like what you describe.
I've been building-up install/setup scripts for differing platforms in
recent years.
Used to be that "Unix is Unix", but that was never as completely true as
for Linux. But one can reasonably substitute 'pkg install' where we
otherwise do 'zypper in'. (or YUM or APT) So that helps.

The rest gets long. (cut here if TL;DR)

To supplement getting all the comfy packages that I want, there is also
a growing collection of pre-compiled stuff. (see below)

What I still don't quite see, and haven't found in internet searching,
is where certain kernels support common ABIs
<https://en.wikipedia.org/wiki/Application_binary_interface>. For
example, FreeBSD <https://en.wikipedia.org/wiki/FreeBSD> explicitly
supports the Linux ABI. A statically linked Linux executable should run
as-is on FreeBSD
<https://en.wikipedia.org/wiki/FreeBSD#OS_compatibility_layers>. Nice! A
Linux program wanting shared libraries probably also runs (I haven't
tried; the doco I have found hints that it works). But would a program
compiled from source on FreeBSD run on NetBSD? or vice versa?

This requires he same hardware architecture, of course, so it'd be
32-bit PC programs from one operating system running on a different
32-bit PC kernel. Contrast with WINE
<https://en.wikipedia.org/wiki/Wine_%28software%29>, which has to
intercept the Windows system calls and convert them into Linux
equivalents. The pearl I'm after is to _identify which Unix variants_
let you run executables from other compadres _/without/ magical syscall
intercept_.

Side note:
When mainframe Linux was new, I remember some people asking on the forum
how they could run PC Linux executables on it. We're not talking about
HW variants here.

Minix <https://en.wikipedia.org/wiki/MINIX> is an interesting hack. It's
been around for decades and was part of the motivation for Linux. At
some point, Minix embraced the ABI from one of the BSDs (I forget
which), so user-land Minix is now really just user-land *BSD. So you get
the Minix micro-kernel, which is cool, but the shell side is more
"normal". (for varying values of "normal")
Dunno if Minix still supports old Minix programs built for its previous
ABI.

It's not entirely theoretical. I'd like to reduce the number of "left
side" items in the following list-o-platforms:


    Linux-alpha

    Linux-arm (hopefully normalizing "armv6l", "armv7l", and others)
    FreeBSD-arm
    Minix-arm (really)

    Linux-i386 (for all variants of "i486", "i586", and "i686")
    FreeBSD-i386 (is this compatible with next two?)
    OpenBSD-i386 (is this compatible with previous and next?)
    NetBSD-i386 (is this compatible with previous two?)
    Minix-i386
    Solaris-i386
    CYGWIN-i386 (is this compatible with next?)
    MinGW-i386 (is this compatible with previous?)

    Linux-x86_64
    FreeBSD-amd64 (which is "x86_64" for Linux and the others)
    OpenBSD-*64
    NetBSD-*64
    Darwin-x86_64
    Solaris-x86_64
    CYGWIN-x86_64

    Linux-ppc
    AIX-powerpc

    Linux-ppc64

    Linux-ppc64le

    Linux-s390

    Linux-s390x

    Linux-sparc
    Solaris-sparc

    Linux-sparc64
    Solaris-sparc64

    HPUX-ia64 (that's Itanium, 64-bit PC but not compatible w/ 32-bit)
    Linux-ia64



-- R; <><



-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.colug.net/pipermail/colug-432/attachments/20160923/68d525a8/attachment-0001.html 


More information about the colug-432 mailing list