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:
@@ -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."
|
||||
|
||||
Reference in New Issue
Block a user