I thought it would be a cool idea to celebrate the “farewell to udev”. With the abandoned ConsoleKit replaced by ConsoleKit2 which is actively maintained by the Slackware-friendly XFCE crew, and Gentoo’s eudev taking the place of udev, we are well equipped to keep systemd out of our distro for a while. Basically eudev contains the udev code as found in the systemd sources, but then stripped from all standards-violating systemd crap and with a sane build system. Hooray, we’re back in business and eudev gained some more traction. Win-win.

How to celebrate the occasion? Easy! By releasing a first public Beta of the Slackware Live Edition.

Screenshots of my latest “Project X” were already revealed in a recent post. Slackware Live Edition is a version of Slackware-current (64-bit only for now)  that can be run from a DVD or a USB stick. It is an ISO image meant to be a showcase of what Slackware is about. You get the default install, no customizations, but with all the power.

slackwarelive_syslinux

Let me repeat the reasons I had for creating the Slackware Live Edition (apart from sheer curiosity):

  1. Provide a Live version of Slackware proper – i.e. show Slackware as it is, but without having to install it. No hiding of kernel messages scrolling across the screen at boot – no custom wallpapers, etcetera. Meant for education and demonstration purposes.
  2. The target should be slackware-current – the bleeding edge. Many people want to know what that looks like but are hesitant to install slackware-current for fear that it breaks stuff and causes productivity loss.
  3. Provide a way to generate a Live ISO with just Slackware packages as the source – fully scripted and deterministic.
  4. Still be able to customize its content – for instance provide stripped-down or minimalist versions of Slackware but also allow for the inclusion of 3rd party packages.
  5. Option to create a bootable USB stick running Slackware Live (which is different from ‘dd’-ing the hybrid ISO to a USB stick!)
  6. Keep It Simple Stupid!

What will you get with this first Beta? I have two ISO images, created by a single script: The full Slackware64-current contained in a 2.6 GB ISO image; and a 700 MB stripped down version with XFCE as the Desktop (fits on a CDROM!). Unfortunately Plasma 5 is currently broken due to the icu4c upgrade in -current, or else I would also have included an ISO with a  Slackware64-current & Plasma5. But that ISO will come once the broken packages have been recompiled.

The ISO images are hybrid, which means you can either burn them to DVD, or use ‘dd’ to copy the ISO to a USB stick. Both methods will give you a live environment which will allow you to make changes and “write them to disk”. The changes will be kept in a RAM disk, so a reboot will “reset” the live OS to its original default state. I.e. there is no persistence. Persistence has been added in a later Beta by the way.

I want your feedback to get the bugs out of the boot-up stages. Slackware Live Edition is using syslinux as the bootloader and a modified Slackware initrd.img file as created by the “mkinitrd” command (the modifications are in the “init” script). Boot-up is fine both on my ageing laptop and the bleeding-edge desktop computers that I own but I am sure that there will be corner cases.

Based on your feedback I will release a second Beta somewhere soon, and those new ISOs will be accompanied by the scripts I used to create them. One of those scripts, “iso2usb.sh” will write the ISO content to a USB stick, after partitioning the stick (erasing all data). That USB stick will have persistency! I.e. the things you change while Slackware Live is running are not kept in RAM but written to the USB stick. And that will survive a reboot.

Slackware Live knows two user accounts: “root” and “live”. They have passwords, and by default these are… you guessed: “root” and “live”. Also by default, the ISOs will boot into runlevel 4  i.e. you will get a graphical login. The syslinux bootloader will allow you to pick a non-US language if you want (I made a selection of commonly used languages) and that will also determine the choice of keyboard layout and timezone. I am not yet happy with this boot menn: I want a separate choice of keyboard layout. That will be something to take care of for a future Beta.

Press <F2> for an overview of (most) boot parameters. Pressing <TAB> will expand the currently selected boot choice, allowing you to edit the commandline. Owners of a recent Nvidia graphics card will want to add the word “nvidia” to the commandline, as this will load the latest Nvidia driver (contained in the full Slackware ISO), giving you instant hardware graphics acceleration.

How is the Live filesystem assembled?

I tried to deviate as little as possible from a regular Slackware boot. For the full Slackware ISO the process was as follows:

  • every Slackware package set (a, ap, d, .., y) was installed into a separate chroot directory
  • every chroot directory has been squashed into a separate squashfs module
  • these modules are loop-mounted and combined together using an overlay mount
  • some filesystem initialization is done on the overlay (a locate database is created, slackpkg is configured, user accounts are created, initial environment for the accounts is configured, initrd is generated, etc)
  • all this is stuffed in an ISO file and syslinux is used to make the ISO bootable. The “isohybrid” command is run on the ISO so that you can “dd” the ISO to a USB stick and thus create a bootable USB media
  • on boot of the ISO, the “init” script in the ISO’s initrd does the magic of finding the live media and re-assembling the filesystem overlay before giving control to the real Slackware init process (PID 1)
  • a RAM based filesystem is used as the writable component of the overlay, so that the OS thinks it is working off a writable disk and won’t choke

The XFCE ISO is a severely slimmed-down version of Slackware for which I wrote a custom list of packages to add.

Get the ISOs here:

More mirror locations are welcome! I really hope that the server will not buckle and die when you people start downloading, so please be gentle. The “rsync” command has a “–bwlimit” parameter which lets you limit the download bandwidth.

Please send me an email with your URL if you have a server with lots of bandwidth, or leave a comment below this article.

And tell me about your experiences, your feedback, your ideas! You’ll all be beta testers, and I expect that the biggest pitfalls will be in the initrd’s “init” script. Also, don’t be scared of all the available loopback disks – those are the squashfs modules that are loop-mounted before assembling them into a overlay filesystem.

Have fun! Eric