Good, Portable "Virtual" Linux Distro?
Prof. Nix writes "I have been given the opportunity to redesign the Linux course for the community college I work for. This course will be taking students from the 'What's Lee-nux?' stage to (hopefully) Linux+ Certifiable in about three to four months. However, one issue I haven't solved is finding a semi-stable, highly portable, and readily accessible platform the students may pound on, and have root access, independently of their peers. The powers-that-be have already vetoed any sort of server environment accessible from off campus. We've already tried live USB drives, but we ran into many issues with non-supported hardware on students' home computers. So I'm left with the idea of virtual machines run from flash drives. My ultimate goal is to have some sort of portable system that students can use with equal ease on lab systems and personal laptops — regardless of hardware. Preferably this system would be installable on a 4GB flash drive and run an Ubuntu- or Fedora-derived OS. So I ask the people who have been in the trenches a lot longer than I — what distros should I look at?"
You can fully "undress" it, down to the bare basics, and it is incredibly stable. You'll definitely run it from a 4 Gb USB stick - and your students, most importantly, will LEARN from it.
Religous speak to God. Insane are spoken to by God. When all shut up, one can finally hear Shostakovich in peace
Can't you put the virtual disk image for as a regular file on a USB stick, then load it into Virtual Box from there? That way, no purchase necessary with regards to software to run the VM, and you can issue a standardized appliance image to start with. Of course, you need to make sure that everyone has a thumb drive of sufficient size.
Is this what you're looking for? http://portableubuntu.demonccc.com.ar/en/download
Look at Virtualbox: http://www.virtualbox.org/ and there are portable (current) versions out there. On there, you can install Ubuntu, Fedora, what-have-you.
Easy customisation to your needs, has few virtual machines as targets.
http://susestudio.com/
http://en.wikipedia.org/wiki/SUSE_Studio
One that hath name thou can not otter
DSL works well. It's 50 MB, can boot off a USB flash stick, and comes with its own virtual environment for running within MS Windows. It's probably missing a few features you will want for teaching a course in Linux, though.
I also like Puppy Linux. I was able to make an MP3 player out of a small thin client computer and this OS. I just had to modify a few shell scripts, and plug the TC into my home stereo.
Look at vmware's site, they have a link to a second site they run which has nothing but
"virtual appliances" which are pre configures VMs ready to run for various purposes.
Included therein are VMs of popular LINUX / UNIX OSs. Most of those are of course free, though
they also have various commercial VMed applications of various sorts too. Generally the VM images
lag a few months behind the very latest releases since they're made by 3rd parties and aren't generally part of the official distribution release.
Also look at SUSE Studio, the susestudio.com (IIRC) web site has a way to make a "custom" OpenSusE
distribution using their online toolkit for customizing what you want in it. You probably can make
some kind of easily virtualized ready to run system image with whatever you want in it in the 2GB
or 1GB or 700MBy CD image or 4.7GBy DVD image size ranges.
I believe that some distributions have a XEN enabled paravirtualized DomU image which you can use as a standard installation option, though you might have to repackage that in the form of something that includes the hypervisor itself. Look at the Xen Live CD, that has the hypervisor and some kind of UNIX OS as well if I recall correctly. xensource.org / xen.org IIRC.
LinuxMint is a LiveCD based on Ubuntu that is pretty portable across lots of machines, though not obviously all possible hardware, but it may be worth a look.
The problem with a virtualized system is that the hypervisor itself may not be portable to all machines either depending on the kinds of peripherals and chipsets / CPUs the hypervisor supports. Most Hardware Virtual Machines require basic VM extensions being enabled in the CPU to work, though some virtual machine platforms don't require it when you're running a 32 bit guest OS. IIRC
you can run XEN, Virtualbox, Virtual PC VM software with 32 bit guest OSs without needing VM CPU extensions, though of course there are still only certain physical hardware types they support.
XEN based VM hypervisors with a paravirtualized LINUX guest is probably best in a slight way for performance since the guest OS itself is compiled to be very efficiently virtualized even without HVM CPU extensions, though I can say that even without HVM extensions and a paravirtualized guest OS still some VM systems do a pretty goog job virtualizing a guest in real time.
The last resort would be you could run a VM on a server running XEN or KVM or VirtualBox and give the students RDP or VNC remote desktop access to the VM's root, so they can be root and do whatever they want on their particular image, but not cause a security or functionality problem for the server or other VMs. Benefits of snapshotting / backup / deployment / resetting to a known good state apply. You could even provice some EC2 or other cloud hosted VM instances for people to play with at fairly low cost and fairly high performance if you need to scale up beyond the few dozen PV DomU VMs your local lab PCs could probably easily accommodate. Maybe Amazon or whatever has a academic pricing rate for their hosting, or someone else might.
http://susestudio.com/ allows you to make your own. This can then be done as USB stick, CD/DVD, VMware and what not. You can decide if you want it to be installable or not, add your own specific software and almost anything else you like.
How far you go to make things special is up to you.
However, you will always have non-supported hardware. Happens with any OS, except for the one that was pre-installed and then hope people have not added hardware.
Don't fight for your country, if your country does not fight for you.
Of course, it's a bit slower than running from a disk, but it's not unbearable, at least for my needs. Other than speed, no issues whatsoever. All hardware works, but that's because it's virtualized (sound, network, etc). Recognizes all USB peripherals I attach as well.
What's /dev/sda1comes?
:)
I kid, I kid.
In all seriousness, however, what version of Linux would that *not* apply to? If you have root access, by definition, you have the ability to hose your system. Personally, I have found Knoppix to be a great Linux distro that does not require you to install it to use it. The Ubuntu LiveCD is pretty good, also. Then, of course, there is DSL and several others (although I have never personally used DSL).
And does it need to be a one-size-fits-all solution? I have a desktop at work from which I cannot access USB thumb drives because the mobo chipset is flawed. I also have a personal laptop that has a failed CD-ROM drive, but that has working USB ports. If you choose either of those media, I have a computer that it won't work with. However, if you provide Linux on a USB stick for those who can use USB sticks and Linux on a CD for those who can use a LiveCD, you'll have *something* that works for everyone. For the one guy at the university who can only boot from a floppy...well, he will just have to buy a new computer
MCSE? No, sir...I don't do Windows. Yes, I am an idealist. What's your point?
From experience I totally agree: ./ and other issues.
I myself tried to learn linux 3 times before I finally moved to the platform. I had my then had Redhat 5.2, SuSE, Mandrake, and some others before dropping out - the interfaces worked well, but I did not understand the fundamentals - expecially things like why I could not execute my programs etc - which I later on learned was - my programs where not in path and thus I had to make them executable and then use
All solutions - Ubuntu, Redhat, Slackware, etc use entirely different package managers etc. This was another huge problem for me - I was learned the Redhat way and had no understanding of how I could install things myself when I needed. This is a major issue.
Through my Linux experience in school which essentially was more about creating some basic C programs etc, I had yet no understanding of the way the system worked, why there was a /bin, /usr/bin, /usr/local/bin and so on, and I was close to drop Linux altogether.
I did make one last attempt - Linux from Scratch http://www.linuxfromscratch.org/ : Finally a project that helped me make sense of all the Unix systems!! It took me only one single week despite having to recompile all the code! The compilation time was time to learn the fundamentals - partitioning, file system considerations, Linux Standard Base : why some things are to be in /bin, others in /usr/bin or /usr/local/bin or /opt and so on.
As soon as I had finished the basic Linux from Scratch program, I had learned enough to use ANY Linux system; I moved to Gentoo at the time to make sure I did not forget what I had learned and improve some more. Today I use Redhat ES for servers and mostly Ubuntu for desktop.
I'm a strong believer in immersion as the best way to instruct people how to do things.
Probably the best way to go about it would be a VM disk image file sitting on the flash drive itself. Dealing with the actual flash drive might be problematic due to compatibility.
For the virtualization, I'd probably just go with the Open Source version of Virtualbox. It can be run as a server for the lab (if need be - though not advised),
The biggest problems with going with USB flash drives are speed and compatibility, in that order. Flash drives are still very, very slow compared to a hard disk: it will jade their opinion of the operating system due to very sluggish writes (particularly due to the virtual disk allocation on top of the flash). There are also a number of limitations with the flash drive standardization themselves, as many are utter crap. Best to verify the make/model of flash drive you pick works. (Caveat: note that vendors -very frequently- change the underlying chips in the flash drives within a single model. Expect to have to buy them in lots.)
Honestly, given the cost of external hard disks, the lack of flash drive consistency, and your stated apparent requirements of them being able to use their own systems as well as the school lab, you might want to make a USB hard disk a class requirement instead of a flash drive.
But: why stop there? Honestly. When I was in school, we had a lab. I had a laptop. I brought my laptop and did almost everything on my laptop in the lab - and this was way before virtualization became commonplace (VMWare existed, but just barely). There were very few classes where I needed to have anything other than what was on the laptop - Debian Linux. Students could come and use the labs at any time (though most did not, as they had their own computers which were better).
Seriously. This is 2010, not 1998. Assuming you're not offering this as an entry-level course (you shouldn't) and you'll have at least 2nd-semester CS students taking it, there's no reason to coddle them. Just set up a CentOS or Debian system and allow students to connect to it from the campus.
On top of that, encourage them to install Linux themselves and configure it from scratch. It'll be good for them. Make obscene recommendations, like Gentoo or (god forbid) Slackware. A certification isn't going to mean jack shit in the long run (except for maybe taking a job from someone more qualified who doesn't have the cert) if they're not intimately familiar with the material.
This, like the virtualization question the other day, is yet another instance of "virtualization is cool so I want to apply it". It's not appropriate for every scenario (and I'd argue this is one of them, due to the added complexity and potential for outside cases).
~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
Studio is a great place to start. Dead simple to manage, and easy to churn out revisions. You can even include the Suse virtualization stack, which provides most of the functionality of Xen's 'official' server release. Put OpenXencenter http://www.openxencenter.com/ in the live release, and you're set.
If hardware support is an issue, have them generate a support email with a basic hardware profile. Add appropriate packages to the Live DVD, and repeat.
Caveat: It's invite only, and it make take some time to get one through the site.
In any case, virtualization is a great way to go, especially if you're arming these students with life skills. The physical disk (heads, cylinders, sectors, tracks) is all but abstracted, as is the concept of IRQ, bus mastering, and most of the day-to-day of ten to fifteen years ago.
A focus on mass implementations and the real-world fallout from those applications is something I would like to see in a class. Forget about baby steps, let's get this whole awesome thing in motion and leap some real hurdles - SAN concepts, multi-homing, foundations of capacity concerns, network-scale monitoring, and configuration management should shed enough practical exposure to the real aspects of implementation (shell access, users/files, networking, filesystems, hardware, etc.) as to keep it relevant and entertaining.
Good luck.