{"id":19549109,"url":"https://github.com/bsfishy/sanders","last_synced_at":"2026-06-09T22:31:26.780Z","repository":{"id":57657576,"uuid":"408224158","full_name":"BSFishy/sanders","owner":"BSFishy","description":"A microkernel written in Rust","archived":false,"fork":false,"pushed_at":"2024-02-05T18:35:09.000Z","size":233,"stargazers_count":1,"open_issues_count":5,"forks_count":0,"subscribers_count":2,"default_branch":"develop","last_synced_at":"2025-02-09T05:13:18.681Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/BSFishy.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-09-19T19:59:00.000Z","updated_at":"2021-09-29T20:47:03.000Z","dependencies_parsed_at":"2022-08-26T05:22:00.580Z","dependency_job_id":null,"html_url":"https://github.com/BSFishy/sanders","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BSFishy%2Fsanders","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BSFishy%2Fsanders/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BSFishy%2Fsanders/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BSFishy%2Fsanders/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BSFishy","download_url":"https://codeload.github.com/BSFishy/sanders/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240806764,"owners_count":19860759,"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":[],"created_at":"2024-11-11T03:57:56.574Z","updated_at":"2026-06-09T22:31:25.731Z","avatar_url":"https://github.com/BSFishy.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# s\u0026ers\n\n\u003e :warning: **s\u0026ers is currently on hold.** :warning:\n\u003e I really like the idea I've come up with, however I don't have the time to be working on it right now.\n\u003e Eventually, I will come back to it, but for now, it's on hold.\n\u003e If you're interested in the project, feel free to reach out to me and I can give you more information about it.\n\n[![License](https://img.shields.io/github/license/BSFishy/sanders)](https://github.com/BSFishy/sanders/blob/develop/LICENSE)\n[![Build status](https://img.shields.io/github/workflow/status/BSFishy/sanders/Build?logo=github-actions\u0026logoColor=white)](https://github.com/BSFishy/sanders/actions/workflows/build.yml)\n\ns\u0026ers is a [microkernel](https://en.wikipedia.org/wiki/Microkernel) written in [Rust](https://www.rust-lang.org/).\nIts goal is to be simple, secure, and very fast.\n\ns\u0026ers is written all lowercase (never capitalized) and pronounced \"sanders\".\nWhen writing s\u0026ers in a non-code context, it is always written \"s\u0026ers\" (with an ampersand).\nWhen writing s\u0026ers in a code context, it is fully written out as \"sanders\".\n\ns\u0026ers is roughly based upon the [Writing an OS in Rust](https://os.phil-opp.com/) blog series.\nAlthough s\u0026ers has diverged quite a bit and is a microkernel, rather than a monolithic kernel, it has its roots in that blog series.\nWe strongly recommend you read through that series, as it has a plethora of good information for systems development in Rust.\n\n## Documentation\n\ns\u0026ers code is thoroughly documented and gives numerous examples and notes.\nYou can read through the code to read it, check out the generated [rustdoc](https://doc.rust-lang.org/rustdoc/what-is-rustdoc.html) documentation (TODO: generate this and host it somewhere), or read through our documentation directory.\n\nThe [docs](./docs/readme.md) directory contains extensive documentation on numerous topics, including but not limited to project structure and management, safety of the code in s\u0026ers, and systems development in Rust.\nIf you would like to read more in-depth information about anything related to s\u0026ers, feel free to read through that directory.\n\n## Usage\n\n\u003e Right now, s\u0026ers is still quite early in development and prone to bugs and issues.\n\u003e It is not recommended using it in any production system.\n\u003e Additionally, development is done on Linux systems.\n\u003e It may not necessarily be impossible to work on it using other operating systems, however it is not officially supported.\n\nAll the necessary tools for building and running s\u0026ers are included in our [Cargo](https://doc.rust-lang.org/cargo/) configuration.\nThe only external program you may need to install is [QEMU](https://www.qemu.org/).\nQEMU makes it easy and fast to spin up virtual machines running s\u0026ers and is fully integrated into our configuration.\n\n### Rust nightly\n\ns\u0026ers uses certain Rust features that are experimental and only available in [Rust nightly](https://rust-lang.github.io/rustup/concepts/channels.html).\nWe are watching Rust closely, and excitedly waiting for these features to be stable, but until they are, you will need to install Rust nightly to be able to build and contribute to s\u0026ers.\nThe easiest way to achieve this is through [rustup](https://rustup.rs/).\nrustup is a program that makes it easy and fast to manage multiple Rust installations.\n\nIn order to install Rust nightly along with all the necessary components, simply run the following:\n\n```commandline\n~$ rustup update\n```\n\nFrom there, you should be able to use s\u0026ers!\n\n### Building\n\ns\u0026ers uses the [`bootimage`](https://crates.io/crates/bootimage) crate to generate bootable executables.\nYou will need to install it first if you plan on building a bootable image.\nThis is extremely simple, and all you need to do is run the following:\n\n```commandline\n~$ cargo install bootimage\n```\n\nTo build s\u0026ers into a bootable binary, you can simply run the following:\n\n```commandline\n~$ cargo bootimage\n```\n\nThis will build s\u0026ers in `target/x86_64-unknown-none/debug/bootimage-sanders.bin`.\nThis is a full-fat x86_64 binary that can be booted from.\nYou can then boot from it in a virtual machine or burn it to a USB using the following command (on Linux):\n\n```commandline\n~$ dd if=target/x86_64-unknown-none/debug/bootimage-sanders.bin of=/dev/sdX \u0026\u0026 sync\n```\n\nWhere `sdX` is your USB device.\n**NOTE:** make sure that this is your USB device, otherwise bad things can happen!\n\n#### Release builds\n\nRelease builds can also be generated using Cargo.\nThese are builds that have more aggressive optimizations and are better suited for actual real-world usage.\n_Again, s\u0026ers is quite early in development, so it is recommended to not use it in the real world._\nTo generate a release build, simply run the following:\n\n```commandline\n~$ cargo bootimage --release\n```\n\nThis will generate the binary in `target/x86_64-unknown-none/release/bootimage-sanders.bin` this time.\n\n### Running\n\nRunning s\u0026ers is extremely simple if you have QEMU installed.\nWe can let Cargo take care all the building and external command nonsense and just tell it to run our project.\nWe don't even need to create a build before we run it (although the run command will build the project if you haven't already).\nJust keep in mind that running, by default, uses the `bootimage` crate, which is described in the [Building](#building) section.\n\nTo run s\u0026ers in a virtual machine, using QEMU, run the following:\n\n```commandline\n~$ cargo run\n```\n\nThis will build s\u0026ers, generate a bootable disk image, then run QEMU using the generated image.\n\n### Testing\n\nTesting, similar to [running](#running), can be taken care of by Cargo.\nOur configuration will automatically include all unit tests and integration tests, start them all in headless QEMU instances, and return the result.\nTo run these tests, simply run the following:\n\n```commandline\n~$ cargo test\n```\n\n## Status\n\nCurrently, s\u0026ers is in early development.\nUsing the [list from OSDev.org](https://wiki.osdev.org/Creating_an_Operating_System), s\u0026ers is currently in phase 1 out of 5.\nIt is not recommended to use s\u0026ers in any real world application, however if you're interested in learning about operating systems or want to test out something new, feel free.\n\n## MSRV\n\ns\u0026ers uses features only available in Rust nightly, so at this time, only the most recent nightly build is supported.\n\n# License\n\ns\u0026ers is under the [MIT license](https://choosealicense.com/licenses/mit/).\nYou are allowed to use s\u0026ers commercially, distribute it, modify it, and use it privately, so long as you include the license and copyright notices.\nNo liability nor warranty is provided.\nMore information can be found in the [LICENSE](./LICENSE) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbsfishy%2Fsanders","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbsfishy%2Fsanders","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbsfishy%2Fsanders/lists"}