Running Linux on a 8bit AVR

A common assumption is that you need a 32bit processor and lots of RAM to even consider running Linux, but Dimitry pulled it off with just an 8bit AVR.

It is common to see newbies asking in microcontroller forums if they can run Linux on their puny little 8-bit micro. The results are usually laughter. It is also common to see, in Linux forums, asked what the minimum specs for Linux are. The common answer is that it requires a 32-bit architecture and an MMU and at least a megabyte of ram to fit the kernel. This project aims to (and succeeds in) shatter(ing) these notions. The board you see on the right is based on an ATmega1284p. I’ve made one with an ATmega644a as well, with equal success. This board features no other processor and boots Linux 2.6.34. In fact, it can even bring up a full Ubuntu stack, including (if you have the time) X and gnome.

We were suspicious, it’s close to April 1 after all. However there’s lots of pictures, videos, and code to back up the claim.

Via the forum.

Join the Conversation


  1. There is code as well and it doesn’t look like an April fool.
    If so it was a very hard task to set it up like this!
    Thus, in any way he deserves the credits :D

  2. Hmmm! The kernel messages clearly say that this is running on a XScale processor (Palm Tungsten E2 machine) which is an ARMv5. Output of “uname -a” also confirms that as well as lots of kernel drivers named pxa-2xx-something.

    The title and presentation are misleading.

    1. Fabio, read much? Apparently not! I emulate a PXA255 and the kernel needs a machine type, so i tell it TE2, because i was well familiar with the machine and thus could emulate it easiest.

      If you had spent half a minute reading, you could have avoided looking like a fool…Too late now…

      1. Oh sorry! My fault.

        I just read what was in the article and watched the video. Did not read your website. Now it makes some sense.

        Still quite unbelievable you could fit everything on an ATmega. I got your code and will take a look.

        And I have no problem in looking like a fool!


  3. The issue is NOT if you can get linux on the cpu, (you can), just make as much as possible a library to be loaded as needed.

    But the fact that linux is event/interrupt driven.

    There comes a time when context switching consumes so much of the computing power, that there is little time left for work.

    POP a little ethernet 100Base in , and you are already burying the cpu just dealing with *SOME* the traffic.

    1. This is a proof of concept…he claims by himself this is not about serious usage. Simply testing and stretching limits.
      I would say he “wasted so much time” because he can…
      As simple as this…

    2. Hey Drone, It is a part of his hobby, so you are not supposed to comment that he is wasting his time. :-) Instead he is enjoying his LIFE by these type of hacks. Life is not just earning a lot of money and eating a lot of food . ;-)
      So before commenting, just think twice…

  4. Just to be clear; this is not Linux on AVR. This is an ARMv5 emulator on AVR, with Linux running in the emulation.

    It’s definitely interesting, and the sort of technical achievement that leaves you scratching your head in bemusement, but again, the description *is* somewhat misleading.

Leave a comment

Leave a Reply to Yonghan Cancel reply

Your email address will not be published. Required fields are marked *

Notify me of followup comments via e-mail. You can also subscribe without commenting.