On 11 Mar 2017 at 15:47, ropers wrote: > On 11 March 2017 at 15:18, Stuart Henderson <s...@spacehopper.org> wrote: > > > On 2017/03/10 23:56, ropers wrote: > > > On 10 March 2017 at 01:30, Stuart Henderson <s...@spacehopper.org> > > > wrote: > > > > > > (And unlike Linux, 32-bit OpenBSD binaries won't run on OpenBSD/ > > > amd64) > > > > > > > > > Is there a technical reason for that? > > > I'm not trying to demand anything here; just curious. > > > > > > This is NOT intended to be a "but teh Linux does X, so should we, so > > > why can't we" whine. > > > I'm merely ignorantly interested in a "what are they doing, what's > > > OpenBSD doing" kind of way. > > > > I think that even just adding basic support would be complicated and > > likely error-prone. Is there anything it would actually be useful for? > > > > Personally, I'm really just asking out of technical curiosity. > This is not about whether I'd ever actually want or feel I'd need to run > 32-bit OpenBSD binaries on OpenBSD/amd64. > > Was 32-on-64 compatibility somehow easier to achieve on the Linux side? > Or did they just keep throwing code and more code at the problem because > they felt they really, really had to have this? > It's that kind of idle curiosity. If nobody's interested in explaining or > hearing this explained, then sorry for the noise. > >
If you examine a typical 64-bit Linux installation, you will notice that it contains duplicate sets of most libraries and even many of the drivers -- one x86_64 and the other i586. On disk, the packages for the latter are almost always the exact same ones as those installed on a pure 32-bit Linux. So in essence the 64-bit Linux is like two OS running simultaneously. I am guessing that this is facilitated by the Linux's micro-kernel approach -- in oversimplified terms, their kernel is little more than a traffic cop at a docking terminal and all the drivers and libraries are "modules" communicating through a rather complex but broadly accommodating API that does not discriminate 32-bit vs. 64-bit. In contrast, OpenBSD uses monolithic kernel (and unlike FreeBSD it no longer even supports LKM) where all the communication paths have been streamlined and a decision is made upfront whether they are based on 32-bit or 64-bit architecture.