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.

[vimeo=39286771]

123 thoughts on “Building The Worst Linux PC Ever

  1. 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. 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.

    1. 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).

  3. 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.

  4. 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.

  5. 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 :)

  6. 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.

  7. > Linux requires a 32-bit CPU

    The assembly code is CPU-specific anyway.

    And it should be possible to write (or modify) a C compiler for an 8-bit CPU that compiles the code in a way that it behaves like on a 32-bit CPU.

    > and a memory management unit

    There is the possibility to compile Linux without MMU support!

    Originally, this feature was introduced for m68k only to run Linux on Amiga and Atari ST; today, this feature is available for all CPUs.

    However, I think that running a “native AVR Linux” would be much more work than an ARM (or MIPS) emulator…

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.