My high school students at Chelsea School have put together an Ampache Virtual Appliance, with some guidance, for VMware and VirtualBox. The website is available at

The website provides complete build notes, usernames/passwords, full credits.

Assembly and configuration of the VMWare appliance were performed by Curtis Fawcett, Jerel Moses, Maurice Quarles, and David Walton.

Adrian Madison and Steven Robinson carried out the assembly and configuration of the VirtualBox appliance.

Please let me know if I should include the build notes and passwords here rather than on a separate website. This is our first contribution to the open-source community - so all feedback is welcome.

VirtualBox Appliance:

VMware Appliance:

User Names and Passwords

  • Ubuntu, Webmin, Webshell: root/blank
  • MySQL: root/root
  • Ampache administrator account: admin/ampache
  • Ampache MySQL database: ampache/ampache
Jeremy Davis's picture

I'm glad to hear kids are learning about Linux at School. I wish schools in my area would wake up to Linux!

Although for the purposes of your server I would not generally recommend apt-get dist-upgrade, unless of course you needed Ubuntu 8.10 for some specific reason. If so, out of curiosity what was it?

Three reasons for my logic:

1) It's not really TKL anymore and AFAIK you will no longer get any updates from the TKL mini repo (the mini repo is for Hardy/8.04). This may not be a huge concern but a valid one I think.

2) Ubuntu Hardy/8.04 is an LTS (Long Term Support) release and is supported with security updates for 3 years (ie until April 2011) whereas Ibex/8.10 (what you'd have after dist-upgrade AFAIK) is only a standard release and so only supported with security updates for 18 mths (ie about a month from now!)

3) Whilst using Core as a basis you'll (obviously) get away with it, but apt-get dist-upgrade is known to break other TKL appliances so is probably not good practice.

Also I understand that you were conducting a learning excercise (so this is probably a moot point) but it'd be easier to start with LAMP wouldn't it? Then Apache, MySQL and php are already installed and set up. You'd only need to install Samba and Ampache itself - plus upgrade Webmin (or add the Samba Webmin module apt-get webmin-samba I think).

Also be aware that there is a bug that will create a Webmin update loop following the web based update. The next time you do apt-get upgrade the latest version of Webmin will be replaced with the default TKL version from the TKL mini repo, and then Webmin will offer to update itself again...

Thanks for taking the time to write meaningful, substantive feedback. It means a lot to us to have responses. I’ve shared your comments with the students in the team, and they’ve enthusiastically begun building revisions with your recommendations in mind. The VirtualBox appliance is nearly complete; both revisions should be available THR or FRI on

There was absolutely no good reason to use dist-upgrade; I included the command in my instructions without fully understanding it. I understand your rationale and agree with it. And I’ve certainly learned more about it.

We chose to ground this in the TKL Core rather than LAMP because of the instructional value; the students have learned from the installation and configuration of the few packages we’re working with; that was the rational in any event. Given that we’re using apt-get install ampache solely to get dependencies undermines that rationale to some extent.

Your experience with Webmin was very helpful. We rebuilt without the webmin upgrade and relied on apt-get install webmin-samba (well remembered).

We are sincerely invested in these appliances, and look forward to any feedback; we are really hopeful that they can be adopted and developed in the future.

Alon Swartz's picture

Great initiative on your part, as well as Chelsea School. I hope other schools will learn from your example.

Might I suggest taking a look at TKLPatch. It might not be as straight forward as performing the installation interactively, but the lessons learned could be valuable to your students. Using TKLPatch would produce an installable image (ISO) that could be deployed on all virtual hypervisors, could be shared with community and eventually make its way in the TurnKey Linux library.

Looking forward to collaborating with you and your students.

A revision, based on the helpful suggestions here, of the Ampache virtual appliance for VMware and the appliance for VirtualBox have been posted to . The build notes have been adjusted to reflect the changes. Thanks again for the helpful response.

TKLPatch is the next step for us. I've been eying the documentation, but not acting. I'll tackle it this weekend, and have lesson plans for my students at the beginning of next week. We look forward to contributing in any way we can.

TKLPatch has been installed on the Ampache virtual appliances and let loose on .

I'm running into trouble understanding the documentation for producing an ISO, however. The way I understand it:

Each step should be carried out in the virtual machine.

My first step should be extracting the root filesystem:

tklpatch-chroot path/to/image.rootfs

My understanding is that this will extract the root filesystem to the directory and file I specify. Any reason I should not use the path /media/iso?

The next steps in the docs say "Once complete, perform a clean up (rm -rf image.rootfs|cdroot), and test your patch (preferably in a virtual machine).

What does the pipe to cdroot do?

What's my next step? will one of these steps produce and ISO? If so, is there a time and a place for specifying where the iso image goes?

I feel like I'm missing steps from the documentation I'm interpreting.


If I'm understanding right, the iso image will be in the virtual machine and I'll have to move it out with sftp. Do I have that much right?

Liraz Siri's picture

Thanks for the feedback. I took another look at the documentation and tried rewriting it a bit to clear up the potential for misunderstanding. In particular I agree it's not really the best idea to use a "|" in the context of a pseudo shell command when you don't really mean a shell pipe. Is the current version better?

Anyhow, what I recommend you do is use tklpatch-example to create an example patch and then try to apply that to the TurnKey Core ISO without making any other changes, just to see how patching works. Then you change the example patch to add your custom changes.

Note that once you have a patch applying it to an ISO to create a new ISO is totally automatic. The part that may have confused you was discussing tricks you can use to help develop the patch - as in, figure out what it needs to contain.

I'm still working out how to use TKLPatch. It may not be the documentation's problem; I'm feeling a little definicient in skills as I tackle this. The workflow, as I understand it, is something like:

  1. Open a TurnKey Linux appliance base, such as LAMP.
  2. In the VM, apt-get update and apt-get install tklpatch
  3. sftp the ISO into the VM to a location like /home. This is for experimentation purposes. TKLpatche-extract-iso.
  4. Create a TKLpatch skeleton somewhere, like /home. Write mypatch.
  5. When mypatch is right, sftp another copy of the iso into the vm to a location like home. tklpatch-extract-iso.
  6. I don't know what this does: tklpatch-chroot path/to/image.rootfs. OK, nevermind, I get this.
  7. When the patch is applied and ready to rip, I need to tklpatch path/to/image.iso path/to/mypatch

Then when I try tklpatch-geniso path/to/root.fs new.iso - I get an error that it can't find the boot catalog directory 'isolinux.' I know where it is - it's in the same directory. But I don't know how to point that out when I use tklpatch-geniso.

I feel daft.


Liraz Siri's picture

First let me clear something up. Chroot means "change root" and its name comes from the chroot command which allows you to launch a process that has a different filesystem root. The root of the filesystem is usually '/'. Say you extract the root filesystem of an appliance to /newroot and run:

# echo hello > /newroot/world
# chroot /newroot /bin/bash
# cat /world
# exit
# man chroot

chroot launches /newroot/bin/bash which thinks that /newroot is really '/'. That would launch a shell that thinks /newroot is '/'. Get it?

You got it right until step 5. When mypatch is ready you can apply it to the ISO you downloaded to create a new ISO like this:

tklpatch /path/to/image.iso /path/to/your/mypatch
As the embedded documentation says, tklpatch is a high-level script that calls tklpach-geniso. You don't usually have to run tklpatch-geniso yourself, though you could if you wanted to and it's sometimes useful to do that (e.g., when you want to re-use part of tklpatch for your own purposes)

I've completed and posted a draft Ampache ISO built on TKL Lamp appliance at

My apologies for asking support questions on this forum; I wasn't being careful. The students and I have a lot of TKLpatch questions that we'll need to have answered to make this ISO a viable appliance; I will post at the support forum.

Add new comment