Roll Your Own Raspberry Pi OS

Writing an operating system is no small task, but like everything else it is easier than it used to be. [JSandler] has a tutorial on how to create a simple operating system for the Raspberry Pi. One thing that makes it easier is the development environment used. QEMU emulates a Raspberry Pi so you can do the development on a desktop PC and test in the virtual environment. When you are ready, you can set up a bootable SD card and try your work on a real device.

The operating system isn’t very complex, but it does boot, organize memory, displays on the screen, handles interrupts, and manages processes. What else do you need?

There’s quite a bit of ancillary information about the Pi, also, which is great. Want to know about the Pi’s configuration? The organization of the framebuffer? Which interrupts are available? All that information is there.

This isn’t the first OS tutorial for the Pi that we’ve seen. Even if you don’t want to build a general-purpose operating system, you might want to try your hand programming the Pi at the “bare metal” level.

Raspberry Pi image: Evan-Amos [Public domain].

One thought on “Roll Your Own Raspberry Pi OS

  1. For serious IOT is very useful to be able customize the IOS:
    – removing useless OS parts that is not used on specific task
    – beter manage resources (CPU, memory)
    – reducing risk of conflict
    – reducing risk on security
    – using custom FS
    – faster (re)boot

    For example, many of our device are only used as node-red server and we don’t need at all xserver or any other graphics and sound related OS part / services.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s