# 海洋OS:一个个人电脑操作系统 [![996.icu](https://img.shields.io/badge/link-996.icu-red.svg)](https://996.icu) **警告:** 这个项目还在非常早的开发阶段,操作系统尚未准备好用户程序环境。使用者或开发者应该考虑任何在虚拟机或裸机中运行的风险。 当前这个项目只支持x86_64架构。未来可能会支持aarch64。 # 代码结构 - `debug` - 存储反汇编文件、调试符号表、二进制文件信息和虚拟机的串口记录文件。 - `h2o` - 存储内核的源代码。 - `scripts` - 存储构建项目需要的脚本。 - `src` - 存储整个项目的库和程序代码。 - `target` - 存储生成的二进制和虚拟硬盘映像文件。 - `xtask` - 存储这个项目的构建程序。 # 从源码构建 ## Linux 1. 安装Rust和其他依赖(以Ubuntu为例): ```sh # 配置 Rust 时需要选择 nightly 通道 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)" sudo apt install build-essential qemu-system-x86 ``` 2. 添加下列目标: ```sh rustup target add x86_64-unknown-linux-gnu ``` 3. 切换到项目的根目录,运行以下命令: ```sh cargo xtask dist img ``` 4. 运行以下命令以在qemu上运行: ```sh sh scripts/run.sh qemu N # N为CPU核心数 ``` 查看`debug/qemu.log`文件,就能看到操作系统的输出。 5. 运行以下命令以在qemu上调试: ```sh sh scripts/run.sh qdbg N # 同上 ``` 然后打开新终端: ```sh # 切换到项目的根目录 gdb debug/FOO.sym # FOO是想要调试的二进制文件对应的名称, # 可以先浏览debug目录看看。 # 在gdb里: target remote :1234 ``` 然后就可以设置断点(以KERNEL.sym为例): ```sh b kmain c ``` 6. 如果你想要用其他虚拟机运行项目,先查看run.sh,然后手动创建虚拟机的配置文件。不要忘了添加生成的虚拟硬盘和串口文件,否则会看不到输出! # 贡献 如果想要贡献源码或其他,请先联系我。 * 电子邮件: [akucxy@163.com](mailto:akucxy@163.com) * QQ: 2534027071