mirror of
https://github.com/subhobhai943/SUB-OS.git
synced 2026-10-26 09:02:46 +00:00
feat: Growable heap, GUI-by-default run, live sysmon, SUB/SUB default login
Kernel / memory: - mm/kmalloc.c: fix "Heap: Out of memory" under the GUI. The desktop allocates three full-screen 32-bit buffers (~11MB) which overflowed the fixed 16MB pool. The heap now starts at 32MB and grows on demand from the PMM (16MB regions), with region-safe coalescing (only merges physically adjacent blocks) so growth never corrupts across separate PMM allocations. Adds heap_get_grow_count(). Build / run: - Makefile: merge `run-gui` into `run` so `make run` boots into the graphical desktop; add `run-headless` (serial-only via QEMU_CMD), bump guest RAM to 256M, update .PHONY and help. Configure: - scripts/kconfig/menuconfig.py: gate the curses UI behind isatty() on stdin and stdout so non-interactive `make configure` stops emitting "nocbreak() returned ERR" and falls cleanly through to the non-interactive writer. GUI / userland: - gui/gui_apps.c: rebuild the System Monitor from hardcoded values into live telemetry -- real heap used/total/free with a colour-shifting bar, a scrolling heap-utilisation graph, the grow counter, and real PMM RAM figures. - lazybox `free`: report how many times the heap has grown. Auth: - Default login is now SUB / SUB (Kali-style username==password), seeded first as the primary uid-0 account and set as the logged-in user; root kept for compatibility. Hardcoded "root" defaults (whoami, su, passwd, ssh, sshd session) updated to SUB. Verified: clean build on x86_64/aarch64/armv8i; GUI boots with 0 OOM/0 panic; auth engine initialises cleanly; `make configure` fallback is clean. Co-Authored-By: Claude Opus 4.8 <[email protected]> Claude-Session: https://claude.ai/code/session_01Fh5z6V7nGPbHvqVG5p4CXX
This commit is contained in:
1 parent
65fa4dd049
commit
71ad6aca3d
8 files changed
+227
-88
No files matched your search
@@ -330,7 +330,7 @@ DEPS = $(C_OBJS:.o=.d) $(CPP_OBJS:.o=.d) $(S_OBJS:.o=.d)
|
||||
|
||||
.DEFAULT_GOAL := all
|
||||
|
||||
.PHONY: all clean run run-fullscreen debug info configure menuconfig config tui nconfig defconfig x86_64_defconfig aarch64_defconfig armv8_defconfig armv8i_defconfig armv81_defconfig arm32_defconfig qemu help
|
||||
.PHONY: all clean run run-headless run-fullscreen run-vnc run-server debug info configure menuconfig config tui nconfig defconfig x86_64_defconfig aarch64_defconfig armv8_defconfig armv8i_defconfig armv81_defconfig arm32_defconfig qemu help
|
||||
|
||||
all: $(TARGET)
|
||||
|
||||
@@ -448,24 +448,29 @@ $(IMAGE): $(BUILD_DIR)/boot/boot.bin $(BUILD_DIR)/boot/stage2.bin $(BUILD_DIR)/k
|
||||
# -----------------------------------------------------------------------------
|
||||
# Execution & Emulation Targets
|
||||
# -----------------------------------------------------------------------------
|
||||
run qemu: $(TARGET)
|
||||
$(QEMU_CMD)
|
||||
|
||||
# -vga std gives the Bochs VBE adapter the kernel drives. vgamem_mb is raised
|
||||
# because a 1280x720 32-bit framebuffer needs more than the 8 MB default.
|
||||
QEMU_VGA = -device VGA,vgamem_mb=32
|
||||
|
||||
run-gui: $(TARGET)
|
||||
# `make run` boots straight into the SUB-OS Graphical Desktop Environment. The
|
||||
# guest window scales with zoom-to-fit; pass `nogui`/`text` on the kernel
|
||||
# command line for the emergency TTY. Use `make run-headless` for serial only.
|
||||
run qemu: $(TARGET)
|
||||
ifeq ($(ARCH), x86_64)
|
||||
qemu-system-x86_64 -drive format=raw,file=$(IMAGE) \
|
||||
qemu-system-x86_64 -drive format=raw,file=$(IMAGE) -m 256M \
|
||||
-netdev user,id=net0,hostfwd=tcp::2222-:22,hostfwd=tcp::8080-:80 \
|
||||
-device e1000,netdev=net0 $(QEMU_VGA) -display gtk,zoom-to-fit=on -serial stdio
|
||||
else ifneq ($(filter $(ARCH), aarch64 arm64),)
|
||||
qemu-system-aarch64 -M virt -cpu cortex-a57 -m 128M -kernel $(BUILD_DIR)/kernel.elf -device virtio-gpu-pci -serial stdio
|
||||
qemu-system-aarch64 -M virt -cpu cortex-a57 -m 256M -kernel $(BUILD_DIR)/kernel.elf -device virtio-gpu-pci -serial stdio
|
||||
else
|
||||
qemu-system-arm -M virt -cpu cortex-a15 -m 128M -kernel $(BUILD_DIR)/kernel.elf -device virtio-gpu-pci -serial stdio
|
||||
qemu-system-arm -M virt -cpu cortex-a15 -m 256M -kernel $(BUILD_DIR)/kernel.elf -device virtio-gpu-pci -serial stdio
|
||||
endif
|
||||
|
||||
# Headless: no graphical window, kernel console on the serial line only. Boot
|
||||
# with `nogui` on the kernel command line to reach the TTY in this mode.
|
||||
run-headless: $(TARGET)
|
||||
$(QEMU_CMD)
|
||||
|
||||
# Fullscreen without distortion: zoom-to-fit scales the guest while preserving
|
||||
# its aspect ratio, letterboxing rather than stretching on a wider panel.
|
||||
run-fullscreen: $(TARGET)
|
||||
@@ -521,7 +526,10 @@ help:
|
||||
@echo " make aarch64_defconfig- Load AArch64 default configuration"
|
||||
@echo " make armv8i_defconfig - Load ARMv8i (32-bit ARM) default configuration"
|
||||
@echo " make all [ARCH=...] - Compile kernel image for selected architecture"
|
||||
@echo " make qemu [ARCH=...] - Boot the compiled kernel in QEMU emulator"
|
||||
@echo " make run [ARCH=...] - Boot into the SUB-OS Graphical Desktop in QEMU"
|
||||
@echo " make run-headless - Boot in QEMU with serial console only (no window)"
|
||||
@echo " make run-fullscreen - Boot the desktop in a full-screen QEMU window"
|
||||
@echo " make run-vnc - Boot the desktop and expose it over VNC :0"
|
||||
@echo " make clean - Remove all compiled objects and disk images"
|
||||
@echo " make info - Display build configuration and source metrics"
|
||||
|
||||
|
||||
Reference in new issue
Block a user