Building the worst Linux PC ever

Linux is generally considered the go-to OS for under powered computers. Wanting to challenge the preconceived notion that Linux requires ‘a computer made in the last 20 years,’ [Dmitry] built the worst Linux PC ever around a simple 8-bit microcontroller.

The ATMega1284p [Dmitry] used doesn’t have a lot to offer as far as RAM and storage goes; just 16 kilobytes of SRAM and a paltry 128 kilobytes of Flash storage. While this may be voluminous in the embedded world, it’s peanuts compared to the gigabytes of RAM and hard drive space on even a low-end netbook. To solve this problem, [Dmitry] threw an antique 30-pin RAM SIMM at the problem. It’s wired up directly to the microcontroller, as is the 1 Gigabyte SD card that serves as the PC’s hard drive.

Linux requires a 32-bit CPU and a memory management unit, something the puny microcontroller doesn’t have. For [Dmitry], the best course of action was emulating an ARM processor on an AVR. We’re not sure if we’re dealing with genius or madness here, but it did prove to be a valuable learning exercise in writing a modular ARM emulator.

How fast is it? [Dmitry] tells us it takes two hours to boot up to a bash prompt, and four more to load up Ubuntu and login. If you want a Megahertz rating, good luck; the effective clock speed is about 6.5 kilohertz. While the worst Linux PC ever won’t win any races, its simple construction puts it within the reach of even the klutziest of hardware builders; the entire device is just a microcontroller, RAM, SD card, a few resistors, and some wire.

If you’d like to build your own worst Linux PC, [Dmitry] has the firmware and disk image available to download. If you want to watch the time-lapse of this thing booting, check out the video after the break.

Comments

  1. Valentin Angelovski says:

    Congratulations on your awesome effort Dimitry – no doubt this would have been an awful lot of fun for you!!! :)

    Most that I could achieve with my own 8-bit micro project (in this case, using a 150-MIPS 8052 to emulate an entire 16-bit x86 system) was getting it to boot minix 2.0.2 ..

    Link to my own ‘Flea86′ project:

    http://www.armchairarcade.com/neo/node/3810

    Regards,
    Valentin Angelovski

  2. warspigot says:

    This nothing! I did this with 3 transistors, a relay, 8 diodes and some toothpaste.

    But really, this is an awesome project. I think I’ve seen you’re name quite a few times on here before Dmitry. Actually just searched it. You’ve been on here LOTS of times.

  3. Alex B says:

    Wa Wa WiVa!!! I love it!!!
    This is as fast as my first Packard Bell pc.

  4. DeAuthThis says:

    Just freaking amazing Dmitry!

    I wonder though… what about finding or building a more light weight linux os? Perhaps getting it to boot faster..?

    Might I suggest minuetos?

    http://www.menuetos.net/

    idk how it’d work but you’ve proven just about anything is possible :)

  5. rrix says:

    “genius or madness?”

    having known dima for a while now, I can definitively say “both” :-P

    good stuff as always, you crazy sonnofagun.

  6. msr says:

    For you 8 bit fans, try

    http://nuttx.sourceforge.net/

  7. nedry says:

    but can it run crysis?

  8. lamer says:

    haha beautiful..

    this is one of those “dont ask” because you can things..

    except… he took it too far ;)

    /lamer

  9. tomppa says:

    What about TCP/IP? Can it do RFC 1149?

    • Ac says:

      If this could do tcp/ip it would multiply the awesomeness. I actually need a dirt ass cheap processor that does tcp/ip, for a custom cheap ddns client, and uses a Linux tool chain (it’s what I know).

  10. AlexF91 says:

    Great work!
    Now it’s possible to run simply any OS on an Atmega, just run it in a VM…

  11. Leo says:

    You misspelled “awesomest”.

  12. Josh says:

    Since when is being slow deserve to be called the ‘worst’. I think it is a very special pc linux pc :-)

  13. daslive says:

    ftw!

  14. darkborn says:

    There was already LUnix, Commodore 64 port of L… Unix: not all *nix commands nor gui (as it is not in this case)… but there was obviously lower hardware dependency

    http://hld.c64.org/poldi/lunix/lunix.html

  15. radio says:

    but… will it blend?

    awesome!

  16. Malikaii says:

    This is the most amazing hack I’ve ever seen. I thought the relay-logic computers were the coolest, but this actually has GUI and everything. If you ever needed a benchmark for your competence, this is probably the best one you could manage. We are not worthy.

  17. Patrick says:

    See… Linux IS made for small devices ;)

    Now let’s wait for him to port Windows 7 (the 64 bit edition, of course ;) to the AVR…

  18. Dawg says:

    God level porting

  19. ashirviskas says:

    Hey !
    I want to ask you :) is this could be even somehow possible, to add RAM to arduino MEGA ?
    Thanks ;)

  20. cr8s says:

    Part of the reason that this build is taking forever to boot and running like garbage (forgive me for saying so) is because you’re trying to run Ubuntu Jaunty on it.

    Maybe see what kind of mileage you could get with your 8-bit ARM microprocessor and, say, BasLin/DSL/TCL or something to that effect.

    Now, I’ve seen some just plain ridiculously refactored code done in assembler (like, absolutely SILLY amounts of graphics rendering in under 64kb) so I’m thinking it might be possible to actually code an entire Linux distro in asm and come up with something that actually RUNS on this tiny computer.

    If we do THAT, I have a feeling it would have a significant impact on computing in general. We have these beasts of machines and tap barely 1% of their potential by stacking clumsy and kludgy code on top of even clumsier code.

  21. Absolutely incredible. I am now much more curious about what is involved to interface RAM directly to a microcontroller. Great post. Thank you, very interesting.

  22. nabla says:

    Incredible work.

    I notice that it is slow… Don’t you wan’t to work on a quad core version ?

  23. PaperLemon says:

    I don’t know if it’s been mentioned, but there is actually a port of Linux that runs on embedded devices without an MMU, μClinux. There isn’t a port for this particular chip, but I wonder what the relative difficulty of getting μClinux up and running on an 8 bit MCU would be vs writing a simulation of a 32-bit ARM chip. Still really impressive stuff :)

  24. jazz says:

    YA the site is slow. I dont know y. The VERONICA and LAZARUS64 have vram but no ram. I wonder..do we tap the ram bus for VRAM? With 3 shift registers on the VRAM inverter we might be able to pull off a 3 ATMEGA core computer.(with resonable amount of VRAM+RAM.) Yeah agree.Problem is nobody homebrews and Linux turning into shit these days. There r several RTOS out there. If a guy can put a cdrom +HD onto a C64, like the Performa series did..certainly this is not impossible. Those machines were responsive. NOT so these days.

  25. jazz says:

    If APPLE did it with Z80 or similar..certainly WE CAN.

  26. Daviljoe193 says:

    All hail the Tomato!!!

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

Follow

Get every new post delivered to your Inbox.

Join 96,598 other followers