Re: FreeBSD Port: emulators/linux_base-c7

From: Alexander Leidinger <Alexander_at_leidinger.net>
Date: Mon, 05 Sep 2022 10:27:02 UTC
Quoting Zeus Odin <zeus.odin@yahoo.com> (from Mon, 29 Aug 2022  
09:48:48 -0400):

> I have a multi-boot system with Arch Linux, FreeBSD, OS X, and  
> Windoze. Arch Linux kernel version is up to 5.19.2. Should that  
> affect our decision?
>
> [zeus@olympus ~]$ uname -a
> Linux olympus.gods.org 5.19.2-arch1-1 #1 SMP PREEMPT_DYNAMIC Wed, 17  
> Aug 2022 13:48:51 +0000 x86_64 GNU/Linux
> [zeus@olympus ~]$ uname -srm
> Linux 5.19.2-arch1-1 x86_64
>
> Will look at sysctl compat.linux.osrelease. Could someone give any  
> direction in rebuilding my base-c7 or perhaps I can create base-c8.  
> Thanks.

If you want to add a new linux_base port, the following links will  
provide helpful info to understand what is involved and what shall or  
shall not be in a linux_base port:

https://www.leidinger.net/blog/2010/09/28/the-freebsd-linuxulator-explained-for-users/
https://www.leidinger.net/blog/2011/08/29/howto-create-a-new-linux_base-port/
https://www.leidinger.net/blog/2011/09/01/howto-add-linux-infrastructure-ports-for-a-new-linux_base-port/

Increasing the linux version string (compat.linux.osrelease) may have  
implications. Linux software may use that to enable certain features  
of the software which relies on kernel behavior or linux syscalls. If  
you change that, it may cause console messages about unimplemented  
syscalls. If you are lucky, you / your software doesn't really need  
the features of the kernel.

Even the current version string is "lying". We do not support all the  
features of the announced linux version. But for the linux programs in  
ports it is good enough and some checks about the kernel version are  
overly restrictive in some linux programs / libraries.

Note, there is no "linux compat kernel" to recompile from source. The  
linuxolator is not an emulator, it is a compatibility shim (= it  
translates from linux syscalls to FreeBSD syscalls = some are the same  
and no translation is needed, and some are a little bit different and  
need only a little mapping between numbers or the data-layout). So if  
your software complains about a missing syscall (or respectively the  
kernel tells about unimplemented syscalls in the console), it means  
you can not take some stuff from linux and run it, it means some  
FreeBSD code needs to be written to make it work.

Bye,
Alexander.

-- 
http://www.Leidinger.net Alexander@Leidinger.net: PGP 0x8F31830F9F2772BF
http://www.FreeBSD.org    netchild@FreeBSD.org  : PGP 0x8F31830F9F2772BF