{"id":13668017,"url":"https://github.com/ks0n/goOSe","last_synced_at":"2025-04-26T18:31:01.473Z","repository":{"id":36961017,"uuid":"250062343","full_name":"ks0n/goOSe","owner":"ks0n","description":"A minimal Kernel written in Rust","archived":false,"fork":false,"pushed_at":"2024-10-31T16:45:49.000Z","size":764,"stargazers_count":43,"open_issues_count":5,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-26T05:16:35.537Z","etag":null,"topics":["goose","hacktoberfest","kernel","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ks0n.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2020-03-25T18:44:43.000Z","updated_at":"2024-10-21T12:19:39.000Z","dependencies_parsed_at":"2023-02-14T01:30:45.008Z","dependency_job_id":"bfddcc65-f469-45ba-b633-4ec56caa079c","html_url":"https://github.com/ks0n/goOSe","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/ks0n%2FgoOSe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ks0n%2FgoOSe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ks0n%2FgoOSe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ks0n%2FgoOSe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ks0n","download_url":"https://codeload.github.com/ks0n/goOSe/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251035295,"owners_count":21526343,"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":["goose","hacktoberfest","kernel","rust"],"created_at":"2024-08-02T07:00:59.686Z","updated_at":"2025-04-26T18:30:57.829Z","avatar_url":"https://github.com/ks0n.png","language":"Rust","funding_links":[],"categories":["Rust"],"sub_categories":[],"readme":"# goose\n\nA micro Kernel written in Rust. The goal is to have a small number of syscall \nwith a strong emphasis on IPC\n\n## Roadmap\n\n- [ ] Virtual Memory Manager (in progress)\n- [ ] Basic in-kernel filesystem\n- [ ] Device-tree handling\n- [x] In-kernel ELF loader\n- [ ] Userland process (in progress)\n- [ ] IPC implementation\n- [ ] Drivers\n    - [ ] Driver API\n    - [ ] Kernel API\n\n## Project structure\n\nThe project is divided in 2 components, the kernel and the drivers. Most of the \ndrivers runs in userland, but some are required to run in kernel just to \nprovide the basic kernel functionalities (UART, interrupt hardware, ...)\n:warning: **At the moment userland drivers are not implemented**\n\n## Try it out\nChoose your desired board:\n- Qemu RISC-V (virt) --\u003e `riscv_qemuvirt`\n- Qemu AArch64 (virt) --\u003e `aarch64_qemuvirt`\n\nThen just run:\n```console\n$ cargo run\n```\n\nFor qemu target it will launch Qemu. For other targets the hope is to flash them instead\n\n### Requirement\n- A rust nightly toolchain\n- Clang compiler (for tests)\n\n#### Nix\nIf you use Nix you can run `nix develop` to get a shell with everything needed\nto test GoOSe\n\n### Build\n#### Board project\nGo to a board project (ex. riscv_qemuvirt) and then:\n```console\n$ cargo build\n```\n\n#### Kernel, hal, ...\nWhen building, you need to specify which target triplet to use with \n`--target \u003ctriplet_here\u003e`. Here is the list of triplet to use depending on the \ntargeted architecture:\n- RISC-V --\u003e `riscv64gc-unknown-none-elf`\n- AArch64 --\u003e `aarch64-unknown-none`\n\nGo to the component folder and then:\n```console\n$ cargo build --target \u003ctriplet_here\u003e\n```\n\n### Tests\nGoOSe also comes with unit tests that run directly on hardware and output the \nresult over serial. When using Qemu, you can also have an exit code != 0 on \nfailure.\n\n```console\n$ make -C kernel/fixtures \u003ctriplet_here\u003e\n...\n$ cargo tests --bin \u003cbin_here\u003e --target \u003ctriplet_here\u003e\n...\n```\n:warning: **Tests might be slow to run as GoOSe is not really optimized. You can\nappend `--release` to the previous cargo command line to boost performance but \nplease be aware that some test might pass in debug and not in release. Feel \nfree to open an issue if you encounter such a case**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fks0n%2FgoOSe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fks0n%2FgoOSe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fks0n%2FgoOSe/lists"}