The purpose of this review is to provide some additional exposure to source-based Linux distributions in general, and Sorcerer in particular. We’ve been using Sorcerer where I work since January of this year and have been completely satisfied with the experience. Hopefully this review will give you a good idea of why we use Sorcerer, and it may move you to try it yourself. I’m no systems adminstrator, so if I can install and work with Sorcerer, most people with a little Linux experience will be able to also.
Prior to installing Sorcerer, I had used RedHat (7.3 and 8.0) and SUSE (8.0) for a few months, so I was somewhat familiar with Linux, the file structure and I knew how to go through the ./configure, make, make install routine.
The first thing I did was to download the latest ISO, which can be found here. I used the sorcerer-ia32-20030911.iso.bz2 for this review, which was a beta version. This has been updated to sorcerer-ia32-20030930.iso.bz2, which is in the stable tree. I next unzipped the file using “bunzip2 sorcerer-ia32-20030911.iso.bz2” and burned the iso image to a CD-R. The system requirements for Sorcerer are provided in the original installation guide. Two things I’ve noticed about Sorcerer are that it likes a bigger hard drive and more RAM. Other than that, whatever you can install Linux on, you can probably fit Sorcerer on too, but keep in mind that your system will be compiling the software, so older, lower powered systems will drmatically increase an already time consuming process. Most of our systems running Sorcerer are 1GHz AMD Durons with 1GB+ of RAM and 30GB-80GB hard drives. On this type of system, a program like XFree86 might take around 15 minutes to compile.
Since I was satisifed that my system was sufficient, I set my BIOS to boot from the CD-ROM, put the newly burned Sorcerer ISO in and rebooted. The first thing you get is a fairly typical Linux boot screen, where you have the opportunity to enter some boot parameters. This is important if you have things like SCSI disks and is noted on the screen. As a side note, do yourself a favor and at least glance at the screen. Sometimes a question you have just might be answered right there. I didn’t have anything special, so I just hit enter. The next screen is a menu that allows the ISO to work as a rescue disk. From here you can load modules, drop down to a shell, etc. To proceed with the install, just select “Continue Booting.” When the ISO kernel finishes loading, the login screen appears. The login ID is “root” and there is no password, so I just hit enter again.
After the login, type “sorcerer.install” (this is instructed on the screen also) and the install menu is activated. The entries on the menu are NLS, DISC, OPTIONS, KERNEL, NETWORK, SHELL, and DONE. Highlighting the selections provides a description of the item. I’ve installed Sorcerer several times and I always use the installation guide, and there is also the Installation Walk-through. Basically, you navigate the installation menu from top-to-bottom. Selecting NLS, for example, lets you choose your time zone and default editor. I’m a vi fan, so I chose “elvis” as the default editor, but the default is a pico-like nano. The DISC menu item is where you partition your drive, create, intialize and mount your filesystems, and transfer Sorcerer from the CD-R to your hard drive.
I chose to use fdisk to partition my drive, but you can also choose cfdisk, or parted if you are more comfortable with those. I use fdisk because that’s what’s used in the install guide. For this installation I’m installing on a secondary hard drive, so I selected “disk1.” There is a problem with the install guide at this point, which first has you set up a swap partition of 1GB. I need to make a note here: Sorcerer needs lots of memory, in fact SWAP + RAM should be at least 1GB, which is why the install guide has you set up a swap partition of 1GB. However, the way it’s suggested doesn’t work because the install guide’s instructions have you set up the first partition, swap, from the first sector, letting fdisk set the last sector based upon the partition size of 1GB. Then it instructs you to set up the boot partition of 50MB, using the first sector. This obviously can’t be done, so I first set up the boot partition using the first sector and 50MB size, then I set up the swap partition, using the default selection and 512MB (remember I have 1GB of RAM), then I set up the third partition, root, with the rest ot the drive. You can, of course, define whatever partitions you like, /home, /var, etc. We store everything on a network drive, so setting up a separate /home partition is no big deal for us.
After partitioning the drive, you need to create and initiate the filesystems for the new partitions. Here is the reason we get to sorcerer-ia32-20030930.iso from sorcerer-ia32-20030911.iso. I read the recent SourceMage review on Distrowatch and noted that the author of that review had tried to install Sorcerer, but failed because the installer wouldn’t create a reiserfs filesystem for the root partition. Trying to create a reiserfs filesystem also failed for me. Now, this gives me the opportunity to make two points about Sorcerer. First, the install menu is really a framework, so if you have sufficient knowledge, you don’t even need to use it all. Thus, at this point, if I really, really, wanted to create a reiserfs filesystem on /, I could quit the installer back to the shell and use “mkfs -t reiserfs [/dev/…],” then go back to the intaller. Second, I could join the Sorcerer mail list and ask the users. You’ll that I downloaded the Sorcerer beta ISO. It wasn’t labeled beta for no reason. In fact, the reiserfs problem was a bug, which was corrected for the sorcerer-ia32-20030930.iso because I reported it. For me, I’ve used both reiserfs and ext3 and I never noticed a difference, so ext3 was fine, which is what I ended up using. After creating and initializing the filesystems (the CREATE and INITIALIZE menu options), I hit the TRANSFER menu item, which transfered Sorcerer from the CD-R to the new partitions.
After transferring Sorcerer to your hard drive, you can set the Sorcerer options using the “Options” menu item. The options you can set Compile options: Architecture (i386 for PC’s), Build, Debug flags, Compiler (the current Sorcerer comes with gcc 3.2.3, which is default, but at some point you may need to install and use gcc 2.95.3) allows you to select a default compiler, Hardware type, Language (c++), and compile flags; Features; Integrity; Rates; and Sorcerer which the Installation Walk-through covers. You have to go through this in order to create a “default” file containing your specific compiler options. This default file can be found in /etc/sorcery/cpref and there are various template files provided for your use. You can also create other files with different compiler options in case you want to change options for different applications.
Now it’s time to configure your kernel and set up a boot loader. Sorcerer gives you a choice of boot loader, but these choices don’t include GRUB, although you are free to download and install GRUB on your own – you just have to remember to keep it updated on your own also. I’m somewhat familiar with LILO, so that’s what I use. Because I’m installing on a secondary hard drive, I choose to put the boot loader in /boot although I could just as easily have put it in the MBR on the secondar drive. You need some hardware-specific information to configure your kernel properly, so note specifics about your processor type, sound card and network card. There is ample information available about how to configure your kernel, if you want some extra help. I usually go through each menu item, read descriptions and decide whether or not to enable a particular item using that information. It usually doesn’t take much time to compile the kernel, so if you leave something out, you can always re-do it later. I’m not too concerned about kernel size (GASP!), but some people are and if you’re one of them, read up on it.
I now have my kernel configured and compiled and I’m on to the next menu item, NETWORK. Here is where I set up my networking. First I set up my hostname and choose Ethernet TCP/IP with DHCP. However, I also use a direct pppoe connection for adsl. What works for me here is to go back through the NETWORK menu item (yes, I re-enter my hostname) and choose PPPOE. Choosing PPPOE allows you to configure rp-pppoe at this point, although you can also run the rp-pppoe configuration later. At this point, I think I’m done with the install, so I select DONE and, per the install guide instructions, I don’t choose to re-boot, but I go back to shell and type “halt.”
Some Post-Install Stuff
Since I have just installed Sorcerer on a secondary drive, when I re-start my system, I boot into the original set-up on disc0. Now it’s time for me to re-configure LILO to use the two hard drives. This is what I did: I created a new directory /mnt/disc1/boot and edited my /etc/fstab to include “/devices/discs/disc1/part1 /mnt/disc1/boot ext2 defaults,noatime 0 0.” I then re-configured /etc/lilo.conf for the new image by setting “boot = /devices/discs/disc1/part1.” Then I ran /usr/sbin/lilo, which picked up Linux-2.4.22b, the new kernel on the secondary drive. After rebooting, Lilo showed the new Linux-2.4.22b choice, as well as my existing Linux-2.4.22 located on the primary hard drive. Viola! I’m now seeing the Sorcerer boot screen, which is just the usual text-only init level 3 login prompt.
The install guide is still useful here, but the Install Walk-through is a little more up-to-date. I login using “root” for the userid, and no password. Ok, now it’s time to set a root password, so I type passwd and set one. Because I previously set-up rp-pppoe, I type adsl-start and a moment later I’m connected. It’s important to have your internet connection because it’s now time to download and install some additional software. Sorcerer uses a thematic approach, so most commands are based on the Sorcerer theme. Some basic commands are “augur,” “leech, and “cast,” and all software applications are called “spells.” Thus, to install a software application, you cast a spell. You may or may not like the theme – it doesn’t matter to me what the commands are called, but after using it, you can’t deny it works. Because the ISO is new, I don’t think I have to worry about updating gcc or glibc and doing a rebuild, but if you’re installing some months after the ISO was made, you may need to update gcc and glibc. It turns out that it’s probably a good idea to do a rebuild anyway. I ran into trouble trying to cast certain spells because of a problem with bzip2. Turns out that the correction was to “cast bzip2,” which leeches a source file and re-compiles. There may be others, so rebuild it was.
The next thing to do is to “look around.” Try typing “augur” and hit enter. This provides a description of the “augur” command with available options. Two options that are helpful are “augur version SPELL” (where SPELL is the name of the application, and “augur available SPELL.” The first will tell you what version you have installed, the second will tell you the latest version available in the “grimoire,” which is the catalog of all available spells. If your version of gcc, or glibc are different, older, than what’s current in the grimoire, you should “cast gcc” and “cast glibc.” Or you can “cast gcc bin86 binutils glibc.” The Install Walk-through explains this in more detail. After you update your gcc and glibc, you need to recompile your existing applications by doing “sorcery rebuild.”
Next I follow the Installation Walk-through suggestion and cast useful-profile to install some basic things like perl. Remember, casting takes awhile because you are downloading sources and compiling them. For all of the spells in the grimoire, you don’t have to worry about dependencies because they’re already taken care of. For instance, this machine is a desktop machine, so I want X, but I’m not sure exactly how to install it, so I type “sorcery” and hit enter. This brings up the “Sorcery Spell Management Utility.” It’s actually more than a spell manager, because it’s menu items allow you to cast spells, update existing spells, examine logs, set Sorcerer features like compile options, etc. At first it’s easier to use the menu, but after awhile, it’s really more convenient to use the command line. At the menu, I choose SPELL, and then CAST, which brings up categories of spells. I’m after X, so I page through the categories until I come to X11, which I select and I’m presented with a myriad of spells, one of which is “XFree86.” I choose that and another menu appears with choices of “Add” (lets me add X11 to the cast queue), “Configure” (lets me configure the options for the X11 spell), “gcc” (lets me choose which compiler options file to use to compile X11), “Requires” (shows spells that X11 requires), “RNI” (shows spells that are required, but aren’t already installed), and “Verbose” (shows a description of X11). I choose Add, to add this spell to the queue, then Exit, Cancel, Exit, Exit, Queue, and Run, to cast the X11 spell. I then choose which version of healing I wish to use after the cast (healing essentially tests other installed spells after the cast to make sure everything still works, if a spell appears to have trouble when healing, it is re-cast to correct the problem). Most spells have configuration options with set defaults, which you can pre-configure by choosing the Configure option. Most of the time, I just use the defaults, but if a spell has a particular option I’m interested in, I’ll go ahead and select that particular comfigure option. For X11, you need to go through a configuration menu to choose appropriate options for your particular video card. I use NVIDIA, so I make sure and choose the “nv” option, while choosing nothing under DRI. The X11 spell also lets you choose to install XFree86 fonts or not. Once X11 has finished casting, I copy my pre-existing XF86Config file to /etc/X11/Xf86Config and I’m ready to “startx.” You can also manually configure XF86Config and you have to know your video card specs, mouse specs as well as your monitor information. Since this was a second install on a secondary hard drive, I got off easier (it’s not THAT difficult to configure X, but one easy way might be to boot up knoppix and copy the resulting XF86Config file -although I think it has a different name in knoppix- to /etc/XF86Config).
Like I said, I could startx and work from the basic X11 window manager environment, which I’ve done before, but I’m in no hurry, so I decide to “cast NVIDIA-Linux-x86.” This will install the NVIDIA drivers for my video card and let me use 3D. This doesn’t take long, and now I can edit my XF86Config file and change “nv” to “nvidia’ to update from the basic Linux Nvidia drivers. What should I do now? Well, I guess it’s time to install a desktop. I’ve used both Gnome and KDE, but I definitely like having both sets of libraries, so I set about casting both Gnome and KDE. Instead of actually learning what each takes, I just do “augur available” and note everything with “kde*” and “gnome*” in it and cast them all. I must warn you, doing this takes a long while. It will pretty much take an entire day to cast KDE, so I turn off the monitor and go about my business for a couple of days. When I finally get back to the new Sorcerer, everything appears to be done. I verify (“augur installed”) that the spells for my preferred KDE have cast and I note a bunch of gnome-* spells. I go ahead and create .xinitrc and .xsession files with /usr/bin/startkde in the /root directory. I’ve nver been sure which one is required, but when I do both, it works. I also edit /etc/inittab and change “id:3:initdefault:” to “id:5:initdefault” and uncomment “kdm:5:once:/usr/bin/kdm” and comment out the “xdm” entry. Now, I’m ready to start KDE. But wait. I’ve been reading a lot of articles about the latest 2.6.0 kernel and I notice that the grimoire contains “linux,dev.” I quickly run a “augur available linux,dev” and get 2.6.0-test5. That’s good enough for me. I read HowTo Upgrade To The 2.6 Kernel and run “augur installed” to make sure I have all of the requirements installed to compile the 2.6.0-test5 kernel. The only spell not already installed was module-int-tools, so I dutifully cast it. Now, “cast linux,dev” brings up the kernel configuration menu via menuconfig and I configure the new 2.6.0-test5 kernel. I’ve read about the lack of NVIDIA drivers for the new kernel, so I edit XF86Config and remove “nvidia” in favor of the default “nv.” Time to reboot and edit the /etc/lilo.conf file on disc0 to add the Linux-2.6.0.test5 kernel on disc1. Another reboot … drumroll … . Arrrrgh, I get a message that says that /boot is not a true ext2 filesystem, or that the superblock is wrong and I should run ext2fs and try a new superblock. Hmmmm, but there’s an “or.” Or, I can hit ctrl-D and proceed normally. What the heck, ctrl-D it is, and a few seconds later I’m looking at the KDE login screen. Not without problems, as I have no sound. I guess I don’t have the ALSA kernel configuration done correctly. Well, I don’t have the NVIDIA video either, but I do have the 2.6.0-test5 kernel booted and working otherwise, so I’m satisfied for the moment.
What can go wrong?
Well, as a matter of fact, lots of things can go wrong. During the course of my investigating the 2.6.0-test kernel, something got messed up. What happened was that no matter what particular kernel I used to boot, certain spells would automatically cast linux,dev (the 2.6.0-test kernel). This was only a problem because some spells require the headers from the 2.4.x kernel to compile. As you can imagine, this was more than irritating. During my attempts to correct this problem, I ended up corrupting a bunch of essential header files, libraries and the gcc compiler. From that point I had a couple of options: (1) download the new ISO and re-install, (2) use my existing rescue/install CD and copy the files from there, or (3) boot into my primary drive, mount the / filesystem from the secondary drive and copy the files from old to new. I chose number (3) and am booted into the new Sorcerer system as I type. How did I figure out the problem? Well, I looked at the compile logs for spells that were failing (augur compile SPELL). I do have to admit, however, that I’m still not sure what caused the problem in the first place. There’s something about trying to run both the linux and linux,dev spells that causes problems. My take is that one could run the linux 2.4.22 kernel, get everything installed, and then cast linux,dev and run the 2.6.0-test kernel. The only problem would be that certain spells would fail if they went looking for the 2.4.22 header files. You could always create separate directories for the different header files and have a bash script that chooses the proper headers depending on the spell. Or, you could manually install the 2.6.0-test kernel and that way Sorcerer wouldn’t know it was there.
The Power of Sorcerer
Ok, I have been able to boot into the 2.6.0-test5 kernel and use KDE 3.1.4, but, after my troubles, I’m sticking to the 2.4.22 kernel and am trying out gnome 2.4. There are obviously other choices for dekstops: fluxbox, xfce4, etc. How your desktop looks and operates is a matter of personal taste and “cast … .” Now it’s time to gather some tools with which to work. I’ll need a Web browser, an instant messenger client, applications for word processing, spreadsheet and presentation, an irc client, a print server, etc. I examine what’s available using “augur available” and make my selections. Mozilla Firebird, gaim, OpenOffice 1.1 beta 2 (ok, ok, sometimes, but not often, Sorcerer gets a bit behind, especially with betas and release candidates), xchat, and cups. Before I know it I have either directly, or indirectly because of options or requirements, cast some 300 spells and have most of what I need to do my work. Of course it takes some time, but that’s about all, and it is possible to cast spells and continue to work. In fact, you can cast a spell for an application with which you are working while it casts. When you quit the application and restart it, you’ll restart the updated version.
Keeping your system updated is also simple. Just run “augur synch” followed by “augur newer” followed by “augur update.” The “augur synch” installs the latest sorcerer tools and grimoire. The “augur newer” compares your installed spells against available spells, and if there are newer versions or updates of your installed spells, it places the spell in the cast queue. Finally, “augur update” casts everything in the cast queue. When it’s finished, all of your spells are the most up-to-date versions available. But that’s not all. Let’s say you have a spell that you don’t want to automatically update. No problem, just run “augur hold SPELL” and that spell will not update. To unhold it, just re-run “augur hold SPELL” to toggle it off the hold list. Forget which spells you have held, just run “augur held” to see a list. What happens if a spell is updated, but there’s some problem with the new version? Just run “dispel –downgrade SPELL VERSION” where VERSION is the version you would like to re-install. Providing you have left enough disk space in “necropolis,” you can return to an earlier verison just that easily.
As you can see, Sorcerer offers tremendous convenience. Many Sorcerer users set up cron jobs to run the augur synch, augur newer, augur update combination on a regular basis. Other users get their boxes right where they want them and hold most everything except security updates. We usually update everything about once a week. Sometimes, however, bugs crop up. For instance, I was trying to cast XFree86, but the cast kept failing because it couldn’t download the source file fontconfig-2.2.1.tar.gz. In Sorcerer, the grimoire is located in /var/state/sorcery/and the gimoire contains the cast instructions for each spell in a separate directory. You can learn more about writing spells by reading Scruff’s Spellwriting Tips, which is located at the Sorcerer wiki page. Most spells have a DETAIL file and a BUILD file, and I noticed in the XFree86 DETAIL file that casting XFree86 was attempting to download fontconfig-2.2.1.tar.gz. There are a number of Web sites and mirrors that Sorcerer will use to grab sources from. Sometimes they’ll be directly from a project’s homepage, but often they are from the Sorcerer ftp site on ibiblio.org. When I checked the fontconfig Web site, I noticed that there was no fontconfig-2.2.1.tar.gz available, and (almost) all of the sources on ibiblio.org are BZ2, not GZ. To temporarily correct the problem, all I did was change the .gz to .bz2 in the XFree86 DETAIL file and the cast finished with no problem. I then reported my findings to the Sorcerer mail list and it was corrected in the next grimoire. Why am I telling you this? Well, for two reasons: first, you should know that sometimes in Sorcerer, just like the rest of life, things go wrong, but you should also be aware that you can often work around them; and second, when things go wrong, don’t lose it, don’t whine and complain, just use the Sorcerer resources and try to work through it. Send an message to the mail list, search the list archives, or get on irc.freenode.net#sorcerer and ask (you may have to wait awhile for a response since those folks aren’t the chattiest bunch and, like me, they don’t always notice when someone asks a question).
What if I need an application that’s not in the grimoire? Simple, you have a couple of options. One, you can simply download the source(s) and install them manually (./configure, make, make install), that’s really all Sorcerer does, but it also keeps a record of all those installations. Two, you can write a spell for that application. Read the wiki and look at some other, similar spells to get the hang of it. Just create a directory for your spell in the gimoire.local directory, run “augur merge” and “augur index” and you’ll be able to cast your spell just like any other. That’s the true power of Sorcerer, flexibility and actually learning something more about Linux without really trying.
So, What Did We End Up With?
Well, let’s take a look.
This is the KDE desktop with transparent XMMS open over the “Puzzling” wallpaper created by Dogalope and available at Sorcerer Hype.
As I mentioned, we’ve been using Sorcerer for nearly a year and have it installed on over half of our desktops. Our company is open to whichever OS or distribution an employee wants to run and most choose Sorcerer. We’ve had some problems, but mostly with commercial applications. One of the strengths of Sorcerer is the ability to quickly and easily update your box with the latest application versions. However, this can cause some commercial apps to no longer work because they require an older set of library files. It is possible to get around this problem by manually installing the older libraries, and whether you do this would depend on how much you need the application. Sometimes for us it is just easier to have a box running RedHat, Mandrake, or SUSE and keep the commercial applications running on there.
If you’re looking for a Linux experience that recognizes all of your system hardware and peripherals during installation and one that sets up your desktop for you, Sorcerer is not for you. But if you want to really learn a little about what’s really going on, how Linux interacts with your system hardware and peripherals, how to really set up your own desktop on a system that’s running the most current applications, Sorcerer is for you. Based on my experiences I can highly recommend Sorcerer.
About the Author:
My name is Rob Tischer, I work at SK Enterprises, a small business services consulting company. I’ve been using Linux since Spring of 2002, prior to that, all MicroSoft. I’m a lawyer and an economist.