diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 15:32:58 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 15:32:58 -0400 |
| commit | 5cb84ec742fd33f78c8022863fadaa8d0d93e176 (patch) | |
| tree | 1a81ca3665e6153923e40db7b0d988f8573ab59c /static/netbsd/man8/compat_freebsd.8 | |
| parent | a59214f344567c037d5776879bcfc5fcc1d4d5f6 (diff) | |
feat: Added NetBSD man pages
Diffstat (limited to 'static/netbsd/man8/compat_freebsd.8')
| -rw-r--r-- | static/netbsd/man8/compat_freebsd.8 | 419 |
1 files changed, 419 insertions, 0 deletions
diff --git a/static/netbsd/man8/compat_freebsd.8 b/static/netbsd/man8/compat_freebsd.8 new file mode 100644 index 00000000..0205a71a --- /dev/null +++ b/static/netbsd/man8/compat_freebsd.8 @@ -0,0 +1,419 @@ +.\" $NetBSD: compat_freebsd.8,v 1.20 2026/01/02 22:22:22 nia Exp $ +.\" from: compat_linux.8,v 1.1 1995/03/05 23:30:36 fvdl Exp +.\" +.\" Copyright (c) 1995 Frank van der Linden +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" 3. The name of the author may not be used to endorse or promote products +.\" derived from this software without specific prior written permission +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +.\" +.Dd February 10, 2018 +.Dt COMPAT_FREEBSD 8 +.Os +.Sh NAME +.Nm compat_freebsd +.Nd setup procedure for running FreeBSD binaries +.Sh DESCRIPTION +.Bf -symbolic +compat_freebsd is not maintained anymore, and new FreeBSD binaries cannot +be expected to work. +The compat_freebsd feature is available in NetBSD only to support the +FreeBSD tw_cli driver. +.Ef +.Pp +.Nx +supports running +.Fx +binaries. +Most binaries should work, except programs that use +.Fx Ns -specific +features. +These include i386-specific calls, such as syscons utilities. +The +.Fx +compatibility feature is active for kernels compiled +with the +.Dv COMPAT_FREEBSD +option enabled. +.Pp +A lot of programs are dynamically linked. +This means, that you will also need the +.Fx +shared libraries that the program depends on, and the runtime +linker. +Also, you will need to create a +.Dq shadow root +directory for +.Fx +binaries on your +.Nx +system. +This directory is named +.Pa /emul/freebsd . +Any file operations done by +.Fx +programs run under +.Nx +will look in this directory first. +So, if a +.Fx +program opens, for example, +.Pa /etc/passwd , +.Nx +will +first try to open +.Pa /emul/freebsd/etc/passwd , +and if that does not exist open the +.Sq real +.Pa /etc/passwd +file. +It is recommended that you install +.Fx +packages that include configuration files, etc under +.Pa /emul/freebsd , +to avoid naming conflicts with possible +.Nx +counterparts. +Shared libraries should also be installed in the shadow tree. +.Pp +Generally, you will need to look for the shared libraries that +.Fx +binaries depend on only the first few times that you install a +.Fx +program on your +.Nx +system. +After a while, you will have a sufficient set of +.Fx +shared libraries on your system to be able to run newly imported +.Fx +binaries without any extra work. +.Ss Setting up shared libraries +How to get to know which shared libraries +.Fx +binaries need, and where +to get them? Basically, there are 2 possibilities (when following +these instructions: you will need to be root on your +.Nx +system to do the necessary installation steps). +.Pp +.Bl -enum -compact +.It +You have access to a +.Fx +system. +In this case you can temporarily install the binary there, see what +shared libraries it needs, and copy them to your +.Nx +system. +Example: you have just ftp-ed the +.Fx +binary of SimCity. +Put it on the +.Fx +system you have access to, and check which shared libraries it +needs by running +.Sq ldd sim : +.Bd -literal -offset indent +me@freebsd% ldd /usr/local/lib/SimCity/res/sim +/usr/local/lib/SimCity/res/sim: + -lXext.6 => /usr/X11R6/lib/libXext.so.6.0 (0x100c1000) + -lX11.6 => /usr/X11R6/lib/libX11.so.6.0 (0x100c9000) + -lc.2 => /usr/lib/libc.so.2.1 (0x10144000) + -lm.2 => /usr/lib/libm.so.2.0 (0x101a7000) + -lgcc.261 => /usr/lib/libgcc.so.261.0 (0x101bf000) +.Ed +.Pp +You would need go get all the files from the last column, and +put them under +.Pa /emul/freebsd . +This means you eventually have these files on your +.Nx +system: +.Bl -item -compact +.It +.Pa /emul/freebsd/usr/X11R6/lib/libXext.so.6.0 +.It +.Pa /emul/freebsd/usr/X11R6/lib/libX11.so.6.0 +.It +.Pa /emul/freebsd/usr/lib/libc.so.2.1 +.It +.Pa /emul/freebsd/usr/lib/libm.so.2.0 +.It +.Pa /emul/freebsd/usr/lib/libgcc.so.261.0 +.El +.Pp +Note that if you already have a +.Fx +shared library with a matching major revision number to the first +column of the +.Ic ldd +output, you won't need to copy the file named +in the last column to your system, the one you already have should +work. +It is advisable to copy the shared library anyway if it is a newer version, +though. +You can remove the old one. +So, if you have these libraries on your system: +.Bl -item -compact +.It +.Pa /emul/freebsd/usr/lib/libc.so.2.0 +.El +.Pp +and you find that the ldd output for a new binary you want to +install is: +.Bd -literal +\-lc.2 => /usr/lib/libc.so.2.1 (0x10144000) +.Ed +.Pp +You won't need to worry about copying +.Pa /usr/lib/libc.so.2.1 +too, because the program should work fine with the slightly older version. +You can decide to replace the libc.so anyway, and that should leave +you with: +.Bl -item -compact +.It +.Pa /emul/freebsd/usr/lib/libc.so.2.1 +.El +.Pp +Finally, you must make sure that you have the +.Fx +runtime linker and its config files on your system. +You should copy these files from the +.Fx +system to their appropriate place on your +.Nx +system (in the +.Pa /emul/freebsd +tree): +.Bl -item -compact +.It +.Pa usr/libexec/ld.so +.It +.Pa var/run/ld.so.hints +.El +.It +You don't have access to a +.Fx +system. +In that case, you should get the extra files you need from various ftp sites. +Information on where to look for the various files is appended +below. +For now, let's assume you know where to get the files. +.Pp +Retrieve the following files (from _one_ ftp site to avoid +any version mismatches), and install them under +.Pa /emul/freebsd +(i.e. +.Pa foo/bar +is installed as +.Pa /emul/freebsd/foo/bar ) : +.Bl -item -compact +.It +.Pa sbin/ldconfig +.It +.Pa usr/bin/ldd +.It +.Pa usr/lib/libc.so.x.y.z +.It +.Pa usr/libexec/ld.so +.El +.Pp +.Ic ldconfig +and +.Ic ldd +don't necessarily need to be under +.Pa /emul/freebsd , +you can install them elsewhere in the system too. +Just make sure they don't conflict with their +.Nx +counterparts. +A good idea would be to install them in +.Pa /usr/local/bin +as +.Ic ldconfig-freebsd +and +.Ic ldd-freebsd . +.Pp +Run the +.Fx +ldconfig program with directory arguments in which the +.Fx +runtime linker should look for shared libs. +.Pa /usr/lib +are standard, you could run like the following: +.Bd -literal -offset indent +me@netbsd% mkdir -p /emul/freebsd/var/run +me@netbsd% touch /emul/freebsd/var/run/ld.so.hints +me@netbsd% ldconfig-freebsd /usr/X11R6/lib /usr/local/lib +.Ed +.Pp +Note that argument directories of ldconfig are +mapped to +.Pa /emul/freebsd/XXXX +by +.Nx Ns 's +compat code, and should exist as such on your system. +Make sure +.Pa /emul/freebsd/var/run/ld.so.hints +is existing when you run +.Fx Ns 's +ldconfig, if not, you may lose +.Nx Ns 's +.Pa /var/run/ld.so.hints . +.Fx +.Ic ldconfig +should be statically +linked, so it doesn't need any shared libraries by itself. +It will create the file +.Pa /emul/freebsd/var/run/ld.so.hints . +You should rerun the +.Fx +version of the ldconfig program each time you add a new shared library. +.Pp +You should now be set up for +.Fx +binaries which only need a shared libc. +You can test this by running the +.Fx +.Ic ldd +on itself. +Suppose that you have it installed as +.Ic ldd-freebsd , +it should produce something like: +.Bd -literal -offset indent +me@netbsd% ldd-freebsd `which ldd-freebsd` +/usr/local/bin/ldd-freebsd: + -lc.2 => /usr/lib/libc.so.2.1 (0x1001a000) +.Ed +.Pp +This being done, you are ready to install new +.Fx +binaries. +Whenever you install a new +.Fx +program, you should check if it needs shared libraries, and if so, +whether you have them installed in the +.Pa /emul/freebsd +tree. +To do this, you run the +.Fx +version +.Ic ldd +on the new program, and watch its output. +.Ic ldd +(see also the manual page for +.Xr ldd 1 ) +will print a list +of shared libraries that the program depends on, in the +form -l<majorname> => <fullname>. +.Pp +If it prints +.Dq not found +instead of <fullname> it means that you need an extra library. +Which library this is, is shown +in <majorname>, which will be of the form XXXX.<N> +You will need to find a libXXXX.so.<N>.<mm> on a +.Fx +ftp site, and install it on your system. +The XXXX (name) and <N> (major +revision number) should match; the minor number(s) <mm> are +less important, though it is advised to take the most +recent version. +.Pp +.It +In some cases, +.Fx +binary needs access to certain device file. +For example, +.Fx +X server software needs +.Fx +.Pa /dev/ttyv0 +for ioctls. +In this case, create a symbolic link from +.Pa /emul/freebsd/dev/ttyv0 +to a +.Xr wscons 4 +device file like +.Pa /dev/ttyE0 . +You will need to have at least +.Cd options WSDISPLAY_COMPAT_SYSCONS +and probably also +.Cd options WSDISPLAY_COMPAT_USL +in your kernel (see +.Xr options 4 +and +.Xr wscons 4 ) . +.El +.Ss Finding the necessary files +.Em Note : +the information below is valid as of the time this +document was written (June, 1995), but certain details +such as names of ftp sites, directories and distribution names +may have changed by the time you read this. +.Pp +The +.Fx +distribution is available on a lot of ftp sites. +Sometimes the files are unpacked, and you can get the individual +files you need, but mostly they are stored in distribution sets, +usually consisting of subdirectories with gzipped tar files in them. +The ftp site for the distributions is: +.Lk ftp://ftp.FreeBSD.org/pub/FreeBSD +.Pp +This distribution consists of a number of tar-ed and gzipped files, +Normally, they're controlled by an install program, but you can +retrieve files +.Dq by hand +too. +The way to look something up is to retrieve all the files in the +distribution, and ``tar ztvf'' through them for the file you need. +Here is an example of a list of files that you might need. +.Bd -literal -offset indent +Needed Files + +ld.so 2.0-RELEASE/bindist/bindist.?? +ldconfig 2.0-RELEASE/bindist/bindist.?? +ldd 2.0-RELEASE/bindist/bindist.?? +libc.so.2 2.0-RELEASE/bindist/bindist.?? +libX11.so.6.0 2.0-RELEASE/XFree86-3.1/XFree86-3.1-bin.tar.gz +libX11.so.6.0 XFree86-3.1.1/X311bin.tgz +libXt.so.6.0 2.0-RELEASE/XFree86-3.1/XFree86-3.1-bin.tar.gz +libXt.so.6.0 XFree86-3.1.1/X311bin.tgz +.\" libX11.so.3 oldlibs +.\" libXt.so.3 oldlibs +.Ed +.Pp +The files called +.Dq bindist.?? +are tar-ed, gzipped and split, so you can extract contents by +.Dq cat bindist.?? | tar zpxf - . +.Pp +Extract the files from these gzipped tarfiles in your +.Pa /emul/freebsd +directory (possibly omitting or afterwards removing files you don't +need), and you are done. +.Sh BUGS +The information about +.Fx +distributions may become outdated. |
