linux on arduino?

Hello, Is it possible to install linux on arduino? and compile all linux software on it? For my first try in embedded world, my choice is balanced between fox boad g20 and arduino that i don't know... Regards

If you can find a version of linux that fits in 32K, you could probably compile it and upload it to the Arduino.

I think most linux distros are just a little bit too large, though.

Or go with a 644 and then you have 64K! :) Loads of room to play with.

Somehow I doubt it... 8-)


The FoxBoard and the Arduino are so different from each other as if they come from a different Hardware Planet. But both are well documented so if you spend a few hours on reading, you will find out what better fits your needs.

But a word on the Fox G20: I have an old Foxboard LX and got very disappointed with the way in which the development of the software for the board was handled. There was no real progress and support for instance for getting the USB ports on the the board into a usable state. ACME was never able to build a community around the product. So you were pretty much left standing in the rain ...

If I had to decide for a new development-platform in the G20 range today, I would go for the beagleboard instead which has a much more active community.

I just had a look and it seems ACME still has no luck with community driven development: The for the G20 lists 700 posts, the one for the beagleboard list more than 20000.


Somehow I doubt it...

IIRC, back in the day (1980s) you could run Microware's OS-9 (multi-tasking, multi-user) on a TRS-80 Color Computer 2 (8-bit 6809), I just don't remember if it required 64k, or if you could get away with 32k...

Of course, this system did require at least one floppy drive (180k, IIRC), and 2 or more drives were recommended (otherwise you were swapping floppies all day long).

Furthermore, this was on a standard (Von Neumann/Princeton) architecture machine, not a Harvard architecture device, like the ATMega is...


This sounds like a challenge... I'll try to "port" (i.e. rewrite) the linux 0.01 kernel to the arduino. I'll probably need a EEPROM filesystem with some more code memory (maybe). Is there any way you can increase code memory for the arduino? But you still won't be able to run linux programs on it unless they're incredibly tiny and handwritten to run properly on the modded kernel.

Damn Small Linux is the smallest distro I know of, at 50mb. To be honest tho, I can't understand why you would want to? If there a specific application you would like to run under a linux distro? Are you sure this can't be achieved by other methods without installing a whole OS.

I think this is as close as anyone has come. Have a look under ports. No AVR, but there is an Amtel ARM port; interestingly.

Simply not enough HW to run such a thing on an AVR.

This sounds like a challenge...

Let me know how converting a 32-bit codebase to 8-bits works out (I am not saying it is impossible, just that you aren't appreciating the scale of what you are proposing!).

Is there any way you can increase code memory for the arduino?

AFAIK, no.

There is also the tiny matter of having to deal with the Harvard architechture of the device, which wouldn't be a big deal if SRAM was much, much larger. You could potentially use an SPI serial eeprom device, or serial RAM - to make up for the lacking space, but you would have to write your own drivers (or hack the standard C libraries to support them?) to utilize the extra room for data. This would be just to gain extra area for variables, arrays, and such. You would want to add a filesystem (or something similar) on top of that too.

Your best bet, if you are serious about such a thing, would be to look into how old 8-bit operating systems were created; popular ones of the period were CP/M, OS-9, and Flex. I am sure there are open-source or freeware source for such older systems you could study (unfortunately they are probably all written in assembler, targetting a particular CPU, bus, disk subsystem(s), etc).

One that is fairly "detailed", used by many enthusiasts still today, though, is OS-9 for the Motorola 6809 8-bit cpu (TRS-80 Color Computer); the open-source project NitrOS-9 can be found here:

This is essentially the "modern" version of OS-9 for the Color Computer.

There are probably other resources, too, for "minimalist" 8-bit operating systems. I also know that others here on this forum have created something akin to an OS for the Arduino (some more complex than others) - so this kind of thing is possible to an extent. There are benefits and downsides to using such a system, of course - the biggest one being speed. But you could potentially gain real-time control over the i/o pins and other functionality of the Arduino, plus (if you have a scripting language included - unless there is a way to segment the program flash RAM?) you could have multiple "programs/processes" running at one time (not true multitasking, but something close - more similar to Windows 3.1 than anything).

Ultimately, though, at least on the 168/328 - it would be nothing more than a curiosity and/or learning experience to attempt such an exercise. It reminds me in a great way of when people were hacking QBASIC/QuickBasic to create GUI "operating systems" for DOS, back in the late 1990s. A lot of interesting things came out of that experimentation; maybe the same would be possible for the Arduino.

Perhaps this is one area where a "multi-cpu" Arduino (using SPI or I2C - or even a dedicated parallel bus using the digital i/o lines) could be used as well...?


that post was completely sarcastic (referring to mine)! I have no where even near the skill level to write a bootloader, forget a whole operating system!