Architecture
Process semantics, VFS, networking, scheduling, IPC, ELF policy and Linux-visible errors live in common code. The architecture directories handle CPU entry, context switching, interrupt controllers, page tables, timers and firmware handoff.
Linux userspace compatibility
EdgeOS loads Linux ELF64 binaries. Architecture syscall tables extract syscall numbers and arguments, then route into shared handlers. Linux ioctl layouts, socket options, vDSO support, procfs, sysfs and devtmpfs provide the surrounding interfaces used by Debian software.
Docker
Docker has run from unmodified Debian packages in EdgeOS development VMs. Its kernel dependencies include namespaces, cgroup v2, OverlayFS, veth pairs, bridge networking, nftables, NAT and connection tracking.
Containers can use the default bridge, internal DNS, container-to-container traffic, published host ports and IPv6 bridge networks. cgroup v2 provides memory, swap and block-I/O limits.
Process and runtime interfaces
| Area | Implemented interfaces and subsystems |
|---|---|
| Program loading | Linux ELF64 loading, shebang handling, process-image construction, auxiliary vectors, architecture syscall entry and vDSO support |
| Process lifecycle | fork, vfork, clone, clone3, exec, exit, process waiting, sessions, process groups, parent-death signals and resource accounting |
| Identity and permissions | UIDs, GIDs, supplementary groups, Linux capabilities, securebits, prctl, file permissions and resource limits |
| Namespaces | Mount, PID, user, UTS, IPC, network, time and cgroup namespaces with clone, unshare, setns and namespace descriptors |
| cgroup v2 | CPU, cpuset, memory, swap, PIDs, I/O and freezer controls with pressure and resource accounting |
| Scheduling | SMP scheduling, affinity, nice levels, SCHED_OTHER, BATCH, IDLE, FIFO, RR and DEADLINE, utilization clamps and CPU cgroup controls |
| Signals and tracing | Signal queues and frames, signalfd, ptrace, pidfds, process memory access, restartable syscalls and SIGSYS delivery |
| Virtual memory | VMAs, anonymous and file mappings, copy-on-write, mmap, mprotect, mremap, madvise, page cache, reclaim, OOM handling and swap |
| userfaultfd | API negotiation, memory-range registration, missing-page events, event reads and copy, zero-page, continue and write-protect resolutions |
| Synchronization | Wait queues, futexes, robust lists, priority inheritance, requeue, waitv, membarrier, mutexes, spinlocks and deferred work |
| Linux AIO | AIO context setup and teardown, request submission, completion queues, event collection and request cancellation |
| io_uring | Submission and completion rings, registered files and buffers, provided-buffer rings, eventfd notification, poll, timeout update and cancellation |
| Descriptor events | epoll, eventfd, signalfd, timerfd, anonymous descriptors, poll readiness and close and reuse handling |
| File notifications | inotify watches and event queues plus fanotify groups, marks, path events and move notifications |
| System V IPC | Shared memory attach and control, message queues, semaphore sets, permissions, IPC namespaces and semaphore undo state |
| POSIX IPC | Pipes, PTYs and POSIX message queues with named lookup, send, receive, notification and IPC namespace isolation |
| Unix sockets | Stream and datagram endpoints, accept queues, ancillary messages, credentials and descriptor passing with SCM_RIGHTS |
| seccomp | Classic BPF syscall filters, chained filter state, errno, trap, trace, log and kill actions, plus user-notification listeners |
| Landlock | Filesystem rulesets, path-beneath rules, per-task restrictions, inherited policy and rename and link access checks |
| BPF | BPF maps and programs, map element and batch operations, BTF objects, object IDs, program attachment, links and cgroup device hooks |
| Keyrings | Thread, process, session, user and group keyrings with add, request, search, link, update, revoke, timeout and permission operations |
| Performance events | perf_event descriptors and software counters for clocks, page faults, context switches, CPU migrations and cgroup switches |
Storage and networking
| Area | Implemented interfaces and subsystems |
|---|---|
| VFS | Path and inode caches, descriptors, extended attributes, file locks, sparse files, fallocate, file handles, readahead and writeback |
| Mounts | Mount namespaces, mount topology, the modern mount API, bind and move operations, pivot_root and per-mount propagation state |
| Pseudo filesystems | tmpfs, initramfs, procfs, sysfs, devtmpfs, devpts and cgroup2 |
| Writable filesystems | ext2, ext4, FAT32, FUSE and OverlayFS, with an NFSv3 server path |
| Read-only filesystems | SquashFS, EROFS, XFS, Btrfs, exFAT, NTFS, ISO9660 and UDF readers |
| Quotas | Quota enable and disable, synchronization, format and information queries, per-ID limits and next-record iteration |
| Block layer | Block cache, partition discovery, RAM disks, loop devices, device mapper and shared request dispatch |
| Storage devices | VirtIO Block and SCSI, NVMe, AHCI, ATA, VMware PVSCSI and BSD bridge storage and CAM packages |
| Socket families | IPv4, IPv6, Unix and packet sockets with Linux socket options, poll behavior and diagnostic interfaces |
| Network protocols | ARP, NDP, ICMP, TCP, UDP, IGMP and MLD multicast with IPv4 and IPv6 address handling |
| Network control | rtnetlink, generic netlink, sock_diag, ethtool, route dumps and network-namespace event delivery |
| Routing and filtering | IPv4 and IPv6 routes, policy and multipath routing, qdiscs, nftables hooks, NAT and connection tracking |
| Virtual networking | TUN and TAP, veth, bridge with FDB, MDB and VLAN filtering, VLAN, macvlan, ipvlan, bonding, dummy and VRF devices |
| Network devices | Intel e1000, Realtek r8169 and VirtIO Net, plus BSD bridge Ethernet, Wi-Fi and USB network packages |
Devices and platforms
| Area | Implemented interfaces and subsystems |
|---|---|
| Console and framebuffer | EFI GOP, framebuffer console, virtual terminals, fbdev, boot logging and console device interfaces |
| Display | DRM and KMS interfaces, EDID and DisplayID modes, Bochs BGA, VMware SVGA and VirtIO GPU 2D and 3D paths |
| Input | PS/2 keyboard and mouse, Synaptics and Elan touchpads, USB HID, VirtIO Input and Linux input/event interfaces |
| Audio | ALSA-facing PCM and control devices with HDA, AC97, USB audio and BSD bridge audio backends |
| USB | Hub and device enumeration, UHCI, OHCI, EHCI and xHCI hosts, HID, mass storage, audio and BSD bridge host, gadget and device classes |
| VirtIO | PCI and MMIO transports for block, SCSI, network, GPU, input, RNG, console and balloon devices |
| VMware and Hyper-V | VMware PVSCSI and SVGA devices, VMXNET3 bridge integration and Hyper-V guest detection |
| Firmware | ACPI and ACPICA, Device Tree, EFI runtime services and firmware loading |
| Buses | PCI and PCIe enumeration, MSI and MSI-X, I2C, SMBus, GPIO and SD and MMC bridge packages |
| Multiprocessing | x86 APIC and IOAPIC and AArch64 GICv3 and PSCI bring-up, per-CPU state, reschedule IPIs and TLB shootdown |
| Timers and clocks | POSIX clocks and timers, interval timers, timerfd, nanosleep, RTC, HPET and architecture timer backends |
| Hardware services | ACPI power, battery and thermal data, CPU frequency control, RTC, RNG, TPM 2.0, watchdogs and LED and GPIO interfaces |
| Board targets | Generic x86_64 PCs, generic AArch64 UEFI and virt systems, Raspberry Pi 4 and Raspberry Pi 5 build targets |
BSD Driver Bridge
The BSD Driver Bridge compiles selected FreeBSD driver sources against EdgeOS compatibility services. The bridge covers kernel primitives, newbus, PCI resources, networking, CAM storage, USB, TTY, input, audio and display integration.
Each package manifest records its upstream commit, source files, license data, compatibility requirements, module mode and source digest. The build compiles only the files named by that manifest.