Originally published 2004-07-22, updated 2006-01-16 when moved to krampe.se.
I like Linux and open source a lot (like most of us at Bluefish) and we use Debian Linux for all our servers. But on our desktops we use Windows 2000 today. When I went into "100% laptop mode" a year ago it came with XP preinstalled and I kept saying to myself - "I will install Debian when I get time for it" - but I never did. And as time went by the migration seemed like a larger and larger step to perform.
Now I have a new laptop and this time I will not fall into the same trap. Now I am taking The Linux Desktop Plunge for real!
The laptop is a Zepto 4200, and Zepto just happens to be a scandinavian company, which feels nice! :) They gave me superb customer service from the first phone call (no waiting in a phone queue!) and it felt so good to be able to buy a laptop without having to pay a Windows "tax"!
I found Zepto when I looked around for a quiet laptop with a large good screen for a reasonable price - the fact that it has a top of the line graphics chip didn't hurt of course. :)
Zepto is focused on Denmark, Norway and Sweden and they seem to have gotten very good reviews in general. The machines are manufactured by Compal - one of the largest manufacturers of laptops in the world, perhaps even the largest. The Zepto 4200 is also known as the CL-56 or CL56.
The Zepto 4200 is a "Centrino" branded laptop, which means it has a Pentium-M (mobile) processor coupled with an Intel 855 chipset (with lots of power saving features) and a wireless 802.11 chipset. This one has the Intel 2200 chipset (instead of the slightly older 2100) which enables both 802.11b and g.
The CPU runs at 1.5Ghz but this is equivalent to approximately a P4 running at 2.4Ghz, which is pretty darn impressive.
Ok... Now as everyone knows getting Linux up and running on brand new hardware can be a challenge. But a fun challenge! As always it's about drivers, these are the crucial pieces:
Now, first things first - what about the Radeon M11? After surfing around I found various reports of success using both XFree86 and the newer X.org. One report suggested that X.org actually supports the M11 in full including accelerated 3D out of the box. I also found a page in the docs at X.org suggesting this.
This was the point when I started wondering about Debian. I had intended to run Debian "testing" - but as it turns out X.org hasn't been properly packaged for Debian yet. I found lots of info that they are working on it - but nothing ready yet as far as I can tell.
I did find reports of people building it themselves though, but somehow this triggered me to go into "distro fishing mode". Perhaps it was time to give a source distro a shot? I had read about Gentoo and others but the one that finally caught my eye was actually Lunar Linux, "out of this world!".
Lunar Linux is a fork from Sorcerer Linux that happened in early 2002. The primary reason for the fork was that a subset of the community wanted to work in a collaborative fashion instead of depending on a single individual to do most of the work. Five people then founded the lunar-penguin group which eventually grew and became Lunar Linux.
Lunar is similar to the more well known Gentoo but has a smaller community and quite a few people say it is easier to install. I entered the chat channel (#lunar, irc.freenode.org) and asked some questions about Lunar, the people were friendly and I liked the answers they gave me.
Through my involvement in the Squeak community I have come to value a friendly professional community more than mere technical advantages, so I decided to commit to Lunar, knowing that the ride may get rough, but that I will surely learn a lot from it. Debian still has a place in my heart and on our servers. :)
The basic installation was quite easy. The ISO isn't big (114Mb) since it is just a bootstrap with enough stuff to download and compile the rest. I downloaded and burned it, slapped it in, and followed the installation instructions - which was just a few pages long when printed out. I got a bit confused by cfdisk (primary/logical partitions etc) but that was probably just me being daft and had nothing to do with Lunar. :) The rest went pretty smooth.
The greeting when I was ready gave a short instruction on what to read next - the man pages for the lunar core tools. The most important are:
These commands are really the heart of Lunar and they are simple to use, the man pages aren't 40 pages long and they offer just enough information.
A basic first step in Lunar is to configure, compile and install a Linux kernel. In fact, you do that during the installation phase, but most probably quite a few times more later on. The kernel is just a module, like any other module. The standard kernel is called "linux" (2.4.26 at the time of writing), but there are others too - like "linux-beta" for example, which currently refers to the latest 2.6.7 kernel.
Anyone who has done this on other distros knows that it can be a few steps to learn. In Debian the procedure was ok, but it was still a few things to figure out (what about that revision number thing etc?) even when using the make-kpkg package.
In Lunar it can not be much simpler, I just type "lin -c linux", which means "recompile and reinstall module linux". It will ask me if I want to reconfigure the kernel, and if I say yes I get into the standard menu config. After exiting it proceeds with building and auto installing into Lilo (I think Grub needs manual tendering though). The only thing I need to do is to "shutdown -r now" when it is done. Very nice!
Since Lunar doesn't use any auto detection like some of the other distros (discover and whatever those programs are called) you might end up rebuilding the kernel, checking "dmesg" (the boot log), figuring out what hardware you have ("lspci" etc), searching the web for answers and reading the "?" screens inside menu config. But you learn a LOT. And you end up with a neat and clean kernel eventually.
As some of you may know XFree86 has been turned into a side player due to the change in license - all in all a mystery to me. It was thus forked into X.org which I think all major Linux distributions now have moved over to. So X.org is where the action is today.
Looking around in Lunar I discovered that not only did they have a module for X.org called XOrg but they also have a module for ATI's proprietary drivers called fglrx. After reading on the web I came to the conclusion that in order to have full accelerated OpenGL in X11 I needed fglrx.
XOrg was trivial to install, just "lin XOrg", which takes a while, and then I ran "startx". It actually autodetected and worked without a config file! Now that was a first for me. :)
Checking /var/log/Xorg.0.log gives a lot of info and I later discovered fglrxconfig which can produce a suitable skeleton config file for X and the Radeon card. It saves it as XF86Config-4, the standard name for XFree, but just renaming it to xorg.conf and putting it in /etc/X11/ worked fine for me. :)
Note: Scanning /var/log/Xorg.0.log for (EE) or (WW) is a good way to see what failed: grep "(EE)" /var/log/Xorg.0.log
After having gotten fglrx working together with a 2.4 kernel and XOrg - I thought I was more or less home free. But... I was out of luck this time. There is a bug somewhere in kernel 2.4/XOrg that only seems to show up with certain hardware.
Mouse movements locked up the mouse and keyboard interrupts when I moved the mouse at the same time as the machine was busy with something. I tried hard to fix it - and did find how to "unlock" it (by reloading the mouse driver when switching virtual terminals I think) - but no real solution was to be found. I even tried Knoppix just to verify I wasn't going mad, and the problem was there too. But using Knoppix was also an efficient way of testing if the problem existed with the newer 2.6 kernel, and it didn't!
Note: A good trick is to burn a Knoppix CD and throw it in, just to see what it detects and how it configures some things.
The issue with the mouse got me convinced that perhaps I should charge forward to kernel 2.6, after all - it is the released version. So... 2.6 here I come!
Lunar has a good howto written for moving over to kernel 2.6. 2.6-land is still beta-land, not the kernel itself, but there are a few modules in Lunar which aren't working yet with the 2.6 kernel. The 2.6 kernel is a great step forward - it feels snappier, has a lot of improvements on paper, tons of new stuff supported, the config menu has a cleaner structure and also - it builds much faster since it seems to have a new incremental build.
Since 2.6 is still "beta" in Lunar you need to be a bit careful and be ready for some work. Anyway, I followed the howto and more or less did "lrm linux" and "lin linux-beta", simple as that. Also make sure to reconfigure the kernel and get acquainted with the new kernel config - tons of new stuff - and for me some of the defaults were not what I wanted.
Eventually I got more and more things working in the machine. Sound, DVD/CDRW, internal networking, touchpad (!), power management (ACPI) and USB all worked fine out of the box with the builtin drivers in the 2.6 kernel. No need to hunt for drivers.
And XOrg in combination with module fglrx also worked with full hardware acceleration, eventually... :)
That part actually took some serious hunting and patching. But 2.6+XOrg+fglrx/hw acceleration is a bit on the edge, so issues were expected. I did learn quite a few things on how to modify Lunar modules and how to work with diff and patch! The patch I had to make has just been committed into the official module, so it should work fine now.
Note: To verify full hardware acceleration, run fglrxinfo. You can also test with glx_gears of fglrx_gears, I got 1800 and 300 FPS respectively. And the acceleration seems to work in Squeak (my favourite development tool/language) too. :)
When working with the laptop at home I discovered that I had a real problem getting new bits and bytes into the machine. I didn't have the modem working yet (see below), there is no floppy in this machine and I also didn't have a CD burner in my stationary machine, nor any network at home. Eh... ok. But my wife has a USB stick! :) Getting it to work was pretty easy, just rebuild the kernel and add a few USB options, add a single line to /etc/fstab:
/dev/sda1 /mnt/usbstick vfat user,noauto,umask=0 0 0
...make a /mnt/usbstick directory and then mount it using "mount /mnt/usbstick". That was pretty easy! Then there are of course various scripts to make this automatic etc - but I haven't had the time investigating it more closely. It solved my problem of getting bits into the machine at least. :)
Aah.... a softmodem! Hrmph. Well, it turns out this particular softmodem is an Intel thingy and there actually is a driver that works - the SmartLink driver. I eventually found the latest here. The driver was a bit tricky to build, it can use either a kernel module or it can go through ALSA (!) which is included in the 2.6 kernels.
First I tried using the kernel module, but it didn't want to connect. Then I read somewhere on the net that it worked better using ALSA, so I eventually figured out how to build it for ALSA (needed to do "make install SUPPORT_ALSA=1", just "make install" recompiles it and thus misses the SUPPORT_ALSA flag).
After that you can run the user space slmodemd program like this:
bash-2.05b# slmodemd --country=SWEDEN -a SmartLink Soft Modem: version 2.9.8 Jul 8 2004 02:07:43 symbolic link `/dev/ttySL0' -> `/dev/pts/3' created. modem `hw:1' created. TTY is `/dev/pts/3' Use `/dev/ttySL0' as modem device, Ctrl+C for termination.
...and then for example use wvdial to get a connection. I only needed to edit /etc/wvdial.conf and set "Carrier Check = no" to get it to work.
Now, this would be all dandy if it was not for some obscure bug in ALSA/the kernel. I keep getting "codec_semaphore: semaphore is not ready" in my kernel log, and I have noticed that this inevitably makes slmodemd fail to connect. I am not alone in seeing this, but I haven't found any specific patch or fix regarding it yet. Currently I just need to restart slmodemd and wvdial a few times until this message doesn't pop up in the kernel log and then it seems to mostly work, but it can still appear out of the blue while I am connected and the connection hangs. If you know about a fix - please email me! :)
What a relief - finally access to the Internet from home. I am one of those looosers that live 30 km outside of Stockholm and thus can't get ADSL. Sigh.
The CD-writer was a bit tricky, it seems like there are two ways of accessing those under the 2.6 kernel. Either using ATAPI directly or using SCSI commands over IDE. Interestingly the maintainers of module "cdrecord" seem to be in disagreement with Linus on how this should be handled - we will see what comes out of that.
I did successfully burn a CD with files using gcombust. After some looking around it seems like K3b is the current King when it comes to CD writing, I have installed it but haven't bothered testing it yet.
MPlayer/gmplayer seems to be the King of movie players and I "lined" it together with a few addons I could find. It plays everything great including the realplayer files! Impressive.
During this I did have some building problems of modules mjpegtools and ffmpeg and after lots of research it turns out that SSE2 should NOT be used together with Pentium-M, at least not with GCC 3.3.3 (it may work in GCC 3.4). Hehe. Ok... But after that stumbling block - and I can only blame myself because Lunar has an FAQ that explains that SSE/SSE2/MMX can be shaky - it seems to work fine.
XMMS is likewise the King of mp3/ogg playing and it was just another "lin" away.
During my work in setting up the machine I have also learned how to make my own Lunar Linux modules. It is very easy to get started with and it makes your own manual installations clean and nice - you can handle them in the same way as other modules in Lunar.
Let's look at a very simple example, GNU Smalltalk. The only thing needed was to create a directory in /var/lib/lunar/moonbase/zlocal called gnu-smalltalk and put a file in it called DETAILS with the contents shown below. The zlocal directory is where you can make your own local modules that will not be affected by the regular updates of the module structure called "moonbase".
MODULE=gnu-smalltalk VERSION=2.1e SOURCE=smalltalk-$VERSION.tar.gz SOURCE_DIRECTORY=$BUILD_DIRECTORY/smalltalk-$VERSION SOURCE_URL=ftp://alpha.gnu.org/gnu/smalltalk/$SOURCE SOURCE_VFY=md5:993f42d6258a4ff13d1b8dbf69923f9d WEB_SITE=http://www.gnu.org/software/smalltalk/smalltalk.html ENTERED=20040707 UPDATED=20040707 SHORT="GNU Smalltalk is a free implementation of the Smalltalk-80 language." cat << EOF GNU Smalltalk is an implementation that closely follows the Smalltalk-80 language as described in the book Smalltalk-80: the Language and its Implementation by Adele Goldberg and David Robson. EOF
Yes, that was it. Nothing more! And then to install it I just type "lin gnu-smalltalk". Now, of course, not many packages are that easy to make a module for, but it is very easy to get started.
So far I have made modules for the Gimp helpfiles, a specially patched fglrx module, a specially patched XOrg module, two Squeak modules, GNU Smalltalk, io, tcc and slmodem. And there will likely be more since it is so simple to do.
Update 2006-01-16: I have more modules available today.
I haven't yet tried to get the wireless bits running, but there is something called NdisWrapper that reportedly works with this chip today. There is also an ongoing driver project for the ipw2200 chip but it is not functional at the time of writing.
Update 2006-01-16: It now does work fine, see more info on my blog.
Apart from this - and possibly the firewire port, infrared and other small details I probably will never use - I think everything of importance works just fine. My only current problem is the modem/code_semaphore-issue, but I can live with it for now.
The combination of Linux 2.6 and XOrg has been rock solid and I have also installed a range of other applications, though I haven't played around much with those yet.
I am very pleased with the machine, it is virtually completely silent and the screen and performance is great. I think perhaps some people would have things to say about the keyboard - it has a different feel than my previous Acer laptop, but I can't really say if it is for the better or worse. The enter key is better placed than on the Acer - there are no other keys to the right side of it - but on the other hand the PgUp and PgDn keys are placed a bit too close to the arrow keys. I assume you can't get it all on a laptop. :)
To sum it all up - if you want a silent laptop with top graphics performance that runs Linux great and you can buy without Windows from a Scandinavian company (which has given me very good service) - then take a look at Zepto 4200. :)
And if you want to play around with a source distro, and isn't afraid of getting your hands dirty - Lunar Linux is a very good choice.
PS. If you found anything in this article that seems wrong, email me and I will correct it.