A hobby kernel and OS based (loosely) on the xv6 research kernel.
Exclusively supports armv8.x-a with a focus on real-time requirements and novel Arm architectural features. For example, there will be first-class support for transactional memory operations and, later, Confidential Compute Architecture (CCA, incl. "Realms").
make
the kernel and userspace applications.- Ensure
qemu-system-arm
is installed on your host machine. - Execute
./run.sh
.
make
the kernel and userspace applications.- Ensure
qemu-system-arm
andlldb
are installed on your host machine. - Execute
./run-debug.sh
. - Separately, run
lldb kernel.elf
. - Connect to QEMU's gdb server using
gdb-remote 1234
.
This is a fork of sudharson14/xv6-OS-for-arm-v8
. See LICENSE
for Copyright information.
Copyright (c) 2022+ Benjamin Mordaunt
As can be seen when looking at the Linux kernel project, the requirement to not break userspace (and others) has led to a slew of incremental hacks on fundamental systems such as memory management. In turn, this greatly increases the maintenance burden for contributors, makes navigating the codebase more problematic and deters new contributors who just can't understand the design decisions - and for good reason.
In contrast, PinkyOS uses "finite backwards-compatibility" to enable applications built for older versions of the kernel to function under a compatiblity layer, up to 3 API-breaking versions hence. For applications even older than this, they can continue to run under multiple (stacked) compatibility layers. The older an application is, the more it will be "punished" in terms of performance and capabilities, but at least they will run.
In this sense, pinkyOS places feature-richness and high performance well above legacy compatibility - a feature that will likely dissuade most industry users, but which likely shouldn't.