Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/share/man/man8 update information
details: https://anonhg.NetBSD.org/src/rev/b6f8d3820139
branches: trunk
changeset: 1020736:b6f8d3820139
user: nia <nia%NetBSD.org@localhost>
date: Sat Apr 24 07:12:17 2021 +0000
description:
update information
diffstat:
share/man/man8/compat_linux.8 | 478 ++++++-----------------------------------
1 files changed, 69 insertions(+), 409 deletions(-)
diffs (truncated from 550 to 300 lines):
diff -r 6926b32aa9d0 -r b6f8d3820139 share/man/man8/compat_linux.8
--- a/share/man/man8/compat_linux.8 Sat Apr 24 06:45:56 2021 +0000
+++ b/share/man/man8/compat_linux.8 Sat Apr 24 07:12:17 2021 +0000
@@ -1,4 +1,4 @@
-.\" $NetBSD: compat_linux.8,v 1.40 2017/10/02 12:55:10 wiz Exp $
+.\" $NetBSD: compat_linux.8,v 1.41 2021/04/24 07:12:17 nia Exp $
.\"
.\" Copyright (c) 1995 Frank van der Linden
.\" All rights reserved.
@@ -29,7 +29,7 @@
.\" (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 September 29, 2017
+.Dd April 4, 2021
.Dt COMPAT_LINUX 8
.Os
.Sh NAME
@@ -40,14 +40,12 @@
supports running Linux binaries.
This applies to amd64, arm, alpha, i386, m68k, and powerpc systems for now.
Both the a.out and ELF binary formats are supported.
-Most programs should work, including the ones that use the Linux SVGAlib (only
-on i386).
+Most programs should work.
.Nx
-amd64 can execute both 32bit and 64bit linux programs.
+amd64 can execute both 32-bit and 64-bit Linux programs.
Programs that will not work include some that use
i386-specific calls, such as enabling virtual 8086 mode.
-Currently, sound is only partially supported for Linux binaries (they will
-probably run, depending on what Linux sound support features are used).
+Currently, sound is supported through OSSv3 compat.
.Pp
The Linux compatibility feature is active
for kernels compiled with the
@@ -64,6 +62,9 @@
.Dv EXEC_ELF64
options (respectively) should be enabled in addition to
.Dv COMPAT_LINUX .
+If sound support is desired,
+.Dv COMPAT_OSSAUDIO
+should be enabled.
.Pp
A lot of programs are dynamically linked.
This means that you will also need the Linux shared libraries that the
@@ -77,7 +78,7 @@
.Pa /emul/linux
or
.Pa /emul/linux32
-for 32bit emulation on 64bit systems.
+for 32-bit emulation on 64-bit systems.
Any file operations done by Linux programs run under
.Nx
will look in this directory first.
@@ -109,275 +110,62 @@
set of Linux shared libraries on your system to be able to run newly
imported Linux binaries without any extra work.
.Ss Setting up shared libraries
-How to get to know which shared libraries Linux 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).
-.Bl -enum
-.It
-For i386, you can simply install the SuSE shared libs using the
-.Pa pkgsrc/emulators/suse100_linux
-package(s).
-On PowerPC ports, the
-.Pa pkgsrc/emulators/linuxppc_lib
-will install the needed libraries.
-If you are on other platforms, or this doesn't supply you with all
-the needed libraries, read on.
-.It
-You have access to a Linux 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 Linux binary of Doom.
-Put it on the Linux system you have access to, and check which shared libraries it
-needs by running
-.Sq ldd linuxxdoom :
-.Bd -literal -offset indent
-(me@linux) ldd linuxxdoom
- libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0
- libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0
- libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29
-.Ed
-.Pp
-You would need go get all the files from the last column, and
-put them under
-.Pa /emul/linux ,
-with the names in the first column
-as symbolic links pointing to them.
-This means you eventually have these files on your
-.Nx
-system:
-.Bl -item -compact
-.It
-.Pa /emul/linux/usr/X11/lib/libXt.so.3.1.0
-.It
-.Pa /emul/linux/usr/X11/lib/libXt.so.3
-(symbolic link to the above)
-.It
-.Pa /emul/linux/usr/X11/lib/libX11.so.3.1.0
-.It
-.Pa /emul/linux/usr/X11/lib/libX11.so.3
-(symbolic link to the above)
-.It
-.Pa /emul/linux/lib/libc.so.4.6.29
-.It
-.Pa /emul/linux/lib/libc.so.4
-(symbolic link to the above)
-.El
-.Pp
-Note that if you already have a Linux shared library with a
-matching major revision number to the first column of the
-.Xr ldd 1
-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, as long as you make the symbolic
-link point to the new one.
-So, if you have these libraries on your system:
-.Pp
-.Bl -item -compact
-.It
-.Pa /emul/linux/lib/libc.so.4.6.27
-.It
-.Pa /emul/linux/lib/libc.so.4
-->
-.Pa /emul/linux/lib/libc.so.4.6.27
-.El
-.Pp
-and you find that the
-.Ic ldd
-output for a new binary you want to install is:
+Find the dependencies of a Linux binary using
+.Xr readelf 1 :
.Bd -literal
-libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29
+$ readelf -d ./runner | grep Shared
+ 0x00000001 (NEEDED) Shared library: [libstdc++.so.6]
+ 0x00000001 (NEEDED) Shared library: [libz.so.1]
+ 0x00000001 (NEEDED) Shared library: [libXxf86vm.so.1]
+ 0x00000001 (NEEDED) Shared library: [libGL.so.1]
+ 0x00000001 (NEEDED) Shared library: [libopenal.so.1]
+ 0x00000001 (NEEDED) Shared library: [libm.so.6]
+ 0x00000001 (NEEDED) Shared library: [librt.so.1]
+ 0x00000001 (NEEDED) Shared library: [libpthread.so.0]
+ 0x00000001 (NEEDED) Shared library: [libdl.so.2]
+ 0x00000001 (NEEDED) Shared library: [libcrypto.so.1.0.0]
+ 0x00000001 (NEEDED) Shared library: [libXext.so.6]
+ 0x00000001 (NEEDED) Shared library: [libX11.so.6]
+ 0x00000001 (NEEDED) Shared library: [libXrandr.so.2]
+ 0x00000001 (NEEDED) Shared library: [libGLU.so.1]
+ 0x00000001 (NEEDED) Shared library: [libssl.so.1.0.0]
+ 0x00000001 (NEEDED) Shared library: [libgcc_s.so.1]
+ 0x00000001 (NEEDED) Shared library: [libc.so.6]
.Ed
.Pp
-you won't need to worry about copying
-.Pa /lib/libc.so.4.6.29
-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/linux/lib/libc.so.4.6.29
-.It
-.Pa /emul/linux/lib/libc.so.4
-->
-.Pa /emul/linux/lib/libc.so.4.6.29
-.El
-.Pp
-Please note that the symbolic link mechanism is
-.Em only
-needed for Linux binaries, the
-.Nx
-runtime linker takes care of
-looking for matching major revision numbers itself, you
-don't need to worry about that.
+For x86, you can simply install the openSUSE shared libraries using the
+.Pa pkgsrc/emulators/suse131_*
+or
+.Pa pkgsrc/emulators/suse131_32_*
+packages.
.Pp
-Finally, you must make sure that you have the Linux runtime linker
-and its config files on your system.
-You should copy these
-files from the Linux system to their appropriate place on your
-.Nx
-system (in the
-.Pa /emul/linux
-tree):
-.Bl -item -compact
-.It
-.Pa /lib/ld.so
-.It
-.Pa /etc/ld.so.cache
-.It
-.Pa /etc/ld.so.config
-.El
-.It
-You don't have access to a Linux 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/linux
-(i.e.
-.Pa /foo/bar
-is installed as
-.Pa /emul/linux/foo/bar ) :
-.Pp
-.Bl -item -compact
-.It
-.Pa /sbin/ldconfig
-.It
-.Pa /usr/bin/ldd
-.It
-.Pa /lib/libc.so.x.y.z
-.It
-.Pa /lib/ld.so
-.El
-.Pp
-.Ic ldconfig
-and
-.Ic ldd
-don't necessarily need to be under
-.Pa /emul/linux ,
-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-linux
-and
-.Ic ldd-linux .
-.Pp
-Create the file
-.Pa /emul/linux/etc/ld.so.conf ,
-containing the directories in which the Linux runtime linker should look
-for shared libs.
-It is a plain text file, containing a directory name on each line.
-.Pa /lib
+For example, an application which requires
+.Pa libcrypto.so.1.0.0 ,
+.Pa libXext.so.6 ,
and
-.Pa /usr/lib
-are standard, you could add the following:
-.Bl -item -compact
-.It
-.Pa /usr/X11/lib
-.It
-.Pa /usr/local/lib
-.El
-.Pp
-Note that these are mapped to
-.Pa /emul/linux/XXXX
-by
-.Nx Ap s
-compat
-code, and should exist as such on your system.
-.Pp
-Run the Linux
-.Ic ldconfig
-program.
-It should be statically
-linked, so it doesn't need any shared libraries by itself.
-It will create the file
-.Pa /emul/linux/etc/ld.so.cache
-You should rerun the Linux version of
-.Ic ldconfig
-each time you add a new shared library.
-.Pp
-You should now be set up for Linux binaries which only need
-a shared libc.
-You can test this by running the Linux
-.Ic ldd
-on itself.
-Suppose that you have it installed as
-.Ic ldd-linux ,
-it should produce something like:
-.Pp
-.Bl -tag -width 123 -compact -offset indent
-.It (me@netbsd) ldd-linux `which ldd-linux`
-libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29
-.El
+.Pa libGL.so.1
Home |
Main Index |
Thread Index |
Old Index