All Projects → PG-MANA → Methylenix

PG-MANA / Methylenix

Licence: Apache-2.0 license
The operating system written in Rust

Programming Languages

rust
11053 projects
assembly
5116 projects
Makefile
30231 projects

Projects that are alternatives of or similar to Methylenix

SnowFlake
Technology is free, SnowFlakeOS
Stars: ✭ 38 (+18.75%)
Mutual labels:  kernel, os, operating-system
DentOS
Experimental Stand-alone 32-bit Kernel with Bootloader written in AT&T Assembly and Freestanding C
Stars: ✭ 32 (+0%)
Mutual labels:  kernel, os, operating-system
Unikraft
Unikraft is an automated system for building specialized POSIX-compliant OSes known as unikernels. (Core repository)
Stars: ✭ 183 (+471.88%)
Mutual labels:  kernel, os, operating-system
Zen
Experimental operating system written in Zig
Stars: ✭ 177 (+453.13%)
Mutual labels:  kernel, os, operating-system
beeos
A simple "Unix-like" kernel trying to be POSIX compliant
Stars: ✭ 103 (+221.88%)
Mutual labels:  kernel, os, operating-system
Pebble
Microkernel and userspace written in Rust exploring modern ideas
Stars: ✭ 184 (+475%)
Mutual labels:  kernel, os, operating-system
duckOS
Yet another hobby x86 UNIX-like operating system written in C and C++. Features a dynamically linked userspace, an in-house c standard library, and more! And yes, it runs DOOM.
Stars: ✭ 250 (+681.25%)
Mutual labels:  kernel, os, operating-system
Serenity
SerenityOS is a love letter to '90s user interfaces with a custom Unix-like core. It flatters with sincerity by stealing beautiful ideas from various other systems.
Stars: ✭ 16,842 (+52531.25%)
Mutual labels:  kernel, os, operating-system
nautilus
Nautilus Aerokernel
Stars: ✭ 30 (-6.25%)
Mutual labels:  kernel, os, operating-system
chaos-2
A hand-made SMP-aware kernel
Stars: ✭ 20 (-37.5%)
Mutual labels:  kernel, os, operating-system
Mbp Fedora
Stars: ✭ 129 (+303.13%)
Mutual labels:  kernel, os, operating-system
Macaron
A sweet hobby made operating system written in C++ for x86 CPUs with GUI
Stars: ✭ 34 (+6.25%)
Mutual labels:  kernel, os, operating-system
Emerald
An operating system written in C
Stars: ✭ 118 (+268.75%)
Mutual labels:  kernel, os, operating-system
Cyjon
A simple, clean code, multi-tasking operating system written in pure assembly language for 64-bit processors from the AMD64 family.
Stars: ✭ 184 (+475%)
Mutual labels:  kernel, os, operating-system
Tofita
🍬 All-new kernel for @GreenteaOS
Stars: ✭ 112 (+250%)
Mutual labels:  kernel, os, operating-system
Frosted
Frosted: Free POSIX OS for tiny embedded devices
Stars: ✭ 194 (+506.25%)
Mutual labels:  kernel, os, operating-system
Harmonyos
鸿蒙系统资料。Docs about HarmonyOS.
Stars: ✭ 1,191 (+3621.88%)
Mutual labels:  kernel, os, operating-system
Reactos
A free Windows-compatible Operating System
Stars: ✭ 10,216 (+31825%)
Mutual labels:  kernel, os, operating-system
Cardinal
Operating system designed to be fast and secure.
Stars: ✭ 20 (-37.5%)
Mutual labels:  kernel, os, operating-system
biefircate
Running x86-16 or x86-32 code from x86-64 UEFI; _very experimental_ • mirror of https://gitlab.com/tkchia/biefircate • developer notes at https://gitlab.com/tkchia/biefircate/-/blob/main/doc/NOTES.asciidoc
Stars: ✭ 47 (+46.88%)
Mutual labels:  kernel, os, operating-system

Methylenix

(Format:UTF-8)
The operating system written in Rust

概要

Methylenix とはRustで構成されたOSです。
起動時初期化とI/O命令などアセンブリでしかかけない箇所を除き、すべてRustで記述されています。

Methylenixとは

このプログラムの原点は、セキュリティ・キャンプ全国大会2017 集中コース「X 言語やOSを自作しよう」に受講生として参加した際に開発を行ったことです。
セキュリティ・キャンプについては、セキュリティ・キャンプ:IPA 独立行政法人 情報処理推進機構をご覧ください。 セキュリティキャンプでは割り込みまでを実装しました。(参考:セキュリティキャンプ2017参加記 | PG_MANAの雑記)

Methylenixという名前はメチレン基(Methylene)より採っています。 有機化合物みたいにいろいろな部品を組み合わせて作っていくようにモジュールを組み合わせて応用的に作っていきたいと考え、 基の中で「nix」をくっつけて語呂が良さそうなメチレン基にしました。

現状

  • APIC・GICv3によるデバイス割り込み
  • メモリ・ページング動的管理
  • タスク管理
  • マルチコア対応
  • ACPI AMLの部分的な解析とシャットダウン
  • フォント解析による簡易GUI
  • NVM Expressからのデータ読み出し
  • GPT及びFAT32からのディレクトリとファイル取得
  • 簡易アプリケーション実行

方針

  • GUIについては基本対応しない(デバイスの認識などはしておく、デバッグテキストを表示する程度)
  • 複数のアーキテクチャに対応できるような作りにしたい
  • OS自作入門レベルのこと(割り込み・音・マルチタスクなど)を当分の目標とする
  • 動的に柔軟に対応できるようにする(UEFIなどから渡される情報をしっかり活用する)

対応命令セット

  • x86_64
  • AArch64

ライセンス

Copyright 2018 PG_MANA

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

ビルド

環境整備

必要なソフトウェア

  • make
  • grub2-mkrescue
  • rustc(nightly)
  • cargo

ビルド

x86_64

git clone https://github.com/PG-MANA/Methylenix.git
cd Methylenix
make iso
# created bin/img/boot.iso

なおビルド済みのisoイメージは https://repo.taprix.org/pg_mana/methylenix/iso/ にあります。

AArch64

git clone https://github.com/PG-MANA/Methylenix.git
cd Methylenix
make TARGET_ARCH=aarch64
# created bin/EFI/BOOT/

実行

x86_64

qemu-system-x86_64が必要です。

qemu-system-x86_64 -cpu qemu64,+fsgsbase --cdrom bin/img/boot.iso

# or (OVMF)
qemu-system-x86_64 --cdrom bin/img/boot.iso -cpu qemu64,+fsgsbase -smp 2 -m 512M -bios /usr/bin/OVMF/OVMF.fd

# or (to emulate host cpu)
qemu-system-x86_64 --cdrom bin/img/boot.iso  -cpu host -smp 2 -m 512M -bios /usr/bin/OVMF/OVMF.fd --enable-kvm

AArch64

qemu-system-aarch64とAArch64向けのOVMFが必要です。

# Modify "/usr/bin/OVMF/OVMF_AARCH64.fd" to your suitable path
qemu-system-aarch64 -m 1G -cpu a64fx -machine virt,virtualization=on,gic-version=3 -smp 4 -nographic -bios /usr/bin/OVMF/OVMF_AARCH64.fd  -drive file=fat:rw:bin/,format=raw,media=disk

ドキュメント

cargo doc --open 

コーディング規約

基本は https://doc.rust-lang.org/1.1.0/style/style/naming/README.html に従ってください。 コード整形はrustfmtを使用します。
(本人が守れてないかも)

リンク

開発者のTwitterアカウント

https://twitter.com/PG_MANA_

開発者のWebページ

https://pg-mana.net

公式ページ

https://methylenix.org (現在はGitHubへリダイレクトするだけ。いつできるかな。)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].