# linux_study **Repository Path**: yangjam_tm/linux_study ## Basic Information - **Project Name**: linux_study - **Description**: 用ai构建一个用于学习的最小linux系统 - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-11 - **Last Updated**: 2026-05-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Linux Study — 精简类 Linux 内核 从零构建一个能在 QEMU 中运行的 x86_64 精简内核,以"剥/学 Linux 子系统"的方 式系统性学习 Linux 操作系统。 ## 快速开始 ```bash # 安装依赖 sudo apt-get install -y gcc make binutils xorriso grub-pc-bin qemu-system-x86 # 编译并运行 make -C src/kernel qemu-nox ``` 预期输出: ``` ======================================== Linux Study Kernel - P1: Boot Multiboot2 magic: 0x36d76289 Hello, World! ======================================== ``` ## 分阶段路线 | 阶段 | 内容 | 状态 | |------|------|------| | P1 | 启动引导: Multiboot2 → 长模式 → 串口输出 | ✅ | | P2 | 中断/异常处理 (IDT, 键盘中断, 除零异常) | 待开始 | | P3 | 物理内存管理 (buddy + slab, kmalloc) | 待开始 | | P4 | 虚拟内存 + 分页 (页表, mmap, 缺页异常) | 待开始 | | P5 | 进程管理 + 调度 (task_struct, CFS) | 待开始 | | P6 | 系统调用 + 用户态切换 (ring3) | 待开始 | | P7 | VFS + 文件系统 (ramfs) | 待开始 | | P8 | 块设备驱动 + ramdisk | 待开始 | | P9 | 运行 BusyBox (init → /bin/sh) | 待开始 | | P10 | 网络栈 (TCP/IP, socket) | 扩展目标 | ## 技术选型 - 架构: x86_64 (AMD64) - 启动协议: Multiboot2 + GRUB - 用户空间: BusyBox (静态链接) - 参考: Linux 6.1 LTS, Linux 0.11 - 构建: GCC + GNU Make + ld ## 目录 ``` src/kernel/ # 内核源码 ├── arch/x86_64/ # 架构相关 (boot.S, linker.ld) ├── include/ # 头文件 (kernel.h, serial.h, printk.h) ├── drivers/ # 设备驱动 (serial.c) ├── lib/ # 内核库 (printk.c) ├── kernel.c # 内核主入口 └── Makefile # 构建系统 scripts/ # QEMU 启动脚本 docs/notes/ # 学习笔记 docs/superpowers/ # 设计文档与实现计划 ``` ## 编码风格 Linux kernel style,8 字符硬制表符,Doxygen 中文注释。