Levinux – A Tiny Version of Linux for Education
This is the fastest way to start getting hands-on experience with Linux Server. Start your life-long love affair with the “short stack” (V1.7).
Levinux (download ~18 MB) is a tiny virtual Linux server that runs from USB or Dropbox with a double-click (no install) from the desktop of a Mac, Windows or Linux PC—making it the perfect learning environment, and a great way to run & keep your code safe for life! Think of it as an introduction to old-skool “short stack” development—more relevant now then ever as Linux/Unix gets embedded into everything.
What I propose…
Even if you never programmed before, I propose beginning teaching you how to do it “old skool” in minutes from you reading this sentence. Download a ~18MB file, double-click it, and follow the instructions to start down a path that will begin enabling you to undertake projects you would have never previously dreamed doing yourself. I do this with a particular philosophy that is at odds with much of today’s world, and that is precisely why it will give you an edge over the competition for years to come.
What does Levinux look like?
When you double-click the launch script, a black window that looks much like this will pop up. The first time you run Levinux, it will “inflate” by hitting a software repository to pull down a webserver and an SSH server. You need an Internet connection and not-too-restrictive firewall for this to work correctly.
A journey of a thousand miles begins with a single step
The videos below will give you a little more idea what to expect. The first goal here is to make an easily reproducible positive old-school Linux Server experience for you, no matter what platform you’re starting out on. There is great reward in this (for reasons described elsewhere), and it is my heartfelt belief many more people can do it than give themselves credit. This stuff just LOOKS intimidating if you don’t have the right introduction (what I’m trying to do here). But just like anything else, once you get through the difficult initial first tries and stick with it, everything starts to make sense, and come naturally to you. So, have no fear. There is nothing you can screw up. You can just unzip Levinux again and try over. Easier still, you can double-click the Reset icon to set it back to its initial state. Work your way through these same experiences these videos describe, and you’ll start getting the foundation for a timeless, valuable, and nearly platform independent approach to programming. So welcome on board, and there’s a few places you can reach out to the burgeoning Levinux community.
- The Levinux Fanpage on Facebook
- The Google Plus Levinux Community
- The YouTube Levinux playlist (post in the video comments)
- And the one-page forum embedded right at the bottom of this page!
Jump directly into these discussions
- Frank Forrester: 5am still playing with +Mike Levin’s #levinux #linux Ok so I got to say a few things here…
- Adam MAZOUX: I have been following this guy on Youtube (+Mike Levin ) and his idea of a tiny virtual Linux server that runs from USB or Dropbox…
Here’s what Levinux looks like booting the 1st time
And here’s why it works great with Dropbox
Learn how to program Python, a Hello World example
And here’s an introduction to the git distributed version control system
Here’s resetting the server and some file layout explanation
This is an introduction to Python Web development work with bottle.py
Only for Advanced Linux folks, modifying Levinux Recipes
Okay, what is the ultimate goal here?
There are tons of approaches to learning to program, and reasons for doing so. You might want to build an empire, or just have a few extra skills in your back pocket. Levinux supports your pursuit either goal and everything in-between. It does this by focusing on one particular “short stack” approach: learning the least-possible software possible of the most timeless nature to enable you to do interesting things. It can be your primary programming environment, or just sort of a safety-net as you pursue other more sexy platforms like mobile app development. Programming is just automating machines to do your bidding, with a just little more control than The Sorcerer’s Apprentice. But still that provides a pretty good model for the broad, important concepts you’ll be mastering if you stick with me:
Under The Hood
Note: this will read like blah, blah, blah to newbies who can focus on the videos. But here’s the it is for all you Redditors…
Levinux is based on Tiny Core Linux and QEMU. Tiny Core is an extremely minimal distribution of Linux created by Robert Shingledecker, the guy who “matured” Damn Small Linux (DSL) into such a creative and popular distro and was responsible for the United States’ first large-scale municipal government Linux install. Tiny Core’s philosophy comes from the world of “embedded systems” where operating systems aren’t generally installed across hard drives and allowed to go corrupt over time. Instead, it’s a perfect state on every boot-up. Tiny Core is in-turn based on BusyBox, which is a tiny program used in many embedded systems that replaces what is called the GNU commands—or really, the OS proper, which is what gets Tiny Core down to ~18MB.
Levinux is also based on QEMU, which is a computer emulator used in Android development, Oracle VirutalBox and the Linux kernel virtual machine. I am currently using the most popular mainstream binaries pointed-to by the QEMU website after a long adventure of trying to compile my own, and am in the process of recruiting QEMU and Linux kernel gurus to help with this project. Yes, there’s nothing wrong with starting out with Debian, Arch, Fedora, CentOS or any of the other fine GNU-based Linux distros, but I propose to get you on your way within seconds of a tiny 18MB download.
If it makes you feel better, consider Levinux a stepping stone for newbs, because it gives you a taste of Linux Server and sets you on your way to being able to do SOMETHING within minutes, instead of fiddling around with LiveCDs or hard drive partitioning. And the work you accomplish here is as valid as the work you accomplish anywhere else. Python is still Python. vim is still vim. git is still git. Push your code up from Levinux and pull it down from whatever other system you end up using in the future. You might even learn something more than starting with Debian or such, because a true short stack only has what you intentionally put there and plan on using—which is also a better security model, scales better, and installs on a wider variety of hardware than kitchen-sink distros.
Pretty much any modern Mac, Windows or desktop Linux system with about 60MB free on the hard drive will do. I’m still working out problems from 64Bit Linux desktops, and will put the full list of tested OSes and versions here at some point in the future. But since it’s only a ~18MB download that inflates fully out to only about 60MB after the Python, vim and git server build, and no install is required on your host system, why not just download it and give it a try?
- A lot of firewalls break Levinux’s initial run and server-build. If you get a login and not a menu, it’s likely a firewall issue. Stop trying! Run Levinux somewhere else, if you’re determined.
- Many things like Google AppEngine host conflicting websites on port 8888.
- It’s tricky to zip the file so it decompresses with proper permissions for all OS host platforms.
- Some Linux distros refuse to run .sh files with a double-click regardless of permissions.
- Ubuntu Unity has a strange flashing and resizing on the double-click. Hoping to get off SDL and onto curses interface.
Current Version: Beta V1.7
- Added missing libraries for some 32-bit Linux systems.
- Updated the README.txt based on user feedback.
- Using an appended path for LD_LIBRARY_PATH for 64-bit Linux.
Recent improvements, Beta V1.6
- Corrected issues with Ubuntu 64-bit Linux
Recent improvements, Beta V1.5
- Replaced qemu Linux binary with qemu-system-i386 and qemu-system-x86_64
- Changed Linux launch script to auto-sense 32 or 64 bit and use correct binary.
- Added tce-load -wi python-distribute to Python.sh
- Added sudo easy_install pip to Python.sh
- Added entries to .filetool.lst to make pip persistent
- Added pxe-rtl8139.bin and vapic.bin to MacOS folder per net feedback
Recent improvements, Beta V1.4
- Set the stage for a git video tutorial
- Added curl and expat2 requirements for git when Python server builds
- Added “export GIT_SSL_NO_VERIFY=true” to .ashrc for git pushing
Recent improvements, Beta V1.3
- Greatly enhanced tutorials at localhost:8080
- Added bottle.py Python Web framework
- Opened port 8888 for Python web development work
Recent improvements, Beta V1.2
- Added menu option #4 for installing Python, vim & git
- Expanded Reset scripts to clean up Dropbox collision files
Planned longer term improvements
- Eliminate use of SDL library. Replace with ncurses and pdcurses.
- Get rid of “flashing” problem in Linux
- Get rid of pointer-grabbing
- Find or compile the “perfect” binary for each platform (older qemu’s?)
- Find or compile the “perfect” Linux kernel (less hardware support)
- Compile & submit my own optimized Tiny Core Linux extensions
- Get rid of XLibs and other graphics related overhead