{"id":21735514,"url":"https://github.com/rxchit/barebone-os-raspi3","last_synced_at":"2026-05-11T04:48:44.565Z","repository":{"id":181219271,"uuid":"452523285","full_name":"rxchit/Barebone-OS-rasPi3","owner":"rxchit","description":"A simple OS that prints \"Hello World\", for RaspberryPi 3","archived":false,"fork":false,"pushed_at":"2022-01-27T06:30:19.000Z","size":43,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-25T20:44:26.110Z","etag":null,"topics":["c","cpp","kernel","os","qemu","raspberry-pi-3"],"latest_commit_sha":null,"homepage":"","language":"C","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/rxchit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-01-27T03:15:48.000Z","updated_at":"2022-10-02T03:28:06.000Z","dependencies_parsed_at":"2023-07-14T14:49:52.534Z","dependency_job_id":null,"html_url":"https://github.com/rxchit/Barebone-OS-rasPi3","commit_stats":null,"previous_names":["rxchit/barebone-os-raspi3"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rxchit%2FBarebone-OS-rasPi3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rxchit%2FBarebone-OS-rasPi3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rxchit%2FBarebone-OS-rasPi3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rxchit%2FBarebone-OS-rasPi3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rxchit","download_url":"https://codeload.github.com/rxchit/Barebone-OS-rasPi3/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244713209,"owners_count":20497609,"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":["c","cpp","kernel","os","qemu","raspberry-pi-3"],"created_at":"2024-11-26T05:13:28.031Z","updated_at":"2026-05-11T04:48:44.520Z","avatar_url":"https://github.com/rxchit.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Barebone-OS-rasPi3\n\nA simple OS that prints \"Hello World\", for RaspberryPi 3\n\n## Pre-requisite\n\nHere I am going to describe the steps that I went through to get my dev environment set up. I am, however, going to assume that you are working in a Linux environment.\n\n### The Compiler\n\nMost likely, your computer is running on an Intel or AMD processor that uses the x86_64 architecture. The raspberry pi processor, however, uses the ARM architecture. This difference means that we cannot use regular `gcc` that is likely already installed on your machine.\n\nBuilding this kernel requires `binutils` and a `GCC cross compiler` built for the aarch64-elf target.\n\nThis [tutorial](https://wiki.osdev.org/GCC_Cross-Compiler) can be followed for any Operating System. \n\n\u003e **ArchLinux** - I however am using the [AUR build](https://aur.archlinux.org/packages/aarch64-none-elf-gcc-bin/) for aarch64-elf target ie: `aarch64-none-elf`.\n\n### The Virtual Machine\n\nI am going to use `QEMU` to run the virtual machine. Newer versions of QEMU can emulate the raspberry pi hardware. We need QEMU AARCH64 VM.\n\nWe can check if it is installed by doing `qemu-system-aarch64 --version`\n\n## Building\n\n**NOTE** : You should pass `--enable-languages=c,c++` to the GCC `configure` script. Make sure to add the install location to your `$PATH` if it isn't already.\n\nThis repo doesn't contains the `bin/` \u0026 `sysroot/` directory structures will not be present. \n\n```bash\nmake setup        #Run to create this structure.\n```\n\nTo compile, assemble, and link the code into `sysroot/kernel8.img`\n\n```bash\nmake\n```\n\nTo remove all build files \n\n```bash\nmake clean\n```\n\n## Testing\n\nTo test this code on QEMU\n\n```bash\nqemu-system-aarch64 -M raspi3b -serial null -serial stdio -kernel bin/rxchit.elf\n```\n\n\u003e ![Screenshot](images/Screenshot-20220127114359-939x364.png)\n\nTo test on actual hardware\n\n\u003e `Not tested on actual hardware yet, Use on your own accord.`\n\n## References\n\n- [OSDev](https://wiki.osdev.org/)\n\n- [Jake Sandler's Tutorial](https://jsandler18.github.io/)\n\n- [bzt's *Bare Metal Programming on Raspberry Pi 3*](https://github.com/bztsrc/raspi3-tutorial)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frxchit%2Fbarebone-os-raspi3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frxchit%2Fbarebone-os-raspi3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frxchit%2Fbarebone-os-raspi3/lists"}