Working with Suse Studio : An exercise in online virtual appliance creation.
Making custom Linux distributions can be an arduous task. Luckily, there are companies out there that are looking to make the process more friendly. Previously, I reviewed the Reconstructor Web UI, a web-based Debian/Ubuntu customization utility, and today, I'd like to present you with a SUSE-based alternative called SUSE Studio. Although SUSE Studio does have some offline components (such as SUSE Studio Onsite and the rest of the SUSE Appliance Toolkit), this review will focus on the online components which are freely available at susestudio.com. For those that are following along at home, I'll assume that you already have an account with SUSE Studio (if not, you can request a free invitation via this page).
A quick bit of history: Suse Studio was released in July of 2009, and has a variety of web-based customized Linux build options. It uses Kiwi to build and customize virtual appliances. SUSE Studio also has its own mascot, named Dister.
Amongst the potential uses of SUSE Studio:
- You could make your own portable portfolio live-DVD, complete with running code samples or other work.
- Purpose-built OS installs such as kiosks, educational disks, or development platforms built through a web browser instead of on an actual machine.
- Virtual machines built to compile and test software before rolling out on a larger scale.
Honestly, the possibilities are limited solely by your imagination and the time you agree to put into it.
Building a Virtual Appliance
I will guide you through the build process of a sample virtual machine, to show you some of the features of the service. I'll include some screenshots and a video to help you follow along.
Once you have a SUSE Studio account, you can link it to a variety of different IDs that you may already have, such as Gmail or OpenID. For example, if I'm reading my Gmail in one tab and click the Google sign-in icon, it automatically signs me in using my Google identity.
Home page/Starting a new appliance:
Once you sign in, you will have access to your home page, where all of your previous virtual appliances are accessible. You are allocated 15 GB of free space to store your virtual appliances, but if your appliance is more than seven days old, it may be deleted to make room on the servers. The old projects remain, and they can be rebuilt at any time. The upper right hand corner has the "Create New Appliance" icon. Click it to start a new appliance.
Choosing a template:
When starting an appliance, you can choose from templates such as OpenSUSE 11.2, and SUSE Linux Enterprise 10/11. The environments can vary from incredibly small JeOS (pronounced "Juice") appliances to full featured desktops. Your initial choices of desktop environments are GNOME, KDE3/4, and IceWM. For this appliance, I chose an OpenSUSE 11.2 GNOME template. If these choices aren't appealing to you, click the "Additional templates..." link near the bottom of the screen.
Among the additional templates are a pre-configured Ingres or LAMP server, and up-to-date versions of KDE4 and GNOME. It's good to know that they're there, but I didn't think they were necessary for this build.
Name your creation!
Here we see Dister the mascot telling us to name our appliance. I'm going to call this appliance LinuxJournal-nix. You can change this name at a later time, so don't spend all of your time on this screen thinking of an unforgettable name.
Choose your software:
The software tab is where a great deal of the configuration of your appliance will occur. This is where you can select additional repositories, select packages, search for specific packages, or add patterns (groups of packages). You also have the ability to upload your own packages and repositories. Let's start by looking at the repository options.
OpenSUSE has an enormous amount of additional repositories available. The SUSE Enterprise Linux based appliances do not have the same repository options here.
With so many repositories to choose from, I'm very happy that they included a search option here. I've chosen to search for Dropbox, as I very much enjoy using their service. One annoyance from this search feature: It does not list version numbers, which was frustrating when I was looking for a version of eclipse-jdt of 3.5.0 or higher, since the default eclipse-jdt is 3.4-256.1.
SUSE Studio offers you a couple different ways to wade through all of the software packages from the repositories that you've selected. You can whittle down your results by repository, software pattern, group, or by using the search field that is provided. Keep in mind that if your selected repositories don't find a match, that doesn't mean that there won't be a match in the other repositories that you haven't selected. If that happens, refer to the Repo search shown in the previous screenshot.
Clicking on a software package or group will give you more info about it. A nice feature is that it will also tell you the suggested and recommended packages that go along with the selection, and feature a small "Add All" button if you wish to add the related optional packages as well. I picked some games and apps, and LinuxJournal-nix is starting to take its shape!
Configuration - General:
Here, you can easily configure your network, firewall, time zone, locale, and users/groups. I changed myself to the Central Time Zone, since I'm a Wisconsinite. User configuration can be done here, including assigning a shell of /bin/false, if need be.
Personalize your appliance:
Personalizing is where you can give your appliance a little bit of distinctive flair. This artwork appears during the boot and login process. You can upload your own content rather easily here. The default configuration is shown above, and the screenshot below shows the same virtual appliance with a Linux Journal logo and a background that I created (and posted on kde-look.org a while ago).
If you are doing a company or organization-specific build, this is an easy way to insert company-specific branding in builds. Keep in mind that this customization does not affect the user wallpaper.
Appliance at a glance:
Now seems as good of a time as any to mention that the left portion of a screen stores some basic information about the system. It indicates the type of build, size, and recent changes that may have occurred. If there are any conflicts or errors in your virtual appliance, they will appear here. Now, on with the configuration...
I've skipped over the "Startup" and "Server" tabs, as I don't need to change the default runlevel or make/modify an EULA (done in the Startup tab) or configure MySQL or PostgreSQL (found in the Server tab). Since I plan to make a live DVD, I'm going to configure the appliance to autologin as the default user (tux). I could also configure programs to autostart in this tab.
Virtual machine parameters:
The appliance tab allows you to configure your appliance to a particular use, such as Xen or VMWare/VirtualBox. As I am intending to make a live DVD, the only option that I've checked here is to add the installer to the live disk, just in case I feel like installing it.
If I were so inclined, I could run custom scripts on this appliance at the end of the appliance build or at each boot. I do not intend to use this feature in my appliance, but it's good to know that it's there.
After configuring the appliance, the "Overlay Files" tab allows you to add files anywhere in the system, with any permissions or ownership that you would like. It also accepts archive files , and can extract them, preserving permissions. If you plan on adding a significant number of files, I'd suggest going the archive route. I've simply added an additional wallpaper, so it wasn't as big of a deal for me.
We've finally reached the build stage. As you can see, the available build formats are quite varied. Currently, you can create live CDs and DVDs, hard drive images, and virtual machine images. Current virtual machine build formats are VMWare/VirtualBox (.VMX) and Xen. SUSE Studio is currently working on OVF (yay!) and Hyper-V (meh..) formats, as well. Decide your default format, and check any other formats that you may build, as well.
Once you've clicked the "Build" button, SUSE Studio will show you a progress indicator, indicating how much time the build is taking, and the process of the build. If you want, you can close the build window, and the build process will continue without your intervention. If/When the appliance finishes the creation process, it will indicate its status in your home window. This allows you to run concurrent builds, if you are so inclined. If there are any errors, it will indicate a description of the error that has occurred, and it may also suggest a solution. The LinuxJournal-nix build process ran without any hiccups.
Accessing your builds:
Here is an example view of some completed builds. If you click the "View Checksums" link near the bottom, it will show you all of the MD5sums, so that you can verify your download is not corrupted.
If you click on the "View files" link under Builds, it will open up a new tab and show you an interactive view of all of the files in your appliance. This view is also searchable. Note that I searched for Dropbox to see if it was installed. Test Drive:
The next feature of SUSE Studio is called Testdrive. It's a flash-based browser virtualization utility. The best way to show it to you is in video form, see it here.
Note: If you use the "Modified Files" feature and add files, they will be added in the "Overlay Files" section, if you later wanted to view, change, or remove them.
Well, that's it! We've just made LinuxJournal-nix 0.0.1!
I have had occassional issues with Testdrive and OS builds, but I do have to admit that the error page is cute. When I have contacted support, they have been fast, friendly, and helpful.
Non-optional brand placement:
When you add images to the boot screen, SUSE Studio adds a logo to the bottom right hand corner of the screen. It isn't optional. It would be nicer if I got a little more choice in that.
Being able to customize the boot splash and login screen whet my appetite for more customization. When you upload an image for the boot screen, it's automatically the login screen, as well. More flexibility would be nice.
Oddly enough, I had issues changing the desktop background in test drive mode, and didn't see an easily accessible option on the site.
Also I've had issues with non-traditional appliances. Autologin didn't work when I tried to configure a minimal X IceWM appliance, though it works fine in GNOME.
There does not appear to be a method to collaborate on appliances with multiple different people.
Despite the builds having a version history, there is no changelog function for explaining the differences in the different versions. Technically, you could create a text file and insert it into the appliance itself, but it would not be as easily accessible as a clickable text field on the site. I want creating documentation to be straightforward, not obfuscated. ((EDIT: Since the writing of this article, they have implemented a "Take Notes" feature that allows you to keep a version history. Read more about it on the Suse Studio Blog))
I used to have issues accessing the site in Google Chrome browser. I no longer have those issues, so I think they've fixed whatever issues were present.
Honestly, I'd like it if the remastering utilities could work better across distributions. I don't want to be stuck with SUSE, or Fedora, or Ubuntu when customizing. I want them all. At the least, I'd like all of the distros with the same package managment styles together in one tool (Example: CentOS, OpenSUSE, and Fedora; Debian, Ubuntu, and Mint). Time will tell if that will ever be possible.
I've been using SUSE Studio since its alpha testing phase in May of 2009, and despite the occasional frustration, I've been happy with the rate of development for this project. They are also currently hiring, so we can assume that this project will be continuing its progress in the forseeable future.
Regardless of the customization service that you prefer, be aware of the advantages of each service before you build. I'm an Ubuntu fan, but I really enjoy using SUSE Studio. These customization services are getting easier and easier to use as time goes on, so pay attention as developments are made. Also, feel free to take advantage of the FAQs, screencasts/guided tours, and HOWTOs that are available. It looks like the SUSE Studio team has done a good job keeping up with documentation, and they should be applauded for it. Online build services will encourage more customization, and the community will benefit from empowering their users to make systems that fit their needs, whether they are virtualized, installed, run as live CDs/DVDs, or pushed out to the cloud.