Re: New compat_bsdos.8 Manpage

David Brownlee <[email protected]>
Newsgroups gmane.os.netbsd.documentation,gmane.os.netbsd.ports.x86-64,gmane.os.netbsd.ports.i386
Message-ID <CAGN_6pZwW1Muwqw7e+VaFJm6SyEFcPUqWj3dgqTVGmmBoE44WA@mail.gmail.com>
On Fri, 28 Aug 2020 at 01:10, Dan Plassche <[email protected]> wrote:
>
> Hello,
>
> After recent discussion on the port-amd64 mailing list and some bug fixes this
> year, I would like to propose the new manpage below to document the working
> compatibility with BSDi binaries under NetBSD on i386 and amd64.

Nice - some possible tweaks inline :)

> An additional manpage covering the other 4.3-4.4 BSD derived binaries that work
> on NetBSD under COMPAT_NOMID might also be helpful in the future.  I would be
> interested in continuing to work on compat documentation.

... the compat documentation and anyone having to read it in future
would certainly appreciate that

>
> compat_bsdos(8)         NetBSD System Manager's Manual         compat_bsdos(8)
>
> NAME
>      compat_bsdos -- binary compatibility for BSDi releases
>
> DESCRIPTION
>      The COMPAT_NOMID kernel option provides compatibility with BSDi 1-3

Could s/provides/includes/ as NOMID handles other older binaries

>      a.out(5) binaries on NetBSD/i386 and NetBSD/amd64.  The option is
>      included in the GENERIC kernel on i386, but needs to be enabled along
>      with EXEC_AOUT on amd64.
>
>      Null memory protection must be disabled with the sysctl(7) option
>      vm.user_va0_disable set to 0 for the binaries to run successfully.
>
>      BSD/OS 2.0+ binaries also require an ldconfig(8) configuration or a sym-
>      bolic link pointing to the /emul/bsdos/shlib directory to run outside of
>      a chroot.

It might be nice to provide a little more clarity on this - possibly
something like:

Standard BSD/OS 2.0+ binaries require static shared libraries. These
would typically be installed in /emul/bsdos/shlib under NetBSD, and
access can be provided by one of:
    1. A symlink from /shlib to /emul/bsdos/shlib
    2. ldconfig(8) [[configuration details here :)]]
    3. Setup /emul/bsdos suitable for chroot

Unrelated thought - if the handling of BSDI's binaries from
netbsd32_exec_aout.c::netbsd32_exec_aout_nomid was broken out into a
new bsdos_exec it could setup struct emul to default to the
/emul/bsdos in the same way as compat_linux and similar, plus give a
genuine COMPAT_BSDOS define :-p

>      BSD/OS 4.0 switched to elf binaries that do not run under the compatibil-
>      ity layers currently available on NetBSD.
>
> SEE ALSO
>      options(4), a.out(5), elf(5), sysctl(7), compat_netbsd32(8)
>
> HISTORY
>      BSD/OS (BSD/386) 1.0-1.1 was derived from 4.3BSD-Reno code in the Net/2
>      release.
>
>      BSD/OS 2.0 was based on 4.4BSD-Lite, but introduced new static shared
>      libraries compiled into binary objects under /shlib.  The build system
>      included the shlicc command with the -Bstatic flag that allowed reverting
>      to the standard library archive format.
>
>      OpenBSD 2.2-4.7 included a different compatibility implementation under
>      the COMPAT_BSDOS kernel option.
>
> BUGS
>      BSD/OS compatibility was broken on NetBSD 5-6.
>
>      BSD/OS added SPARC support with release 3.0, but the binaries are incor-
>      rectly recognized and fail as sunos executables on NetBSD/sparc and
>      NetBSD/sparc64.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.