Slackware The way it is structured with the software sets reminds me of my first SuSE installations. Back then it was SuSE 4.4 I think. The Slackware-HOWTO seems to be the document I really need. I will download the first two ISO images and see how far I get.

All of this is based on Slackware 10.0. I also upgraded to Slackware 10.1 (2005-03-28 Software), and on to Slackware 10.2 (2005-10-15 Software).

(Why switch from Debian? First, I was using Debian unstable which means that I got a lot of package upgrades and every now and then some breakage – like the day when Claudia really needed a CD and cdrecord was broken... Debian stable didn’t cut it because over the months and years I wanted to try this or that package which was only available in unstable. So I switched. All the upgrading also meant new libraries now and then. And that meant that the stuff I built myself in usrlocal had to be rebuilt now and then because it, too, would fail after a while. So basically, apt-get was not only installing the good stuff, sometimes it was also installing the bad stuff. Self-compiling was also risky because the libs changed now and then. And Debian stable was too old. So I switched.)

Signature Verification

Get the Slackware Linux Project key, or download it from their website. [1] I saved the file as tmpgpg-key

    gpg --import /tmp/gpg-key

Now you can verify the two ISO images:

    gpg --verify slackware-10.0-install-d1.iso.asc \
    gpg --verify slackware-10.0-install-d2.iso.asc \

You’ll get the following message:

   gpg: Signature made [...] using DSA key ID [...]
   gpg: Good signature from "Slackware Linux Project <>"
   gpg: WARNING: This key is not certified with a trusted signature!
   gpg:          There is no indication that the signature belongs to the owner.

The warning is correct, unless your GPG already contains an unbroken trust chain between you and the Slackware Linux Project. Oh well. You could go ahead and sign the key yourself. After all, you’re going to install their operating system, and if you don’t trust them, who are you going to trust? But it is not an easy decision to make.


Instead of trusting parted, I booted from Knoppix and moved the contents of my entire root partition (on devhdb1) into another partition (devhdd7), and repartitioned devhdb using fdisk. A few days ago I was too lazy and had chosen devhdb as my new root partition and had left it at 120GB. I made five partitions:

devhdb1: 10GB – the root for my Debian Unstable system

devhdb2: 10GB – the new root for my Slackware 10.0 system (I hope)

devhdb3: 20GB – unknown use

devhdb4: This one contains the extended partitions.

devhdb5: 20GB – unknown use

devhdb6: 60GB – unknown use, probably for media files later on

I then moved the root stuff back from devhdd7 to devhdb1 and reinstalled grub just to be on the safe side:

    grub-install --root-directory=/dev/hdb1 /dev/hda

And it worked! Downloaded the ISO images, burnt them on a CD:

    cdrecord -data driveropts=burnfree -device = ...  (must find this commandline)

Installing, I chose devhdb2, full installation, made sure to select the KDE internationalization software set, did what needed doing, ended up creating a new user:

    adduser alex

And here I am...

Booting, Kernel

I later decided to give the bareacpi.i kernel a try, because the computer is new and therefore the motherboard supports ACPI. Cool! Now halt really does switch the computer off, instead of just spinning down the disks.

Strangely enough I was unable to do this via the pkgtoolSetup menu. Maybe because I forgot to specify the target again? Oh well. In the end I manually copied the files from the kernels/bareacpi.i directory on a slackware mirror as follows:

And then I relinked it:

    ln -sf
    ln -sf config-ide-acpi-2.4.26 config
    cp vmlinuz-ide-acpi-2.4.26 vmlinuz

I copied the kernel instead of linking because the old copy was not a symlink either.

I also decided to switch from grub on the Debian partition to a new lilo. Here’s my etclilo.conf:

    boot = /dev/hda
    install = menu
    timeout = 100
    vga = normal
    image = /boot/vmlinuz
      root = /dev/hdb2
      label = Linux
    other = /dev/hda1
      label = DOS
      table = /dev/hda

Don’t forget to run ’lilo’ after changing the file! I get the following warning but it seems to have no effect:

    Warning: The boot sector and map file are on different disks.

The MBR no longer contains grub, so I can no longer boot the Debian root partition. But who cares. ;)

The DOS partition is for the ComancheGame. I actually haven’t played it on my new computer. Must try it immediately. [...] Update: I no longer have a game port on this computer! No joystick!? And the soundcard is wrong, of course. And I have no DOS driver for my NEC3500A! ARGH!


Sound not working... Hm. There was some confusing info when booting, so I tried to fiddle with it. Then I turned to the web and found a report of how somebody else got sound working. [2] And it turns out that all I forgot was to run alsaconf! Everything just worked... I then ran alsamixer, reduced the volume a bit, and used alsactl store to save this setting. Worked! The motherboard said I had a SoundMax Digital Audio System with a DLS2 MIDI synthesizer with Yahama DLSbyXG sound set and blabla. At the very beginning of the booklet, however, it had a much better description: ADI AD1888 6-channel audio CODEC. After running alsaconf, alsamixer now shows me that I have the card SiS S17012 and the chip Analog Devices AD1888 – and that matches the info I have from the booklet. Cool! I think I like Slackware. ;)

Yeah, and I removed the system beep: Edit etcinputrc, and uncomment “set bell-style none”.


X is working without any single extra keypress. When I compare this to the good ol’ days with X -probeonly and other crud...

I did change a few things in etcX11/xorg.conf. I uncommented the following settings:

Option “!DontZap”: Emacs uses C-M-<backspace>

Option “!XkbLayout” “de”: Need the correct layout when typing my password...

For a graphical login box, edit etcinittab and change “id:3:initdefault:” to “id:4:initdefault:”.

I also had to run gdmconfig to enable the “action” menu which allows us to reboot or halt the system from the login prompt.

Touchstream LP

For my Touchstream keyboard I had to run mouseconfig again. This fixed gpm. Just choose an USB mouse. X11 was a bit tougher but pgas helped me out: In etcX11/xorg.conf, add an input device for the old mouse and and add the server... Then you can use both keyboards and both the old mouse and the mouse built into the Touchstream keyboard.

    Section "InputDevice"
        Identifier "Mouse2"
        Driver "mouse"
        Option "Protocol" "PS/2"
        Option "Device" "/dev/psaux"

In the Section “!ServerLayout”:

        InputDevice "Mouse2" "SendCoreEvents"

TTF Fonts

Got some fonts from Explorer language packs from the net (eg. Google:msmincho+download) and saved them in usrX11/lib/fonts/TTF. Then run the following in usrX11/lib/fonts/TTF:

    /usr/X11R6/bin/mkfontdir .

And immediately the Chinese text on looks ok! :)

Neep Fonts

Copied them from my old Debian partition into usrX11R6/lib/X11/fonts/local/:

    cd /usr/X11R6/lib/X11/fonts/local/
    cp /mnt/debian/usr/X11R6/lib/X11/fonts/misc/neep-* .

Ghostscript Fonts

For xfig I wanted some new ghostscript fonts. I downloaded the ghostscript-fonts-std-8.11 tarball [3] and unpacked the fonts into usrlocal/share/fonts. This time the directory was not on the fontpath.

I added this line to etcX11/xorg.conf:

    FontPath   "/usr/local/share/fonts/"

In the current session, I also ran:

    xset +fp /usr/local/share/fonts/
    xset fp rehash

SSH agent

If you want to use version control from within Emacs, you need ssh-agent or something similar.

In your ~.bashrc:

    export CVS_RSH=ssh

Reading optkde/share/config/kdm/Xsession I found out that ~.xprofile is sourced before the window manager is started. Excellent! I verified that other X Display Managers (eg. XDM) support it as well – I looked at etcX11/xdm/Xsession, for example.

In your ~.xprofile:

    eval `ssh-agent`

Before using ssh, be sure to run ssh-add somewhere. I usually just run it from the command-line... I don’t bother installing it in an init script somewhere.


Right, decided to go with KDE because I liked the way Knoppix 3.4 looked.

I also note that Konqueror doesn’t understand UTF-8 in the default CSS for my website. Grrr. External links are supposed to be prefixed with an arrow pointing up and right. I get three weird bytes on Konqueror... :(

Security Updates

Ok, now we’re doing the real thing. Instead of apt-get update and apt-get upgrade, I’ll have to do some more work. First, get all the patches (got that info from #slackware @ freenode):


This will take a while. I put them in usrlocal/slackware-10.0.

Signature verification: Import the key as described above, and then verify all of the files:

    for f in *.tgz; do gpg --verify $f.asc $f; done

Next, run pkgtool as root in the directory, choose Current and click Ok dozens of times to install all the packages.

I think that should be pretty painless from now on. Use the -c option for wget and rerun to update packages, run pgktool... About as easy as using apt-get, I think.

In the future, I’ll have to check the ChangeLog.


I noticed that I was unable to fetch mail from

    116 messages for alex at (836995 octets).
    fetchmail: cannot get a range of message sizes (1-100).
    fetchmail: client/server protocol error while fetching from
    fetchmail: Query status=4 (PROTOCOL)

Googling the error message brought me to a thread on a Free BSD mailing list [4] that had the correct workaround: I added fetchsizelimit 1 to my ~.fetchmailrc.


Hm. I don’t have a domain name, so something’s wrong. Just got a mail back saying

Diagnostic-Code: SMTP; 501 5.1.8 Domain of sender address does not exist

I can’t remember what I did on Debian with Exim4. And I can’t remember how I added SMTP_AUTH. And eventhough I really tried, the config files and the documentation for sendmail are... monstrous. So I’ll just leave it installed with all the defaults and add SmtpMail and SmtpAuth to my ~.gnus file. I also installed Thunderbird, just in case.


For managing stuff installed in usrlocal, I use stow. There is no stow package, however, so I had to download it from the homepage.

Trying to prepare Slackware packages for myself only is a waste of time. Just install into usrlocal and use stow. :)


BitlBee is an indispensable IRC server that acts as a gateway to ICQ and AIM. Thus, I can use irssi to chat on ICQ and AIM. Awesome! [5]

After installing it, I added the following line to etcinetd.conf:

    ircd  stream  tcp  nowait  nobody  /usr/sbin/tcpd  /usr/sbin/bitlbee


If you use BbdbMode, you need CompFace for that big brother feeling... These here are from the Cygwin port (!!), and renamed from uncompface.exe and compface.exe. I was unable to compile plain 1.4 source code, and too lazy to investigate. :(

GregScott says that Google turned up the following fix for the compface-1.4 problem: Apply the following patch to both cmain.c and uncmain.c.

    < extern int errno;
    < char *strerror();
    > #include <errno.h>
    > #include <string.h>


I need Kino to grab videos from Claudia’s camera and edit them. The kino package on didn’t work for me. Too many unmet dependencies. See CompilingKino for my build notes.


I also wanted to give Inkscape another try – as an alternative to xfig, maybe. See CompilingInkscape for my build notes.


I don’t start httpd per default. If I want, I can always start it later:

    apachectl start

I linked the current Oddmuse script into the cgi-bin directory:

    ln -s /mnt/src/oddmuse/ /var/www/cgi-bin/

And I enabled the Option FollowSymlinks in etchttpd.conf in the directory section for varwww/cgi-bin.

To restart Apache once it is running (after a change to the config file), use:

    apachectl graceful


Perl 5.8.4 comes without any modules from CPAN. You have to install everything yourself, or so it seems. I had to start with LWP::!UserAgent...

    cpan LWP::UserAgent

(I used to have a weird problem: The CPAN shell would keep trying to install a module called JUNOS! I finally figured it out after googling for it: If you type

cpan install LWP::UserAgent</code> then the CPAN shell will first try to install “install” – and JUNOS has a file with the appropriate name in the top directory... Doh! [6])

It sure feels weird to run the cpan shell as root. :(

Open Office

I was happy with AntiWord for reading the occasional Word document I got by mail and never had any use for AbiWord and KWord that came with Slackware. When I got a mail from a newspaper guy with an article of mine and revision control, I had to install something better. Got myself OpenOffice directly from their website.

If there’s more than one user on your system, be sure to use the -net parameter when installing as root. Then, every user has to run setup again to install some files into the home directory.


I’m using an OpenWlan without encryption. The Apple AirPort Express supports both WEP and WPA Personal, but I can’t get the Netgear WG-311T to work with encryption. Without encryption, it works.

Got the madwifi drivers from cvs, make, make install,

In my etcrc.d/rc.local I wrote:

    ifconfig ath0 up
    dhclient ath0


i’m following your entries with interest. glad you like it so far.

about sound, since i restore etc from my $HOME archive, i’d forgotten about editing asound.state long ago. my AS Rock Sis 651 motherboard also has an SI7012.

how do you play CDs? i tried xmms, but don’t know how to select the audio cd. maybe i messed it up in setting up for cdrw use: after initial install, i changed devcdrom from hdc to scd0. to grep for packages:

ls -oF /var/log/packages/ |grep -i $1

then . | wc -l => 193

– GregScott 2004-11-04 03:34 UTC

If I have a CD, I play them on the stereo. :) I rip CDs to use the files for the portable player, and I rip streams, which I sometimes listen to. I recently started to use EMMS to control mpg321.

As for the device stuff, I burn my CDs as follows:

cdrecord -v speed=0 dev=ATAPI:/dev/hdc driveropts=burnfree -audio files...


usermod -G disk claudia
usermod -G disk alex

AlexSchroeder 2004-11-04 03:47 UTC

in case you ever want to play CDs on the PC, i just figured it out.

  1. make sure devcdrom has correct permissions. in my case, devscd0 was only readable by root.
  2. xmms by default expects a mntcdrom directory. i didn’t have one (only mntcdrw)

now that i’m playing a CD, i get the feeling i’ve solved this problem at least once before. that’s a funny thing about having an old brain.

just for your amusement, i’ll mention that the CD i grabbed was “CHOD: cutting through dualism”. sorry i don’t know how the put the umlaut over the O in CHOD.

– GregScott 2004-11-04 06:16 UTC

yes, monstrous sendmail. ssmtp-2.48 worked fine for me, before switching from mutt to gnus with smtpmail. ssmtp is tiny: the executable lives in $HOME and is 20892 bytes, the config file in is 495 bytes of mostly comments.

google turned up this fix for compface-1.4 problem:

in BOTH cmain.c, uncmain.c:

diff alex-trouble/compface-1.4/uncmain.c compface-1.4/uncmain.c
< extern int errno;
< char *strerror();
> #include <errno.h>
> #include <string.h>
Diff finished.  Fri Nov  5 01:07:11 2004

BOTH uncmain.c and cmain.c should thus have this section after editing per diff:

extern int errno, sys_nerr;
extern char *sys_errlist[];
#include <errno.h>
#include <string.h>
char *strerrorwrap();

– GregScott 2004-11-05 07:15 UTC

Thanks for the ssmtp suggestion. I’m glad to know I’m not the only one deciding that smtpmail.el is the easier solution. If we’d switch to Thunderbird, we’d also configure it to use the ISP’s smtp host, and if I remember correctly even command-line tools like Debian’s reportbug allowed me to configure a smtp host. Thus I guess trying to get a smarthost config working locally is useless if you’re on a dynamic IP. All you need is a local agent that accepts mail on port 25 for fetchmail to work, and I think maybe cron-job output is also sent via local mail... Since my current sendmail configuration does that (but is broken when trying to do more), I’ll just leave it as it is. It’d be interesting to see what breaks if I remove sendmail from the system (without replacing it with ssmtp). ;)

AlexSchroeder 2004-11-05 14:49 UTC

i never install sendmail, and ssmtp isn’t in $PATH. the only program that knew about ssmtp was mutt, which had “set sendmail=”$HOME/ssmtp/sbin/ssmtp -v” in a mutt config file.

at work, smtpmail works for internal addresses, but email containing an external address in to: or cc: is rejected by the corporate smtp app with a message about “unauthorized relay attempt”.

so i added a function to message-send-hook that invokes message-narrow-to-headers, scans for an external email address, and switches from the default message-send-mail-function (smtpmail-send-it) to message-send-mail-with-sendmail. of course i have

(setq sendmail-program “~ssmtpsbin/ssmtp”).

– GregScott 2004-11-05 15:38 UTC

I wanted to use installpkg for all the stuff I build myself. It seems rather easy to do. But then again, why spend the time on it, since I’m not going to turn into a major package provider? So I will stick to stow. :)

Here’s what I had going:

./configure --prefix=/usr
make install prefix=/mnt/src/slackware-10.0/foo-1.2
cd /mnt/src/slackware-10.0/foo-1.2

Some thinking on how to install info files and all that. For stow itself, for example, I created the following two files:

install/ (based on an example on the Slackware doinst File HOWTO on

if [ -x /usr/bin/install-info ]
   /usr/bin/install-info --info-dir=/usr/info /usr/info/ 2>/dev/null


1. The "handy ruler" below makes it easier to edit a package description.  Line
1. up the first '|' above the ':' following the base package name, and the '|' on
1. the right side marks the last column you can put a character in. You must make
1. exactly 11 lines for the formatting to be correct.  It's also customary to
1. leave one space after the ':'.

stow: GNU Stow helps the sysadmin organise files under /usr/local/ by
stow: allowing each piece of software to be installed in its own tree under
stow: /usr/local/stow/, and then using symlinks to create the illusion that
stow: all the software is installed in the same place.

And to finish building the package:

makepkg -c n ../foo-1.2-i386-1.tgz
cd ..
installpkg foo-1.2-i386-1.tgz

AlexSchroeder 2004-11-06 20:45 UTC

re Perl section, and your comment “It sure feels weird to run the cpan shell as root.”:

the CPAN auto-installation method doesn’t seem slackware-ish.

i install all modules by hand.

today i timed how long it takes to install perl-5.8.6 and LWP. on my old PIII-500MHz it took 23m to install perl-5.8.6 (9m was for “make test”), and 14m to install the prereqs for LWP and LWP itself.

everything was obtained from cpan. you can generalize and script these examples. (the first is perl-5.8.x src):


this syntax gets you the latest version. you can browse

some of the prereqs in the LWP readme were already in the initial perl-5.8.6 installation, ex. MIME-Base64, Digest-MD5, and libnet (Net::FTP,Net::POP3,etc.), so i only had to install the following, in this order:

  1. Compress-Zlib
  2. URI
  3. HTML::Tagset [for HTML-Parser]
  4. HTML::Parser
  5. libwww-perl

in case you want to try setting up perl plus modules without messing up your current installation, here are some notes. you may prefer a different directory than $HOME. i symlink usrbin/perl to $HOME/perl-<major version> (which is symlinked to minor version), so upgrading slackware doesn’t touch my perl installation.

  1. installing perl
cd perl-5.8.6
./configure.gnu --prefix=/home/gkscott/perl-5.8.6
make test
make install
cd ~
ln -s perl-5.8.6 perl-5.8
cd /usr/bin
sudo ln -s $HOME/perl-5.8/bin/perl perl
  1. installing individual module foo:
unpack foo.tar.gz
mv foo-dir ~/perl-5.8/gks_installed/ 
cd ~/perl-5.8/gks_installed/ 
cd foo-dir [contians Makefile.PL,, README, MANIFEST]
perl Makefile.PL PREFIX="$HOME/perl-5.8"
make test
make install

– GregScott 2004-12-05 22:58 UTC

When I have to install the next Perl module, I’ll take use your notes and see whether that works better. :)

AlexSchroeder 2004-12-05 23:08 UTC

You might want to disable the monitor power saving functionality in the bios if you are using usb devices only.

– PierreGaston 2005-01-12 21:15 UTC

Please make sure you contribute only your own work, or work licensed under the GNU Free Documentation License. See Info for text formatting rules. You can edit the comment page if you need to fix typos. You can subscribe to new comments by email without leaving a comment.

To save this page you must answer this question:

Please say HELLO.