feat(system): remove GUI compositor, transition to pure interactive CLI terminal

- Removed gui_server, LVGL v8.3 graphics library, and related build scripts
- Upgraded microkernel FbConsole with smooth vertical scrolling, backspace cell erasing, and ANSI clear screen handling
- Routed shell output (sys_log_debug) directly to both COM1 Serial and UEFI GOP/VGA linear monitor
- Reduced system servers to 6 pure microkernel servers (init_server, uart_driver, vfs_server, net_server, procmgr, sh)
- Reassigned Core 1 to interactive terminal (sh) and Cores 2-3 to system daemons
- Bootable ISO and raw disk images now boot straight into the crisp fullscreen terminal
This commit is contained in:
RarDog
2026-09-03 11:12:26 +03:00
parent 5a4206acb6
commit 6d88c802b6
424 changed files with 111 additions and 287020 deletions
+5 -35
View File
@@ -28,7 +28,6 @@ COMMON_FLAGS := -Wall -Wextra -O2 -ffreestanding -fno-stack-protector \
CFLAGS := $(COMMON_FLAGS) -std=c11
CXXFLAGS := $(COMMON_FLAGS) -std=c++20 -fno-exceptions -fno-rtti -I$(LIB_DIR)/libipc_cpp/include
GUI_CXXFLAGS := $(filter-out -mno-sse -mno-sse2 -mno-avx, $(CXXFLAGS)) -msse -msse2
# Outputs
KERNEL_BIN := target/x86_64-unknown-none/release/opencore_kernel
@@ -39,15 +38,13 @@ VFS_SERVER := $(BUILD_DIR)/vfs_server.elf
NET_SERVER := $(BUILD_DIR)/net_server.elf
SH_SERVER := $(BUILD_DIR)/sh.elf
PROCMGR := $(BUILD_DIR)/procmgr.elf
GUI_SERVER := $(BUILD_DIR)/gui_server.elf
HELLO_APP := $(BUILD_DIR)/hello.opc
LVGL_LIB := $(BUILD_DIR)/liblvgl.a
DISK_IMG := $(BUILD_DIR)/opencoreC.img
LIBC_OBJS := $(BUILD_DIR)/string.o $(BUILD_DIR)/syscalls.o $(BUILD_DIR)/stdlib.o
NET_OBJS := $(BUILD_DIR)/net.o $(BUILD_DIR)/rtl8139.o $(BUILD_DIR)/pci.o
.PHONY: all kernel libc hal servers lvgl image run gui qemu clean help limine-setup
.PHONY: all kernel libc hal servers image run qemu clean help limine-setup
all: kernel libc hal servers
@mkdir -p $(BUILD_DIR)
@@ -55,8 +52,8 @@ all: kernel libc hal servers
@echo "======================================================="
@echo " [SUCCESS] opencoreC Build Complete!"
@echo " Kernel: $(KERNEL_ELF)"
@echo " Servers: $(INIT_SERVER), $(UART_DRIVER), $(VFS_SERVER), $(NET_SERVER), $(PROCMGR), $(SH_SERVER), $(GUI_SERVER)"
@echo " Run: make run (Serial CLI) or make gui (LVGL Desktop Window)"
@echo " Servers: $(INIT_SERVER), $(UART_DRIVER), $(VFS_SERVER), $(NET_SERVER), $(PROCMGR), $(SH_SERVER)"
@echo " Run: make run (Interactive Shell Terminal)"
@echo "======================================================="
kernel:
@@ -81,14 +78,7 @@ hal: libc
@$(CC) $(CFLAGS) -I$(HAL_DIR)/include -c $(HAL_DIR)/src/fb.c -o $(BUILD_DIR)/fb.o
@$(CC) $(CFLAGS) -I$(HAL_DIR)/include -c $(HAL_DIR)/src/rtl8139.c -o $(BUILD_DIR)/rtl8139.o
lvgl: $(LVGL_LIB)
$(LVGL_LIB): lib/lvgl/lv_conf.h
@mkdir -p $(BUILD_DIR)/lvgl
@echo "[CC] Compiling LVGL v8.3 Graphics Library..."
@python3 scripts/build_lvgl.py $(CC) "$(CFLAGS)" $(BUILD_DIR)
servers: libc hal $(LVGL_LIB)
servers: libc hal
@mkdir -p $(BUILD_DIR)
@echo "[CXX/CC] Linking Ring 3 User-space Servers..."
@# C++ LibIPC
@@ -117,10 +107,6 @@ servers: libc hal $(LVGL_LIB)
@$(CXX) $(CXXFLAGS) -c $(SERVERS_DIR)/procmgr/main.cpp -o $(BUILD_DIR)/procmgr_main.o
@$(LD) -T $(CONFIG_DIR)/user.ld -nostdlib -static -o $(PROCMGR) \
$(BUILD_DIR)/procmgr_main.o $(BUILD_DIR)/ipc.o $(LIBC_OBJS)
@# Desktop GUI Server (LVGL v8.3)
@$(CXX) $(GUI_CXXFLAGS) -Ilib/lvgl -c $(SERVERS_DIR)/gui_server/main.cpp -o $(BUILD_DIR)/gui_main.o
@$(LD) -T $(CONFIG_DIR)/user.ld -nostdlib -static -o $(GUI_SERVER) \
$(BUILD_DIR)/gui_main.o $(BUILD_DIR)/ipc.o $(NET_OBJS) $(LVGL_LIB) $(LIBC_OBJS)
@# Native .opc Executable Application (hello.opc)
@$(CC) $(CFLAGS) -c apps/hello.c -o $(BUILD_DIR)/hello.o
@$(LD) -T $(CONFIG_DIR)/user.ld -nostdlib -static -o $(BUILD_DIR)/hello.elf \
@@ -151,7 +137,6 @@ image: all limine-setup
@mcopy -i $(DISK_IMG)@@1M $(NET_SERVER) ::/boot/
@mcopy -i $(DISK_IMG)@@1M $(PROCMGR) ::/boot/
@mcopy -i $(DISK_IMG)@@1M $(SH_SERVER) ::/boot/
@mcopy -i $(DISK_IMG)@@1M $(GUI_SERVER) ::/boot/
@mcopy -i $(DISK_IMG)@@1M $(HELLO_APP) ::/boot/
@# Bootloader config
@mcopy -i $(DISK_IMG)@@1M limine.conf ::/
@@ -166,22 +151,7 @@ image: all limine-setup
@$(LIMINE_DIR)/limine bios-install $(DISK_IMG) 2>&1 | grep -v "^Physical\|^Installing\|^Stage\|^Reminder"
@echo "[IMAGE] Done: $(DISK_IMG) (BIOS + UEFI bootable)"
# Launch QEMU with Desktop GUI Window (LVGL, Framebuffer, PS/2 Mouse & Keyboard)
gui: image
@echo "[QEMU] Launching opencoreC Desktop GUI (LVGL, Framebuffer, PS/2 Mouse)..."
@echo "[QEMU] Click inside window to grab mouse. Press Ctrl+Alt+G to release mouse."
$(QEMU) \
-M q35 \
-smp 4 \
-m 512M \
-vga std \
-netdev user,id=net0 \
-device rtl8139,netdev=net0 \
-serial mon:stdio \
-no-reboot \
-drive file=$(DISK_IMG),format=raw
# Launch QEMU with serial terminal (Headless CLI mode)
# Launch QEMU with serial terminal (Interactive CLI mode)
run: image
@echo "[QEMU] Launching opencoreC (SMP 4 cores, Serial terminal, Framebuffer, RTL8139 Net)..."
@echo "[QEMU] Type 'help' for commands. Ctrl+A X to exit QEMU."