{"id":26418158,"url":"https://github.com/mrkct/pi0-os","last_synced_at":"2025-06-26T11:33:01.514Z","repository":{"id":200178188,"uuid":"704977677","full_name":"mrkct/pi0-os","owner":"mrkct","description":"A from-scratch operating system for the raspberry pi zero","archived":false,"fork":false,"pushed_at":"2025-05-29T08:00:44.000Z","size":6310,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-23T12:13:59.540Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","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/mrkct.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,"zenodo":null}},"created_at":"2023-10-14T17:18:21.000Z","updated_at":"2025-05-29T08:00:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"b95475b6-d429-4868-b31b-25acd994d404","html_url":"https://github.com/mrkct/pi0-os","commit_stats":null,"previous_names":["mrkct/pi0-os"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mrkct/pi0-os","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrkct%2Fpi0-os","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrkct%2Fpi0-os/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrkct%2Fpi0-os/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrkct%2Fpi0-os/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrkct","download_url":"https://codeload.github.com/mrkct/pi0-os/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrkct%2Fpi0-os/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262056344,"owners_count":23251663,"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":"2025-03-18T01:17:08.039Z","updated_at":"2025-06-26T11:33:01.501Z","avatar_url":"https://github.com/mrkct.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pi0-os\n\nA fully from scratch operating system the QEMU ARM \"virt\" machine\nand the Raspberry Pi Zero.\nStill need to find a good name for it.\n\nThere's barely a GUI or any usable software, but you can run DOOM:\n![DOOM](docs/pics/qemu-doom.png)\n\n\n## How to try it out\n\nThe easiest way to try it out is to install `qemu-system-arm`, download a package\nfrom the CI pipeline and run the script inside it.\nThat will start a QEMU instance setup with peripherals and a disk image with all\nthe available programs for you to play with.\n\n## Build instructions\n\nThere is a Docker image that can be used to build the project.\nYou cannot use it to run QEMU though, so you'll have to install `qemu-system-arm`\nseparately outside of it, and also `make`.\n\nTo build using Docker, run the following commands:\n\n```\ndocker build -t pi0-os .\ndocker run -v $(pwd):/pi0-os pi0-os\n```\n\nThis will build the kernel, all of the userland programs and automatically\ncreate a disk image.\n\nRunning `make qemu` will start the QEMU instance using the built kernel\nand disk image.\n\n## Debugging and stuff\n\nHere's a useful `.gdbinit`, add it to your `kernel/` directory.\n\n```\ntarget remote localhost:1234\nfile kernel.elf\nadd-symbol-file boot/boot.elf\n```\n\n`make qemu-gdb` will start QEMU with the GDB stub enabled and paused.\nOn another terminal, run `gdb-multiarch` inside the `kernel/` directory\nand it will automatically attach to the running QEMU instance and load\nthe symbols file for both the kernel and the bootloader.\n\n### Reverse debugging\n\n`RECORD=1 make qemu` will record the execution of QEMU.\n`REPLAY=1 make qemu-gdb` will replay the recorded execution\n\n# Acknowledgements\n\n* [Flanterm by Mintsuki](https://codeberg.org/mintsuki/flanterm) for the default terminal emulator\n* [kilo by antirez](https://github.com/antirez/kilo) for the default text editor\n* [doomgeneric by ozkl](https://github.com/ozkl/doomgeneric) for the port of DOOM\n* Linux for some headers containing declarations for ELF, VirtIO and other stuff\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrkct%2Fpi0-os","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrkct%2Fpi0-os","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrkct%2Fpi0-os/lists"}