GNU General Public License v3.0

项目介绍

PauloMigAlmeida/AlmeidaOS 是一个托管在 GitHub 上的开源项目,主要使用 C 编写,采用 GNU General Public License v3.0 许可证,目前获得 67 个 Star、5 次 Fork。

仓库全名
PauloMigAlmeida/AlmeidaOS
开源许可证
GNU General Public License v3.0
Star 数
67
Fork 数
5

README 摘要

AlmeidaOS Simple, self-contained, clean code, well-documented, hobbyist 64-bit operating system for Intel and AMD processors. It's written in Assembly (Intel syntax) and C (GNU99 Standard) in which I strive for adding comments to the source code as much as possible so it could be used as a reference for future OS developers. It contains the following components written from scratch: BIOS Component | Description |…

完整内容见 GitHub 原始 README 或本页 。

常见问题

AlmeidaOS 用什么语言开发?

主要使用 C 编写,采用 GNU General Public License v3.0 许可证,目前有 67 个 Star。

AlmeidaOS 可以免费商用吗?

仓库标注的许可证为 GNU General Public License v3.0,商用前请先阅读仓库 LICENSE 文件确认授权范围。

如何获取 AlmeidaOS 的源码?

可以直接克隆仓库:git clone https://github.com/PauloMigAlmeida/AlmeidaOS.git,默认分支为 main;安装与运行步骤见仓库 README。

AlmeidaOS 最近还在维护吗?

仓库最近一次更新为 2022年5月6日,当前没有未关闭的 Issue;Star 数为 67,可作为社区活跃度的参考。

关于

GitHub 原始描述(英文)

Simple, self-contained, clean code, well-documented, hobbyist 64-bit operating system for Intel and AMD processors. It's written in Assembly (Intel syntax) and C (GNU99 Standard) in which I strive for adding comments to the source code so it could be used as a reference for future OS developers

描述取自 GitHub 官方 API,保持仓库作者书写的原文。

语言占比

Assembly
C
Dockerfile
Makefile
Shell

README

AlmeidaOS

Codacy Badge

Simple, self-contained, clean code, well-documented, hobbyist 64-bit operating system for Intel and AMD processors. It’s written in Assembly (Intel syntax) and C (GNU99 Standard) in which I strive for adding comments to the source code as much as possible so it could be used as a reference for future OS developers.

It contains the following components written from scratch:

BIOS

Component Description Source code
MBR First stage bootloader code
Loader Second stage bootloader code

Kernel

Component Description Source code
PML4 Paging Structure code
Buddy Memory allocator System code
PrintK printf-like string format parsing utility code
Serial Driver send printk msgs via RS232 to help debugging code
Core Dump Dump CPU registers for debugging purposes code
Syscall/Sysret method chosen to jump to Ring 3 and back code
PIT Programmable Interval Timer code
PIC Programmable Interrupt Controller code
(x)delay Based on tightloops given that I’m using PIT code
CMOS RTC Real-time clock code
Scheduler Simple Round-Robin scheduler code

libc

functions are being added on-demand: code

More to come! Star/Watch this repo to stay tuned!

Build

In order to build this app, you are expected to have make and docker installed in your machine. All of the other building dependencies should be taken care of automatically by the docker image created during this step.

To build it you have to run:

make build

Run

In order to run this app, you are expected to have make and qemu-system-x86_64 installed in your machine.

make test

Wishlist

To make sure I won’t lose focus on what I want this OS to be able to do, I decided to write a list of features that I want to implement in the short to medium term.

  • Serial port driver
  • Early printk (contingent on serial port driver) -> will help debugging in real computers
  • limited libc -> (It will always be “Work in progress” as I add functions as I need them)
  • Userspace
  • Rudimentary Bash-like terminal

Stretch goals

Things that would be fantastic to have but I am not sure if I have what it takes to do within my lifetime.

  • networking capabilities (I would be damn happy with UDP already…I wouldn’t dare trying to implement TCP)
  • Filesystem
  • Scheduler / Time-sharing OS

References

These are all the references that helped me a lot during the development of AlmeidaOS

Forums:

Books:

Existing OSes:

Courses:

评论

暂无评论