feat: Add Process Manager, Limine Framebuffer GUI, RTL8139 Net stack, and extended UNIX commands

This commit is contained in:
RarDog
2026-09-02 20:10:02 +03:00
parent 521f7ed9ce
commit aa32cffd15
24 changed files with 1446 additions and 72 deletions
+16 -7
View File
@@ -24,7 +24,7 @@ LIMINE_DIR := boot/limine
COMMON_FLAGS := -Wall -Wextra -O2 -ffreestanding -fno-stack-protector \
-fno-pie -no-pie -mno-red-zone -m64 \
-mno-sse -mno-sse2 -mno-avx \
-I$(INCLUDE_DIR) -I$(LIB_DIR)/libc/include
-I$(INCLUDE_DIR) -I$(LIB_DIR)/libc/include -I$(HAL_DIR)/include
CFLAGS := $(COMMON_FLAGS) -std=c11
CXXFLAGS := $(COMMON_FLAGS) -std=c++20 -fno-exceptions -fno-rtti -I$(LIB_DIR)/libipc_cpp/include
@@ -39,6 +39,7 @@ PROCMGR := $(BUILD_DIR)/procmgr.elf
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 image run clean help limine-setup
@@ -48,7 +49,7 @@ all: kernel libc hal servers
@echo "======================================================="
@echo " [SUCCESS] opencoreC Build Complete!"
@echo " Kernel: $(KERNEL_ELF)"
@echo " Servers: $(INIT_SERVER), $(UART_DRIVER), $(SH_SERVER)"
@echo " Servers: $(INIT_SERVER), $(UART_DRIVER), $(SH_SERVER), $(PROCMGR)"
@echo " Run: make image && make run"
@echo "======================================================="
@@ -63,6 +64,7 @@ libc:
@$(CC) $(CFLAGS) -c $(LIB_DIR)/libc/src/string.c -o $(BUILD_DIR)/string.o
@$(CC) $(CFLAGS) -c $(LIB_DIR)/libc/src/syscalls.c -o $(BUILD_DIR)/syscalls.o
@$(CC) $(CFLAGS) -c $(LIB_DIR)/libc/src/stdlib.c -o $(BUILD_DIR)/stdlib.o
@$(CC) $(CFLAGS) -c $(LIB_DIR)/libc/src/net.c -o $(BUILD_DIR)/net.o
hal: libc
@mkdir -p $(BUILD_DIR)
@@ -70,6 +72,8 @@ hal: libc
@$(CC) $(CFLAGS) -I$(HAL_DIR)/include -c $(HAL_DIR)/src/uart.c -o $(BUILD_DIR)/uart.o
@$(CC) $(CFLAGS) -I$(HAL_DIR)/include -c $(HAL_DIR)/src/pci.c -o $(BUILD_DIR)/pci.o
@$(CC) $(CFLAGS) -I$(HAL_DIR)/include -c $(HAL_DIR)/src/apic.c -o $(BUILD_DIR)/apic.o
@$(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
servers: libc hal
@mkdir -p $(BUILD_DIR)
@@ -84,10 +88,10 @@ servers: libc hal
@$(CC) $(CFLAGS) -I$(HAL_DIR)/include -c $(SERVERS_DIR)/uart_driver/main.c -o $(BUILD_DIR)/uart_driver_main.o
@$(LD) -T $(CONFIG_DIR)/user.ld -nostdlib -static -o $(UART_DRIVER) \
$(BUILD_DIR)/uart_driver_main.o $(BUILD_DIR)/uart.o $(LIBC_OBJS)
@# Interactive Shell
@# Interactive Shell with Networking & Framebuffer
@$(CXX) $(CXXFLAGS) -c $(SERVERS_DIR)/sh/main.cpp -o $(BUILD_DIR)/sh_main.o
@$(LD) -T $(CONFIG_DIR)/user.ld -nostdlib -static -o $(SH_SERVER) \
$(BUILD_DIR)/sh_main.o $(BUILD_DIR)/ipc.o $(LIBC_OBJS)
$(BUILD_DIR)/sh_main.o $(BUILD_DIR)/ipc.o $(BUILD_DIR)/fb.o $(NET_OBJS) $(LIBC_OBJS)
@# Process Manager Daemon
@$(CXX) $(CXXFLAGS) -c $(SERVERS_DIR)/procmgr/main.cpp -o $(BUILD_DIR)/procmgr_main.o
@$(LD) -T $(CONFIG_DIR)/user.ld -nostdlib -static -o $(PROCMGR) \
@@ -114,6 +118,7 @@ image: all limine-setup
@mcopy -i $(DISK_IMG)@@1M $(INIT_SERVER) ::/boot/
@mcopy -i $(DISK_IMG)@@1M $(UART_DRIVER) ::/boot/
@mcopy -i $(DISK_IMG)@@1M $(SH_SERVER) ::/boot/
@mcopy -i $(DISK_IMG)@@1M $(PROCMGR) ::/boot/
@# Bootloader config
@mcopy -i $(DISK_IMG)@@1M limine.conf ::/
@mcopy -i $(DISK_IMG)@@1M limine.cfg ::/
@@ -127,15 +132,18 @@ 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 serial terminal (keyboard works via -serial stdio)
# Launch QEMU with serial terminal, VGA framebuffer, and RTL8139 network card
run: image
@echo "[QEMU] Launching opencoreC (SMP 4 cores, Serial terminal)..."
@echo "[QEMU] Launching opencoreC (SMP 4 cores, Serial terminal, Framebuffer, RTL8139 Net)..."
@echo "[QEMU] Type 'help' for commands. Ctrl+A X to exit QEMU."
@echo "-------------------------------------------------------"
@$(QEMU) \
-M q35 \
-smp 4 \
-m 512M \
-vga std \
-netdev user,id=net0 \
-device rtl8139,netdev=net0 \
-serial mon:stdio \
-no-reboot \
-display none \
@@ -145,7 +153,8 @@ run: image
qemu: $(DISK_IMG)
@echo "[QEMU] Quick launch from existing image..."
@echo "[QEMU] Type 'help'. Ctrl+A X to exit."
@$(QEMU) -M q35 -smp 4 -m 512M -serial mon:stdio -no-reboot -display none \
@$(QEMU) -M q35 -smp 4 -m 512M -vga std -netdev user,id=net0 -device rtl8139,netdev=net0 \
-serial mon:stdio -no-reboot -display none \
-drive file=$(DISK_IMG),format=raw
clean: