https://github.com/vaishaks/vosix
Attempt at writing a bare-metal Operating System for the Raspberry Pi 3.
https://github.com/vaishaks/vosix
operating-system operating-system-learning os raspberry-pi-3
Last synced: 12 months ago
JSON representation
Attempt at writing a bare-metal Operating System for the Raspberry Pi 3.
- Host: GitHub
- URL: https://github.com/vaishaks/vosix
- Owner: vaishaks
- License: gpl-3.0
- Created: 2018-08-26T23:30:50.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-09-12T06:02:35.000Z (over 7 years ago)
- Last Synced: 2025-02-13T12:53:39.819Z (about 1 year ago)
- Topics: operating-system, operating-system-learning, os, raspberry-pi-3
- Language: C
- Size: 58.6 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Vosix
My attempt at writing a bare-metal Operating System for the Raspberry Pi 3 Model B.
## Useful Tutorials
- [s-matyukevich/raspberry-pi-os](https://github.com/s-matyukevich/raspberry-pi-os): This repository contains a step-by-step guide that teaches how to create a simple operating system (OS) kernel from scratch.
- [bxtsrc/raspi3-tutorial](https://github.com/bztsrc/raspi3-tutorial): This tutorial series are made for those who would like to compile their own bare metal application for the Raspberry Pi.
These guys are awesome for creating these tutorials! I reccomend that you check them out. This repo is my experiments using what I learn from their tutorials.
## Development Environment
I'm developing this on Windows using the Windows subsystem for Linux because I had some trouble with running docker on Windows. If you're running Linux or if you can setup docker without any issues, that could serve as a good environment too.
If you're building this on Linux or on the Windows subsystem for Linux, then run the following commands to setup build dependencies for this repo:
```
sudo apt-get update
sudo apt-get install -y gcc-aarch64-linux-gnu build-essential
````
I'm using qemu-system-arm and the raspi machine to debug the code locally. As of writing this (08/26/18), qemu 2.5 is available for Ubuntu 16.04. The raspi machine is included from qemu 2.12. So I had to compile the latest qemu locally using the [following steps](https://raspberrypi.stackexchange.com/questions/34733/how-to-do-qemu-emulation-for-bare-metal-raspberry-pi-images/85135#85135).
````
# Install qemu build dependencies
sudo apt-get install git libglib2.0-dev libfdt-dev libpixman-1-dev zlib1g-dev
sudo apt-get install libnfs-dev libiscsi-dev
# Clone the qemu repository
git clone git://git.qemu.org/qemu.git
cd qemu
# Checkout a stable version
git checkout v2.12.0
# Configure and build
./configure --target-list=aarch64-softmmu
make -j`nproc`
# Export to path or add path to .bashrc
export PATH="$(pwd)/aarch64-softmmu:${PATH}"
````
To run @bztsrc's tutorial with the installed compiler, make sure to run the following command in the project you want to build:
`find . -name Makefile | xargs sed -i 's/aarch64-elf-/aarch64-linux-gnu-/'`
## Building and Running
- Run `make` to build the source.
- Run `make debug` to debug the kernel locally
Follow instructions from [here](https://github.com/s-matyukevich/raspberry-pi-os/blob/master/docs/lesson01/rpi-os.md#raspberry-pi-config) to test the kernel on an actual Raspberry Pi 3 Model B.