-
Notifications
You must be signed in to change notification settings - Fork 19
DEnvironment
Unfinished
Modern software development especially in systems programming often assumes a POSIX-compatible or UNIX-like environment. This page explains why such an environment is important, what it enables, and how it affects your ability to follow this tutorial or contribute effectively.
POSIX (Portable Operating System Interface) is a standardized set of operating system interfaces defined by the IEEE. A POSIX-compatible environment refers to systems that support these standards primarily around:
- Command-line utilities (
cp,grep,sed,make, etc.) - Shell behavior (
sh,bash,zsh) - File system conventions and permissions
- Process control and system calls
Examples include:
- macOS (officially UNIX-certified)
- Linux distributions (Ubuntu, Debian, Arch, Fedora, etc.)
- BSD variants (FreeBSD, OpenBSD)
This project relies on a POSIX-compatible environment for several reasons:
| Feature | POSIX Dependency |
|---|---|
| Build system | Assumes make, gcc/clang, and shell scripting |
| CLI tools | Uses standard POSIX utilities (ls, rm, find, etc.) |
| Scripts | Written for bash or sh, not Windows PowerShell |
| Permissions | Depends on UNIX-style file and execution permissions |
| Path handling | Assumes forward-slash paths (/) and case sensitivity |
Attempting to run this tutorial in a non-POSIX system (such as native Windows 11) may lead to:
- Incompatible shell syntax
- Missing or misbehaving tools
- Broken scripts or build errors
- Difficulty following along with examples
If you're on Windows, you still have several options to set up a compatible environment:
- WSL (Windows Subsystem for Linux) A native Linux experience inside Windows.
- Virtual Machine Run a full Linux distro using VirtualBox or VMware.
- Dual Boot Install Linux alongside Windows and select at startup.
Instructions are provided below
- Consistency Same behavior across macOS, Linux, and BSD
- Portability Scripts and tools "just work" across systems
- Productivity Access to rich command-line tools and automations
A POSIX-compatible environment is a requirement for this project. It ensures that you can build, run, and contribute using tools and practices consistent with the broader open-source and systems development community.
If you're not currently working in such an environment, either you can set it up using the instructions below or use translated Window commands using MinGW64 packages and MSYS2, but this has historically been much of a hassle to set up and there are still unsolved issues with this.
-
Pick a Linux distribution. I recommend Ubuntu 22.04 LTS as it is the very similar to windows graphics and interface wise, with long term support and stability.
-
Follow these instructions to begin Dual Boot.
- Setup WSL.
- Download a VM software and choose to emulate