{"id":13472313,"url":"https://github.com/vinc/moros","last_synced_at":"2025-05-14T05:10:41.865Z","repository":{"id":37458520,"uuid":"230675285","full_name":"vinc/moros","owner":"vinc","description":"MOROS: Obscure Rust Operating System 🦉","archived":false,"fork":false,"pushed_at":"2025-04-23T04:18:02.000Z","size":2730,"stargazers_count":988,"open_issues_count":16,"forks_count":37,"subscribers_count":13,"default_branch":"trunk","last_synced_at":"2025-05-12T22:49:57.444Z","etag":null,"topics":["hobby-os","operating-system","os","osdev","rust","toy-os","x86-64"],"latest_commit_sha":null,"homepage":"http://moros.cc","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vinc.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-12-28T22:28:45.000Z","updated_at":"2025-05-11T11:20:56.000Z","dependencies_parsed_at":"2024-04-02T08:44:07.099Z","dependency_job_id":"f8bb3f19-98c3-42b0-8e85-09775f6b13a5","html_url":"https://github.com/vinc/moros","commit_stats":{"total_commits":466,"total_committers":6,"mean_commits":77.66666666666667,"dds":0.2660944206008584,"last_synced_commit":"4d50eae2874c4151654fdb75a503600346b9094e"},"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinc%2Fmoros","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinc%2Fmoros/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinc%2Fmoros/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vinc%2Fmoros/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vinc","download_url":"https://codeload.github.com/vinc/moros/tar.gz/refs/heads/trunk","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254076850,"owners_count":22010611,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hobby-os","operating-system","os","osdev","rust","toy-os","x86-64"],"created_at":"2024-07-31T16:00:53.730Z","updated_at":"2025-05-14T05:10:41.847Z","avatar_url":"https://github.com/vinc.png","language":"Rust","readme":"# MOROS: Obscure Rust Operating System\n\n![screenshot](doc/images/moros.png)\n\nMOROS is a hobby operating system written in Rust by [Vincent Ollivier][0].\n\nIt targets computers with a x86-64 architecture and a BIOS, so mostly from 2005\nto 2020, but it also runs well on most emulators (Bochs, QEMU, and VirtualBox).\n\nThis project started from the [seventh post][1] of the second edition of\n[Writing an OS in Rust][2] by Philipp Oppermann and by reading the\n[OSDev wiki][3] along with many open source kernels.\n\n[![GitHub Actions][s1]](https://github.com/vinc/moros)\n[![Crates.io][s2]](https://crates.io/crates/moros)\n\n## Features\n\n- External bootloader (using [bootloader][4])\n- x86 CPU support (using [x86_64][5])\n- Hardware interrupts (using [pic8259][6])\n- PS/2 Keyboard with customizable layout (using [pc-keyboard][7])\n- VGA Text mode with customizable font and color palette\n- Serial output (using [uart_16550][8])\n- Paging\n- Heap allocation (using [linked_list_allocator][9])\n- ACPI shutdown (using [acpi][10] and [aml][11])\n- RTC clock\n- PCI devices\n- ATA PIO mode\n- Random number generator (using [rand_hc][12])\n- Intel PRO/1000, RTL8139, and AMD PCNET network cards\n- DHCP/IP/TCP/UDP/DNS/HTTP network protocols (using [smoltcp][13])\n- Basic [filesystem](doc/filesystem.md)\n- Basic [shell](doc/shell.md)\n- Basic [text editor](doc/editor.md)\n- Basic [lisp](doc/lisp.md) interpreter\n- Basic userspace for NASM and Rust programs\n- Some file and [network](doc/network.md) commands\n- Some [games](doc/games.md)\n\n## Documentation\n\nDocumentation is available [here](doc/index.md)\n\n## Setup\n\nYou will need `git`, `gcc`, `make`, `curl`, `qemu-img`,\nand `qemu-system-x86_64` on the host system.\n\nClone the repo:\n\n    $ git clone https://github.com/vinc/moros\n    $ cd moros\n\nInstall the required tools with `make setup` or the following commands:\n\n    $ curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain none\n    $ rustup show\n    $ cargo install bootimage\n\n## Usage\n\nBuild the image to `disk.img`:\n\n    $ make image output=video keyboard=qwerty\n\nRun MOROS in QEMU:\n\n    $ make qemu output=video nic=rtl8139\n\nRun natively on a x86 computer by copying the bootloader and the kernel to a\nhard drive or USB stick (but there is currently no USB driver so the filesystem\nwill not be available in that case):\n\n    $ sudo dd if=target/x86_64-moros/release/bootimage-moros.bin of=/dev/sdx\n\nMOROS will open a console in diskless mode after boot if no filesystem is\ndetected. The following command will setup the filesystem on a hard drive,\nallowing you to exit the diskless mode and log in as a normal user:\n\n    \u003e install\n\n**Be careful not to overwrite the hard drive of your OS when using `dd` inside\nyour OS, and `install` or `disk format` inside MOROS if you don't use an\nemulator.**\n\n## Tests\n\nRun the test suite in QEMU:\n\n    $ make test\n\n## License\n\nMOROS is released under MIT.\n\n[0]: https://vinc.cc\n[1]: https://github.com/phil-opp/blog_os/tree/post-07\n[2]: https://os.phil-opp.com\n[3]: https://wiki.osdev.org\n[4]: https://github.com/rust-osdev/bootloader\n[5]: https://crates.io/crates/x86_64\n[6]: https://crates.io/crates/pic8259\n[7]: https://crates.io/crates/pc-keyboard\n[8]: https://crates.io/crates/uart_16550\n[9]: https://crates.io/crates/linked_list_allocator\n[10]: https://crates.io/crates/acpi\n[11]: https://crates.io/crates/aml\n[12]: https://crates.io/crates/rand_hc\n[13]: https://crates.io/crates/smoltcp\n\n[s1]: https://img.shields.io/github/actions/workflow/status/vinc/moros/rust.yml\n[s2]: https://img.shields.io/crates/v/moros.svg\n","funding_links":[],"categories":["Rust","Applications","General Operating System","Recently Updated","Open Source Operating Systems"],"sub_categories":["Operating systems","[Dec 17, 2024](/content/2024/12/17/README.md)"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvinc%2Fmoros","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvinc%2Fmoros","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvinc%2Fmoros/lists"}