I have been looking for a linux distribution that is not for embedded systems and does not use many of the GNU utilities found in many popular distributions. I want to develop a (pet project) linux distribution that uses musl-libc, bsd userland, and Plan 9 from user space. Before I start and possibly waste time doing the impossible, is it feasible/practical to use the BSD userland as a replacement for GNU coreutils? If not, what is an alternative?
Is it possible to run the BSD userland as a replacement to GNU coreutils with the linux kernel?
4.6k views Asked by wohlleben AtThere are 2 answers
tinyfiledialogs
On
Linux with Alternative userland
Chimera comes with a novel userland setup based on FreeBSD core tools (replacing coreutils and related projects like findutils, diffutils, sed or grep; read our FAQ for details about why).
The FreeBSD tools were chosen for their high quality code and solid feature set. Some source code is also taken from NetBSD and OpenBSD. While we are not philosophically opposed to GNU/GPL and licensing is not really a factor, there are real benefits to using them, and they are overall a better fit for the project.
The LLVM/Clang suite provides the system toolchain (clang, lld) as well as runtime parts (compiler-rt, libunwind, libc++). The C library is provided by musl, patched to use LLVM’s (also used e.g. in Android and Fuchsia) Scudo allocator for performance as well as security.
This means Chimera is not a GNU/Linux system, as it utilizes neither GNU utilities, nor GNU libc, nor GNU toolchain. The system is bootstrappable almost entirely without any GNU components (other than make) and is capable of booting without them (however, most people will have some).
Related Questions in LINUX
- Is there some way to use printf to print a horizontal list of decrementing hex digits in NASM assembly on Linux
- Why does Hugo generate different taxonomy-related HTML on different OS's?
- Writes in io_uring do not advance the file offset
- Why `set -o pipefail` gives different output even though the pipe is not failing
- what really controls the permissions: UID or eUID?
- Compiling eBPF program in Docker fails due to missing '__u64' type
- Docker container unable to make HTTPS requests to external API
- Whow to use callback_query_handler in Python 3.10
- Create kea runtime directory at startup in Yocto image
- Problem on CPU scheduling algorithms in OS
- How to copy files into the singularity sandbox?
- Android kernel error: undefined reference to `get_hw_version_platform'
- Is there a need for BPF Linux namespace?
- Error when trying to execute a binary compiled in a Kali Linux machine on an Ubuntu system
- Issue with launching application after updating ElectronJs to version 28.0.0 on Windows and Linux
Related Questions in BSD
- Question to multicast concept with BSD Socket APIs
- How to handle debug and release compiler flags in BSD make
- Are There Always-Used and Kernel-Specific System Call For BSDs and Linux?
- GNU sed to BSD sed for bash goto function
- Is It bad for performance if a bunch of threads are in a blocking state?
- How to test for BSD on GitHub actions?
- If I have a file descriptor with an integer value above 1024, can select() still work on it?
- How can I enable Uniflex BSD sockets to be BROADCAST?
- Django project ModuleNotFoundError: No module named '_sqlite3'
- STDIN dup2 for OpenBSD/NetBSD
- How to get a user name of the interactive login session that a process is running in?
- pthread_mutex_lock and an abandoned shared mutex
- statfs on macOS doesn't give me full disk capacity. Why?
- What is the required lifetime of struct kevent passed into kevent changelist?
- How to modify bits in EC of a laptop on BSD?
Related Questions in GNU-COREUTILS
- What does -f mean with Sort?
- Why does 'sort' seem to sort a field incorrectly based on the presence or absence of a different field?
- How to build coreutils with LLVM 3.4
- How do I get IPython to color output from Bash multiline invocation with declarations from my .bashrc or .bash_profile on Mac OS X with coreutils?
- Linux sort combining -V and -f
- `sort' behaviour when one line is prefix of another
- Where are info document files in Mac or in Linux, and how can I install some missing info files?
- linux gnu less: long lines in buffer broken down when copy+pasting
- Echo text to multiple files using find
- How to find the package to which a certain file belongs in a Debian-based distribution?
- Read ini files without section names
- Is the coreutils `diff` utility deterministic in output?
- Why does GNU expr produce 0 for "expr a \> -aa"?
- Two seemingly different functions with same name exist in the C program (using DWARF info), why?
- Sort data file based on a separate key file
Related Questions in PLAN-9
- How to get source file name from its executable via plan9port db(1) unility?
- Can't create a file in Plan 9 acme
- undefined: syscall.Stat_t for plan9
- Will binaries compiled for Plan9 by Go work in 9front?
- Regex "line numbers" in Acme
- How do you remove space from the beginning of a line using Plan 9's sed
- SSE2 extract float from packed data in golang
- Where is Stat_t defined for plan9?
- How does this Integer pool code work
- Plan9 file-type
- Model-specific registers in go?
- How can I define the default value for a variable in mkfile
- Writing a custom Android OS
- Equivalent to -fplan9-extensions in Clang?
- Is 9P obsolete?
Related Questions in USERLAND
- DeprecationWarning: The `punycode` module is deprecated
- Verify FIT image against data corruption in linux userland
- How can I JavaScript add a value to the "onClick" event if the function name is in a string?
- Loading kernel module from C user space application
- How can I stop emmc recovery?
- User Mode vs Userland
- Debugging userland program (full of anti debug) through VMWare
- Ios Jailbreak-How does this happen?
- Linux userland exec
- Implementing user level threads library Starting a new thread [Homework]
- Loading a non-relocatable, static ELF binary in userspace
- running apache on android with userland and ubuntu
- Run newer webserver without root permissions
- How to extend the existing generic class power_supply in linux kernel?
- Is it possible to run the BSD userland as a replacement to GNU coreutils with the linux kernel?
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Popular Tags
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Your goal appears to be much close to stali project (the only difference is the BSD userland requirement).
http://sta.li/
I don't know much about the stage of this project, but you can get some help in the project mailing-list.
As far as I know, the BSD tools uses a lot of direct syscalls and little usage of the POSIX API. I don't believe that bsd guys had written code using a lot of #ifdefs to get fully compliant programs (but I can be wrong)...
The suckless site ported the plan9 userland to unix (based on plan9port too), it's called 9base (and is available on archlinux repo to install).
I think you'll have the same problem I had in the past trying to assembly a similar distro: Too much effort to get rid of GNU... The base system is easy, but for something useful you'll need a C compiler and then you're out of good alternatives. GCC is gnu and have dozens of gnu dependencies and the sane freebsd gcc port never will work on linux for obvious reasons.
My current try is help finish the ken-c (or 9-cc) port for linux.