# LUNIX **Repository Path**: scicat-team/lunix ## Basic Information - **Project Name**: LUNIX - **Description**: 这是一个基于Unix是哲学,多人合作开发的一个类Unix操作系统。这并非linux操作系统。 - **Primary Language**: C - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-05-11 - **Last Updated**: 2025-08-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Lunix OS - 轻量级教学操作系统 Lunix OS 是一个轻量级的教学操作系统,专为学习操作系统原理和低层编程而设计。它包含了一个简单的桌面环境、终端、记事本和电源管理工具,全部在保护模式下运行,使用VGA文本模式作为显示输出。 ## 功能特性 - **图形化桌面环境**:简洁的桌面界面,支持应用启动 - **终端应用**:支持基本命令和命令历史 - **记事本应用**:简单的文本编辑功能 - **电源管理**:支持关机和重启操作 - **系统信息查看**:显示CPU、内存等系统信息 - **完整的引导过程**:从BIOS引导到保护模式切换 ## 技术栈 - **汇编语言**:引导加载程序和低级初始化 - **C语言**:内核和应用程序开发 - **QEMU**:系统模拟和调试 - **LLVM工具链**:交叉编译环境 ## 运行要求 - **硬件**: - x86兼容处理器 - 512MB内存(QEMU模拟) - 1.44MB软盘映像 - **软件**: - QEMU(建议版本5.0+) - LLVM工具链(Clang, LLD) - NASM汇编器 ## 快速开始 ### 构建系统 ```bash # 克隆仓库 git clone https://gitee.com/your-username/lunix-os.git cd lunix-os # 安装依赖(Ubuntu/Debian) sudo apt install qemu-system-x86 clang lld nasm # 构建并运行 cd scripts ./build.sh ``` ### 使用说明 1. **桌面界面**: - 按数字键1-4选择功能 - 1: 系统信息 - 2: 终端 - 3: 记事本 - 4: 电源管理 - ESC: 返回桌面 2. **终端命令**: - `help`: 显示可用命令 - `clear`: 清屏 - `ls`: 列出文件(模拟) - `echo`: 显示消息 - `date`: 显示日期(模拟) - `notepad`: 打开记事本 - `power`: 打开电源管理 - `exit`: 退出终端 - ESC: 返回桌面 3. **记事本操作**: - 方向键: 导航 - 退格键: 删除字符 - Ctrl+S: 保存文档(模拟) - Ctrl+Q/ESC: 退出 4. **电源管理**: - 1: 关机 - 2: 重启 - 3/ESC: 返回桌面 ## 项目结构(2025.6.15) ```bash lunix/ ├── boot/ │ └── boot.asm ├── include/ │ ├── sysinfo.h ├── kernel/ │ ├── linker.ld │ ├── main.c │ ├── vga.c │ ├── vga.h │ ├── power.c │ ├── power.h │ ├── string.c │ ├── string.h │ ├── disk.c │ ├── disk.h │ ├── fs.c │ ├── fs.h │ ├── pci.c │ ├── pci.h │ ├── time.c │ ├── io.h │ └── time.h ├── desktop/ │ ├── ui.c │ ├── ui.h │ ├── terminal.c │ ├── terminal.h │ ├── notepad.c │ ├── notepad.h │ ├── filemanager.c │ └── filemanager.h ├── apps/ │ ├── power.c │ └── power.h └── scripts/ └── build.sh ``` ## 开发指南 ### 构建过程 1. **编译引导加载程序**: ```bash nasm -f bin boot/boot.asm -o build/boot.bin ``` 2. **编译内核和应用程序**: ```bash clang -target i686-pc-none-elf -nostdlib -ffreestanding -fno-builtin -Iinclude -c [源文件] -o [目标文件] ``` 3. **链接内核**: ```bash ld.lld -m elf_i386 -nostdlib -static -T kernel/linker.ld -o build/kernel.elf [所有.o文件] ``` 4. **创建磁盘映像**: ```bash dd if=/dev/zero of=build/disk.img bs=512 count=2880 dd if=build/boot.bin of=build/disk.img conv=notrunc dd if=build/kernel.bin of=build/disk.img seek=1 conv=notrunc ``` 5. **在QEMU中运行**: ```bash qemu-system-i386 -drive format=raw,file=build/disk.img -m 512M ``` ### 调试技巧 使用QEMU和GDB进行调试: ```bash # 启动QEMU并等待GDB连接 qemu-system-i386 -drive format=raw,file=build/disk.img -m 512M -s -S # 在另一个终端中启动GDB gdb build/kernel.elf (gdb) target remote localhost:1234 (gdb) break kernel_main (gdb) continue ``` ## 贡献指南 我们欢迎任何形式的贡献!以下是参与项目的步骤: 1. **Fork仓库**:在Gitee上fork本项目 2. **创建分支**:为你的功能或修复创建新分支 3. **提交更改**:编写清晰的提交信息 4. **推送更改**:将更改推送到你的fork 5. **发起Pull Request**:向主仓库发起PR 请确保你的代码遵循以下规范: - 使用清晰的注释 - 保持代码风格一致 - 添加必要的文档 - 通过基础测试 **更多更新**- 见 ``` https://gitee.com/scicat-team/lunix/releases/ ``` **Lunix OS - 探索操作系统的奥秘,从引导到应用!**