{"id":47019586,"url":"https://github.com/floss-uz-community/sark","last_synced_at":"2026-03-11T22:02:41.702Z","repository":{"id":271021713,"uuid":"909869515","full_name":"floss-uz-community/sark","owner":"floss-uz-community","description":"SARK - Sokhibjon's ARM RaspberryPi Kernel","archived":false,"fork":false,"pushed_at":"2025-11-04T14:40:14.000Z","size":6635,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-04T16:16:18.511Z","etag":null,"topics":["raspberry-pi","rust","rust-embedded"],"latest_commit_sha":null,"homepage":"http://sark.kibertexnik.uz/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/floss-uz-community.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license-apache","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":"2024-12-29T23:50:37.000Z","updated_at":"2025-11-04T14:40:20.000Z","dependencies_parsed_at":"2025-03-02T07:51:04.829Z","dependency_job_id":"6784ef77-ff9f-464c-af1c-4da2a323ee4e","html_url":"https://github.com/floss-uz-community/sark","commit_stats":null,"previous_names":["kibertexnik/sark","floss-uz-community/sark"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/floss-uz-community/sark","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/floss-uz-community%2Fsark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/floss-uz-community%2Fsark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/floss-uz-community%2Fsark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/floss-uz-community%2Fsark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/floss-uz-community","download_url":"https://codeload.github.com/floss-uz-community/sark/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/floss-uz-community%2Fsark/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30404100,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T21:51:19.558Z","status":"ssl_error","status_checked_at":"2026-03-11T21:50:57.892Z","response_time":84,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["raspberry-pi","rust","rust-embedded"],"created_at":"2026-03-11T22:02:40.241Z","updated_at":"2026-03-11T22:02:41.693Z","avatar_url":"https://github.com/floss-uz-community.png","language":"Rust","readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\".github/assets/header.png\" alt=\"Kibertexnik's {Sark}\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ch3 align=\"center\"\u003eMinimal embedded monolith kernel for Raspberry Pi boards.\u003c/h3\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003cimg align=\"center\" src=\"https://img.shields.io/github/languages/top/kibertexnik/sark?style=flat\u0026logo=rust\u0026logoColor=ffffff\u0026labelColor=242424\u0026color=242424\" alt=\"Top Used Language\"\u003e\n    \u003ca href=\"https://github.com/kibertexnik/sark/actions/workflows/test.yml\"\u003e\u003cimg align=\"center\" src=\"https://img.shields.io/github/actions/workflow/status/kibertexnik/sark/test.yml?style=flat\u0026logo=github\u0026logoColor=ffffff\u0026labelColor=242424\u0026color=242424\" alt=\"Test CI\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## About\n\nAfter attempting to strip down Linux kernel to remove any unnecessary driver \u0026 support and achieve minimal size and performant Linux kernel, another\nmotivation to write own kernel was born as a research \u0026 experiment done afterwork. The main purpose of the project is to attempt to ship embed\nsoftware right into kernel itself, so it's native and booting kernel will run everything necessary.\n\n\u003e This project **doesn't accept PRs** as it's very immature and not well shaped yet.\n\u003e This project is just an experiment conducted in [Kibertexnik](https://github.com/kibertexnik) and maintained by [@orzklv](https://github.com/orzklv) himself.\n\n## Features\n\n- Written on Rust\n- Monolith model\n- Raspberry 3, 4, 5\n- Conditional targetting\n- Embedded software/product\n\n## Development\n\n### Prerequisites\n\nSetting up Rust embedded toolchain is a bit of tidious proceses. Therefore, a few prerequisite software should be installed before you start working with the project.\n\n#### Nix / Nix-less\n\nIf you have Nix package manager installed on your machine or your Linux distribution happens to be NixOS, then you're partially ready to go just by executing (I've already done the dirtiest job part for you):\n\n```shell\nnix develop -c $SHELL\n```\n\nIf you don't have Nix package manager installed machine and you want to do everything imperative way, just open [shell.nix:17-45](https://github.com/kibertexnik/sark/blob/26e0660725a2e88f877dea10f686150af737d08e/shell.nix#L17-L45) and install whatever software inside this array. After doing so, you need to install nightly version of Rust programming language toolchain with the exact version stated in [rust-toolchain.toml](https://github.com/kibertexnik/sark/blob/main/rust-toolchain.toml). Also, don't forget to install target specific standard library \"rust-src\" and components as stated in toolchain file. I don't know what operating system you do use, so you gotta figure out yourself how to get these installed, my responsibility ends at provoding full Nix \u0026 Docker dev container support.\n\n#### Docker / Development Image\n\nMake sure to have docker installed on your computer to be able to run development container which will help you to utilize ARM embedded tooling. Well, I'm not going to teach you how to install docker on your PC, you're free to google it. Just make sure it is installed and running on background. _I tried my best to create the dev env entirely on Nix, but imperative nature of [Arm LLC ](https://arm.com) won't let me do so._\n\nAfter the installation process, you need to decide whether will you build the devkit image from scratch (recommended if you have couple CPU cores biting dust in the corner) or fetch daily built image from our registry.\n\nIf you decide to fetch pre-built image:\n\n```shell\ndocker pull ghcr.io/kibertexnik/sark-dev:main\n```\n\nIf you decide to build image locally from scratch:\n\n```shell\ncd ./.github/docker \u0026\u0026 make local\n```\n\n### Development Environment\n\nNow when you're done with setting up all necessary stuff to proceed with development, a few things you should know:\n\n#### Commands\n\nI wrote a huge ass Makefile to simplify environment \u0026 args settings. You can execute:\n\n- `make test` - Run tests to make sure correct kernel behavior\n- `make qemu` - Compiling \u0026 running compiled image on qemu emulator\n- `make clippy` - Linting rust codebase with clippy\n- `make clean` - Clean up compiled ojbects and binaries\n- `make readelf` - Parse and show ELF header metatags\n- `make objdump` - Explore binary's assembly instruction sets\n- `make doc` - Open developer documentation (mostly from author)\n- `make nm` - Explore binary's command sequence\n\n#### Makefile\n\nThere are few properties that can be set to change compilation behavior. Let's start with:\n\n- `BSP` - this property is used to specify the geneartion of raspberry's board to which compiler will compile for and emulate images on. [Refer to for more](https://github.com/kibertexnik/sark/blob/26e0660725a2e88f877dea10f686150af737d08e/Makefile#L23-L68)\n- `SERIAL` - specify whether the emulated environment should show assembly of running image or serial outputs. [Refer to for more](https://github.com/kibertexnik/sark/blob/26e0660725a2e88f877dea10f686150af737d08e/Makefile#L28-L32)\n- `DOCKER` - use only docker or nix environment in all commands. [WIP]\n\n#### Developer documentation\n\nThere are also some developer/maintainer written documentation acrosos all codebases which can be accessed either by running `make doc` or opening [https://kibertexnik.github.io/sark](http://sark.kibertexnik.uz/).\n\n## License\n\nThis project is licensed under dual licensing as the Apache-2.0 and MIT License - see the [LICENSE-APACHE](license-apache) or [LICENSE-MIT](license-mit) file for details.\n\n\u003cp align=\"center\"\u003e\n    \u003cimg src=\".github/assets/footer.png\" alt=\"Kibertexnik's {Sark}\"\u003e\n\u003c/p\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffloss-uz-community%2Fsark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffloss-uz-community%2Fsark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffloss-uz-community%2Fsark/lists"}