7 ms·
Building the worst Linux PC ever: 6 hours to boot Ubuntu
- WiseWeasel 15y agoI'm sure he could coax at least a few more hours out of it by somehow finding a working 1x CD-ROM drive to boot a LiveCD from.
- simcop2387 15y agoI've got one in my basement but getting a working 8 bit scsi interface might be harder.
- watmough 15y agoSorry, my Mitsumi 1x went in the dumpster many years ago.
- joshu 15y agoI disbelieve. How could this possibly boot to X without a framebuffer emulator too?
- celebdor 15y agoThere is no X, he is accessing the system through minicom.
- gravitronic 15y agoTheoretically you could boot X without a hardware framebuffer emulator. X supports rendering to normal RAM as well (for example, for VNC connections).
- dmitrygr 15y agoActually, if you go read my source code, you'll see that the emulator DOES in fact emulate a framebuffer. In fact I even have code in place to output the image. I just didn't connect a graphical LCD to this particular built. It is, however, supported.
- gravitronic 15y agoSeriously, amazing ridiculous work. Kudos.
- joshu 15y agoWow, neat. What's your day job?
- mhd 15y agoFrom the actual web site[1], describing the video of the boot process[2]: "The raw video is in a few segments, since I had to change camera batteries a few times while filming." [1]: http://dmitry.co/index.php?p=./04.Thoughts/07.%20Linux%20on%208bit http://dmitry.co/index.php?p=./04.Thoughts/07.%20Linux%20on%... [2]: http://www.youtube.com/watch?v=nm0POwEtiqE http://www.youtube.com/watch?v=nm0POwEtiqE
- stcredzero 15y agoThe best part about this is the battery pack in the picture. I wonder if there's a niche for the equivalent of the Model 100 in today's world? http://www.trs-80.com/wordpress/trs-80-computer-line/model-100/ http://www.trs-80.com/wordpress/trs-80-computer-line/model-1... A fully mobile general purpose computer with instant boot, impressive battery life, running off 4 AA's. The Wikireader comes close as the modern equivalent. The input method would have to be something like Siri, with an optional keyboard. With a form factor and batteries from an iPad 3, but with a slower processor and a fast refresh eInk screen, you could have truly phenomenal battery life.
- ConstantineXVI 15y agoSiri (and most other voice recognition on phones) relies on a network connection, that'll put a bit of a dent in the battery life.
- joshu 15y agoI have a working model 102 on the Shelf Of Dreams here at work.
- ajross 15y agoThe linked blog post misses the interesting bits. Yes, it boots Ubuntu (slowly) via an ARM emulator written for AVR. That's just software. What struck me is that he wrote a controller for an 8 bit FPM DRAM bus instead of just using a big SRAM. That's surprising, and not at all trivial to do over a bunch of GPIO pins.
- jensnockert 15y agoYeah, that is actually a pretty awesome bit of engineering. I would never have thought of this, and it is exceptionally clever in some exciting hacker way.
- haberman 15y agoWould love a more extended explanation of what this means and why it's surprising, for a this software geek who dabbles in hardware.
- xxpor 15y agoYou have to periodically refresh DRAM. That's what the dynamic means in DRAM. If you don't, the memory will "forget" what it's holding. This is because the memory cell is essentially a capacitor. SRAM would be easier because it's set and forget. It needs a more complex internal circuit, and therefore more expensive.
- joe_bleau 15y agoIt can't be that hard; I once bitbanged a 30 pin SIMM on a PIC with an interrupt to trigger the refresh. The 30 pin SIMM is 16MB and easy to wire (0.1" pitch). 16 MB of SRAM is probably going to be TSOP or worse, and probably in multiple packages. The multiplexed DRAM bus would also help with the pin count, but it's not clear to me that was a concern.
- ajross 15y agoThe point was more than you can wire the SRAM to the address bus of the CPU with maybe a little GPIO logic for bank switching to expand the address space. The DRAM has to be done over GPIO (my count is 22 data signals) solely, with attention to timings and refresh. And sure, I can see how it's done and announce it's "easy". But I'd be hesitant to try it. So if you've actually done it, bravo. (edit: Among other things, how did you handle the case of your refresh ISR firing in the middle of a read cycle? Certainly can be done correctly, but it's a non-trivial (albeit software-side) problem to solve.)
- jonbro 15y agothis is an amazing hack. Well done for this guy, and his totally useless project.
- deleted 15y ago[deleted]
- agumonkey 15y agoAs I said earlier, he needs to run jslinux on this stack. It will be like `computing slowmo @ 1Mfps`
- mathieud 15y agoWhat's really impressive, is that it still work somehow...
- iliis 15y agoImpressive. And now I'm wondering if a Minecraft inside Minecraft would actually be realizable. As 8bit CPUs have already been made (altough with unknown architecture), it is a bit less crazy to imagine running linux with a java stack on it. It will be hellish slow and you probably need some sort of "hardware" graphic acceleration. And a lot more memory than the current versions. But hey, running Minecraft in Minecraft would be pure brainmelting awesomeness! Maybe some sort of Hardware Description Language to Minecraft compiler would be useful.
- pavel_lishin 15y agoHow about Conway's Life in Conway's Life? (Yo, dawg: http://www.youtube.com/watch?feature=player_embedded&v=QtJ77qsLrpw http://www.youtube.com/watch?feature=player_embedded&v=Q... )
- bodyloss 15y agoThat pretty much completely blew my mind
- gmaslov 15y agoNormally, Minecraft logic requires some time in-game to execute, but last year (IIRC) someone was able to invent "instant" logic gates and transmission wires, by exploiting some unusual interaction between pistons and the block-update rules. They're quite bulky, but they do get the job done of achieving FTL communication and supertask computation ;). With an optimizing compiler to take advantage of these, it might not be unrealistic to implement Minecraft in Minecraft. The real-time speed would only be limited by the real hardware, not by the Minecraft hardware.
- reginaldo 15y agoThese crazy projects are the most fun. As Richard Feynman notoriously said: "What I cannot create, I do not understand". shameless plug below: Last year, inspired by Bellard's jslinux, I too wrote an emulator that can run Linux on the browser. Only I was lazy and emulated the vastly easier LatticeMico32 processor. Anyways, the result was very intellectually satisfying. After writing the interpreter, I went ahead and wrote a version that generates Javascript code on the fly (and captures up to 3 backwards jumps to the same block), for massive speed ups. Anyways, it doesn't serve any purposes, but boy was it fun... The code is at: https://github.com/ubercomp/jslm32/ https://github.com/ubercomp/jslm32/ And there's a demo running on: http://www.ubercomp.com/jslm32/src/ http://www.ubercomp.com/jslm32/src/ BEWARE: It only works well on Chrome (takes download time + 10s to boot on my machine). If anyone is interested in this stuff, just ask and I'll write a post describing what I did to take boot time from 2.5 minutes to 10 seconds.
- jmillikin 15y agoVery cool! FYI, it also works fine in Firefox.
- rogerbraun 15y agoIt would be great if you could write that post! Wonderful project!
- jbert 15y ago> If anyone is interested in this stuff, just ask and I'll write a post describing what I did to take boot time from 2.5 minutes to 10 seconds. Yes please. Optimisation war stories are always interesting.
- woodall 15y agoI love stuff like this. If only there was an easy way to make 'GUI' programs Flash/Java might have competition.
- reginaldo 15y agoWorking on it... The LatticeMico32 toolchain (gcc, gdb, ar, ld) is very bad, seriously... I'm thinking of doing a MIPS or ARM emulator, just because the toolchains are so much better to work with. Anyways, I do have a framebuffer demo that runs at a very decent frame rate on my machine (at this moment it is Chrome only and I unfortunately don't have the binaries for the demo on github). But this is not on Linux, it's on a barebones newlib environment (no Operating System). Writing a mouse interface is trivial, the only reason I haven't done it yet is I'm thinking if it is worth to continue investing on the LatticeMico32 architecture, as the toolchain makes me want to pull my hair out. Besides running Linux, the emulated system also runs RTEMS (actually it runs anything as long as you can get the toolchain to produce working binaries), and it might be easier to get an RTEMS system running with a simple graphical environment, but then there wouldn't be man y libraries do choose from. So that's the status. I believe we are on the verge of having a viable option for making "GUI" programs on a canvas screen. If I were to work full time on it, I could pull a prototype off in about a month or two (literally), maybe a little less as this thing is so addictive I would easily work 16h days on it if I could. IMHO, the ideal thing would be having an easy to use environment with a mature toolkit on it (I was thinking Qt) and let the user choose the language of choice to develop in. Possible choices would be C, Python, Ruby and Lua, which are fairly easy to have on the web. Technically, it can be done, I just don't know if there would be enough interest, and how to have a sustainable business model around this idea. What do you think?
- deleted 15y ago[deleted]
- sliverstorm 15y agoLinux is generally considered the go-to OS for under powered computers "Under-powered" is a moving target. It seems to apply best to computers that don't quite meet the specs of the current Windows, or perform very poorly with it. Anything without a prayer of running WinXP is much worse than under-powered, and modern Linux is a poor choice. An old linux2.4 distro would be a good option, or my personal favorite for truly pathetic hardware, OpenBSD. [Dmitry] threw an antique 30-pin RAM SIMM at the problem. It’s wired up directly to the microcontroller... Whoa. You can do that? I mean, it makes complete sense, but it never occurred to me... suddenly I might have a use for all those old free RAM sticks.
- jpiasetz 15y agoDepends on what you define as a distro. LFS and Gentoo run pretty fast on anything that will run OpenBSD. OpenBSD runs on underpowered stuff because it runs nothing by default. NetBSD is probably more portable though.
- JanezStupar 15y agoThis article got me laughing into tears. Only to make it even funnier by the glazed look in my girlfriends eyes when I was trying to explain whats so funny about guy bootstrapping a 32bit OS on a 8bit micro controller. I mean the idea of emulating 32bit OS on a 8bit machine is not something too ridiculous on its own. But the setup he used. Oh my god. Must stop trying to comprehend this madness. Kudos to Dmitry.
- bobroberts 15y agoUUENCODE?
- jacquesm 15y agoThat's how the first version of the ARM was made, by software simulation on a 6502 in BASIC: http://en.wikipedia.org/wiki/ARM_architecture#History http://en.wikipedia.org/wiki/ARM_architecture#History
- hobbyist 15y agoHe hasnt left anything for the rest.. the next coolest stuff will be to run linux in the air.
- hobbyist 15y agoA single cool C hack is a million times more cool than all html/css/js hacks combined.. awe inspiring.. jaw dropping stuff.
- runeks 15y agoThis link from the comments on that site just has to be shared here: "Hackers Successfully Install Linux on a Potato" http://www.bbspot.com/news/2008/12/linux-on-a-potato.html http://www.bbspot.com/news/2008/12/linux-on-a-potato.html
- x3c 15y agoI see your potato and raise you a dead badger! http://www.strangehorizons.com/2004/20040405/badger.shtml http://www.strangehorizons.com/2004/20040405/badger.shtml
- martincmartin 15y agoIn the '90s I wanted to show a friend the Apple ][ game Robot Odyssey. The only Apple ][ emulators I could find were for Windows. There was a Windows machine in a lab, but it was really awkward to access. However, I had a SPARC on my desk and found a Windows emulator. Running the Apple ][ emulator inside the Windows emulator running on a Sparc I -- it actually ran at about the original speed of the Apple ][. And this was 15 years before Inception... ;) Anybody have a SPARC 1 emulator?
- watmough 15y agoSorry, only a 68020 based Sun 3/50. 4 Megs RAM and a b/w console.
- dredmorbius 15y agoqemu will do a SparcStation 5 or 10. http://www.aurel32.net/info/debian_sparc_qemu.php http://www.aurel32.net/info/debian_sparc_qemu.php
- watmough 15y agoI hope Sophie Wilson is reading this, as that microcontroller probably isn't far off the BBC Micros that were originally used to prototype the ARM instruction set. I bet nobody then imagined anyone would emulate un*x on a chip being emulated at such slow speeds.
- femto 15y agoThe article claim that an MMU and minimum bit width of 32-bit is required for Linux. Wasn't µCLinux rolled back into the official kernel, meaning that with the right configuration the Linux kernel will run on CPUs without an MMU and with bit widths less than 32-bit? Eg. the H8 [1]. Perhaps the author meant to write "Ubuntu", rather than "Linux"? [1] http://kernel.org/doc/readme/arch-h8300-README http://kernel.org/doc/readme/arch-h8300-README
- bobroberts 15y agoAnd someone told me recently that Linux won't run on a 286.