commit - b8d611242cec2588168e3fc461c196f1a722bbfb
commit + 68d2febf4860768d02aaa134cfcac0fa3ee35508
blob - 7c0ac70927c6f8ba0d6a8e3274de06e8d210fc9a
blob + 8cbed6759e558db8c894ae3f26f3718a3b539ee1
--- GNUmakefile
+++ GNUmakefile
ifeq ($(ARCH),arm64)
run-arm64: legacy
- qemu-system-aarch64 -machine virt -cpu cortex-a72 -m 2048M -smp 2 \
+ qemu-system-aarch64 -machine virt -cpu cortex-a72 -m 2048M -smp cores=2,threads=2,sockets=2 \
-kernel $(ARCH_DIR)/kernel.elf \
-serial stdio -monitor none -nographic
else
blob - dd3a9209ec3935ae87f7fff04a1b7f838bbca7bb
blob + 1afbf3d8b959e3ac9acb64c0114e713eb8bdd530
--- README.md
+++ README.md
Lenix targets a secure, efficient, enterprise-grade footprint that can scale from single-board computers to virtualized deployments (QEMU/KVM, OpenBSD VMM, and Bhyve). The initial bring-up focuses on x86_64 and arm64/aarch64 with planned RISC-V64 support once the core subsystems mature. Symmetric multiprocessing and distributed capabilities are in scope from the outset so the system can span multi-core boards and clustered environments.
-The kernel follows a microkernel architecture inspired by Minix, GNU/Hurd, Mach, OpenBSD, IRIX, OpenVMS, Sortix, and Plan 9, emphasizing clear privilege boundaries, message-passing services, and network-transparent interfaces.
+The kernel follows a microkernel architecture inspired by Minix, GNU/Hurd, Mach,as well as OpenBSD, IRIX, OpenVMS, and Plan 9 - emphasizing clear privilege boundaries, message-passing services, and network-transparent interfaces.
Because IPC is the lifeblood of any microkernel, Lenix will grow a first-class message-passing framework that lets user-mode servers exchange capabilities, share memory safely, and marshal POSIX-style requests without collapsing isolation guarantees. Every subsystem we add (drivers, filesystems, network stacks) is expected to live behind that IPC surface so scaling out to distributed deployments remains straightforward.
We will use musl or another modern, POSIX-complient libc implementation (or, preferably, our own implementation).
-All code is written following OpenBSD's style(9).
-
Some of the following documentation may be outdated - check changelog.md and roadmap.md for a better idea of the current state of the microkernel.
## Known major issues and blockers
- IPC/VFS timing (or something else!) can cause intermittent boot problems.
-- Early console and TTY needs more work, sometimes there is corruption and output of what looks like other parts of memory.
-- Slow operations in shell - delays spawning and intermittent hangs
+- Intermittent hangs
- arm64 support is lagging behind
-- Entire codebase needs refined and possibly restructured.
+- SMP needs work
## Toolchain
```bash
# x86_64 legacy + UEFI artifacts:
-make clean && make ARCH=x86_64 -j4 && make package-apps && make package-apps && make initrd && make efi && make iso
+make clean && make ARCH=x86_64 -j4 && make package-runtime && make package-apps && make initrd && make efi && make iso
# ARM64 (QEMU virt) legacy kernel:
ARCH=arm64 make legacy
blob - 2f2f632d5eb6672d60d600fd52b401c2f15ef189
blob + 94a71cb4192b0332491461bbad0974cda84e4b50
--- kernel/console/service.c
+++ kernel/console/service.c
sched_yield();
continue;
}
+ if (entry.len > CONSOLE_LINE_MAX) {
+ entry.len = CONSOLE_LINE_MAX;
+ entry.buf[CONSOLE_LINE_MAX - 1] = '\0';
+ } else {
+ if (entry.len == 0 || entry.buf[entry.len] != '\0')
+ entry.buf[(entry.len < CONSOLE_LINE_MAX) ? entry.len : (CONSOLE_LINE_MAX - 1)] = '\0';
+ }
console_process_line(entry.buf);
}
}
* early_console_write() will continue to buffer messages to the ring
* buffer for audit/diagnostics, but won't write to serial.
* PTY master output (console_master_write) becomes the only path to serial. */
- //reearly_console_disable_serial_write();
+ //early_console_disable_serial_write();
#ifdef LENIX_DEBUG
serial_write("[console] early console serial writes disabled\n", 48);
#endif