An Introduction to Slackware Linux

People often look at Slackware with a certain amount of trepidation. It appears complicated, difficult, or tedious. If you ever felt like trying Slackware but didn't because of those fears, this is an article for you. I am going to cover installation step by step, and then proceed to common post install configuration tasks, and a few system management tasks. Before beginning, you need either to have backed up your data, or to have prepared a virtual machine.

Getting Slackware

Slackware has been around for quite some time. It's the oldest actively maintained distribution, and as such has many mirrors in many nations. If you are downloading from HTTP or FTP you will want to pick a mirror in your country or close by. If you are going to download Slackware via torrent, you need look no further than the Slackware torrents page. For 32 bit systems, you can choose either 6 CDs or 1 DVD. For 64 bit systems, your choice is only the DVD. Slackware does have an online store through which you can purchase discs, and Microcenter usually carries Slackware CDs and DVDs. If you are downloading Slackware (and I am guessing most people will be), you will need to burn the iso file to disc. This isn't too tough. On a Linux system, you can use cdrecord for this:

cdrecord dev=/dev/sr0 slackware64-dvd.iso

Of course, the iso file name will likely be different from what I have posted. In OSX, you can use disktutil. In Windows, you can use ImgBurn, GizmoDrive, Nero, or the Windows 7 ISO tool.

Installation

Naturally, you will need to put the Slackware disc into your optical drive, and boot from it. To boot from a disc, restart the computer with the disc in the drive. When the manufacturer of your machine's logo is displayed you will need to press ESC, F12, or F8. The specific key varies from manufacturer to manufacturer (HP is usually ESC, Dell is usually F12, Asus amd Toshiba are usually F8), but this should bring up a prompt asking you from which device you would like to boot. Use the arrow keys on your keyboard to navigate to the CD/DVD drive, and then press enter. Your next screen should be:

And at that screen you can just hit enter to proceed.

At this one, if you are using a US English keyboard just hit enter. Otherwise, you are going to want to press "1" and select the keymapping that matches your keyboard. The next image shows us actually getting to a point that becomes useful.

Here we type "root" and then press enter.

Traditionally, one would type fdisk here. If you have a disk over 2TB in size, you will need to type gdisk. There are easier tools available: cfdisk, cgdisk. If you have multiple hard disk drives, you may need to specify the drive designation (cfdisk /dev/xxxN). If you have an IDE HD, you can try /dev/hda for your first disk, /dev/hdb for the second, and so on. If you have an SATA HD, you can try /dev/sda for the first one, and /dev/sdb for the second, and so on. In any case, cfdisk can only handle one drive at a time and the syntax must be:

cfdisk /dev/sda

Of course you can substitute the sda for whatever you need. I am only going to cover a basic setup, using a single 20GB HD with two partitions. In general, you will likely have a larger HD. Simply subtract 2000 from your disc size (specified in megabytes in cfdisk), and that should make your main partition. The remaining 2GB should be reserved for swap space (a popular setup is 100MB ext3 /boot, 15GB ext4 or jfs /, 2GB swap, * ext4 or jfs /home). If you want to dual boot and you use a PC, go check out partedmagic. It's a liveCD intended for partitioning. You will need to resize your current partitions and make room for Slackware (20GB is the minimum I would recommend). If you are using a Mac, you can use the boot camp tool. On Macs, you will need to use the gdisk tool instead of cfdisk. Do note that swap sizes, boot sizes, and other mount points are contested issue. Do whatever you feel is necessary for your use case.

So, assuming you have no currently defined partitions the above should be in front of you. If you do have partitions, go ahead and use up and down arrows to select them, and then use the right and left arrows to select the delete button. If you are dual booting, you should have either made some space available already or have a partition in mind that should get deleted. Whatever your choice, select the new button. Press enter.

I prefer to use primary partitions exclusively, just for speed and simplicity.

Again, the size is issued in megabytes. Press enter to have it accept the value.

You will almost certainly want this partition at the beginning of the drive's free space.

While most computers these days don't really require you to flag a partition as bootable, it is usually a good idea to do so.

By pressing the down key, and using the arrow keys to get to the button that says "new", we can add another partition. This is the swap partition. I generally like to have a swap partition that is about 4GB in size. Should the computer run out of memory resource it will use the swap partition free up more memory resource. I like to err on the side of caution.

Seem familiar?

Unlike the previous partition, this one needs to have it's type changed.

Cfdisk is going to assume that you wanted to change the type to swap, and it is correct in this case, as long as it says 82 is the type.

Now comes the dangerous part. We are going to write these modifications to disc. You did backup your data, right?

It is going to ask you to type "yes" to verify that you are indeed sure you wish to do this. Even though you cannot see the "s" of the yes, I assure you that it is there. Press enter.

Hooray! We are done with partitioning. Time to leave cfdisk behind.

Once you exit, you should be put back at a prompt. Type "setup", press enter, and you'll get the installer that hasn't changed because there has never been a reason to change it.

Use the arrow keys to navigate to add swap, or just press 'a'.

The installer should automatically find any discs/partitions that are potentially swap. Press enter so long as this is correct.

The installer is now going to format the swap space, turn it on, and during the process it's going to check for bad blocks (unless of course you tell it not to).

If everything goes according to plan, we can continue.

You should automatically be moved forward to a menu that allows you to select the partition that you would like to use for /, and should you have more than one partition use the arrow keys to select the appropriate parition and then press enter.

You will need to select a filesystem to use. Ext4 is the most common, and it is suitable for most situations. JFS is the one I prefer. ReiserFS is a killer filesystem. XFS and BTRFS are high performance. Ext2 is very fast, but it isn't journaled (an unexpected shutdown could result in massive amounts of data loss, and the filesystem is more easily corrupted).

Horray. If you see a screen similar to this one, you have some partitions. Press enter for 19 millionth time.

Yup, there are several ways to install Slackware. I didn't talk about them. DVDs/CDs and USB sticks are the easiest methods available. For this reason, they are also the most common. Some quick trivia: which key should you press?

99 times out 100, Slackware can automatically find the install media. Occasionally, it cannot. This is usually due to an ATA controller that the kernel version cannot support. Other times, people have failing optical drives.

At this point, you get to make some choices. Slackware divides packages into sets. A is absolutely essential. You will want N, and L as well. If you want a GUI, make sure that X and XAP are installed. GNOME is not available, but XFCE is. If you don't like KDE you have an alternative option. However, the KDE experience on Slackware is second to none (all packages are vanilla). KDE also includes KOffice, and Slackware does not ship with OOo or LibreOffice. Even if you do not intend upon doing development, you will still want the dev packages for SlackBuilds (more on this later). If in doubt just select everything. I dislike Emacs. I am multilingual and like international support. Other than that, I install everything. As usual, you can use the up and down arrow keys to navigate. Space bar selects and deselects package sets. Press enter when done.

Right now, don't worry about the majority of these options. Unless you know exactly what you are doing, go ahead and choose full. Slackware does not check dependencies automatically so if you choose to select packages individually you have to know the dependencies for every package.

This could take a while. Is that cold coffee that you're drinking? Go get a fresh cup.

Some time ago, this used to be a floppy instead of USB stick. While it can be useful, I prefer to use the install disc as my rescue disc.

Unless you have an extremely odd setup, you should be able to use the automatic option here. If you are dual booting a mac, you can still select automatic. This is also true if you plan on using a boot loader that is already installed.

This option does not matter as much as it once did. If you are using NVIDIA, ATI/AMD, or Intel graphics just use standard as the framebuffer drivers are going to give you a good resolution in console anyway. If you are using VIA graphics, you can safely choose any of the 256 color options. For other graphics chipsets, you may want to stay in the realm of 800x600 to be safe. Standard always works though.

Most folks can safely skip this. If you cannot boot, you can always ask for help here or elsewhere.

I would highly recommend to try this. While it very seldomly won't work, getting fancy characters in Mutt is very nice.

If you are dual booting and want to use the boot loader you have already installed, go ahead and choose root (especially if you are dual booting with OSX). If you are dual booting with Winders, lilo should automatically find the Winders partition and add it so you can safely choose MBR. If you are not dual booting, choose MBR.

This really only matter for console mouse support, and doesn't much affect anything else. PS2 mice have a circular connector. USB are thin rectangular connectors. PS2 should work for many laptop trackpads. Dell and HP desktops from '04 and earlier should also choose PS2. Almost all eMachine and Gateway desktops use PS2 as well. The overwhelming majority of people can choose USB at this point.

If you want to use your mouse in console, this is the program that enables it.

Unless you're some kind of luddite, you do want networking. Choose yes.

The hostname is the name of your computer. If you are mixing this machine in with a largely Winders based network, try to make sure that you choose a name that no other computer on the network has. If you do not care about networking capabilities other than internet access then it really doesn't matter.

Most people will not care much either way here. This does not affect your ability to access Winders networks, and doesn't make much difference on UNIX networks either.

If you do not have to manually set your IP address, gateway, and DNS then you should choose DHCP. If you do have to set those then you should choose Static IP. You will have no problem setting those if you've done it on another system.

If you have one, you know about it. If you don't know about it, leave this blank.

Isn't Slackware nice? It's giving you the chance to change your mind.

If you do not know what some of these are, do not touch them. Otherwise, SSH is a secure remote connection service. If you do not care to use it, go ahead and deselect it. Mysqld is a database server. Httpd is web server. Samba is the service that will allow you to connect to Winders networks, share files and printers with Winders machines and the like. If you have a slightly more mature laptop and it uses an external network card (not USB), go ahead and select PCMCIA.

If you are really into this sort of thing, go for it. I prefer to use the regular, old school, terminal font. Although, I also really want a DeLorean... to each his own.

I prefer to keep my machine set to local time, some people prefer to use Universal Coordinated Time. Make your choice. If you choose incorrectly, you can set the clock properly later.

Just choosin' my timezone. Don't mind me.

This will set the default graphic environment for all users. Each user can later change this, but it will be his/her initial default. You are probably already familiar with KDE, but it is a very complete and mature environment. XFCE is fairly complete, decently mature, but it isn't quite as shiny as KDE. Fluxbox and Blackbox have long been staples of the Linux/UNIX desktop, but they are spartan in comparison to KDE. WindowMaker is a clone of the NeXT style desktop. Jobsianites may want to check it out. FVWM2 is highly customizable and has a good following. TWM is a classic, but it is very minimalistic.

You best want to set a root password.

You'll be typing blind. Don't fret. It is accepting the input you give it.

If you choose a bad/short/guessable password, it alerts you. If you are stubborn, it will let you use it anyway. My suggestion is to choose a password that isn't bad/short/guessable.

You did it. You installed Slackware. It really wasn't all that tough was it?

Just choose exit unless you want to redo some part of the installation procedure.

Ctl + alt + del, or reboot, or shutdown -r now, or whatever. It is probably going to try and eject the optical medium as well.

Security Updates

After installing any operating system, you will want to get any updates that are available for security reasons. Slackware has the ability to semi-automatically do this. First, we will want to enable a mirror from /etc/slackpkg/mirrors

vim /etc/slackpkg/mirrors

I live in Georgia, so I chose to use the Georgia Tech mirror. So for me, this:

# ftp://ftp-linux.cc.gatech.edu/pub/slackware/slackware64-13.37/

became this:

ftp://ftp-linux.cc.gatech.edu/pub/slackware/slackware64-13.37/

The next step is to issue two commands

slackpkg update

and then

slackpkg upgrade-all

Then go ahead and reboot.

X11 and startup

If you are lucky (and I am sure that many of you will be), you ought not have any issues with X11 at all. To figure out whether or not you are lucky simply type 'startx' and see what happens. If you get a nice KDE desktop in the proper resolution, and without anything clearly wrong. You are in luck. If you do not, you have a few options. If you are using an NVIDIA or AMD/ATI graphics card you can get proprietary drivers. The Radeon drivers should work with Slackware64 or with Slackware. NVIDIA has two separate drivers, one is for 32 bit systems and the other is for 64 bit systems.

In both cases, you will want to make certain that X11 is not running. A fresh boot, without modification, ought to ensure this. If you are using NVIDIA, you also need to disable the Nouveau driver. To do this, reboot and add "nomodeset" to the boot line. Then, as root add:

append="nomodeset"

to the section in /etc/lilo.conf for Slackware. When you restart the machine, the console will not look as pretty as it did when nouveau was running (assuming that nouveau worked for you at all, with certain nvidia cards it has issues). After this, the installation procedures are not that exciting. Type:

ls -l ~

to see the files in your home directory, and what their permissions are. If the listing doesn't show any "x"s to the left of the file name for the driver, then you need to issue:

chmod +x *.run

before you can issue:

./N*.run

or

./a*.run

Follow the instructions for either driver, and upon another reboot you ought to be in business. If you are using an Intel video chipset and do not get video, you may want to try the Intel drivers, for which there are instructions. If all goes well and you can get the drivers installed without error, try starting X11 again. If you get what you expected, your next step (should you want to do it) is to tell Slackware to boot into X11 by default.

vim /etc/inittab

You can use the arrow keys to navigate lines. You are looking for a line that looks like this

id:3:initdefault:

Get the cursor to the immediate right of the 3. Press "i" and then hit backspace. Type the number 4, then hit ESC. Next, press ":" and type "wq". Then, press enter. When you restart, you ought to be presented with KDM. Login as root (never do this after the next step).

Users and Groups

At this point, we only ought to have a root user. For most people, the easiest way to add a user is using Kuser. However you can just do:

useradd username -u1000 -g100 -d /home/username -s /bin/zsh -m

Then you just add your username to the end of each line representing a group of which you wish your user to be a member within /etc/group... If that sounds intimidating use Kuser. This is the KDE user and group management tool. You can get to this tool through the KMenu: System -> KUser.

To add a user, just click the add button in the top left.

Make sure you set a login shell. Bash and Zsh are the most common. Also, make sure you deselect the disable checkbox, which is automatically checked.

Switch over to the groups tab along the top. You have to add the user to a few groups in order to make this user useful. Typical groups are audio, disk, floppy, video, plugdev, cdrom, netdev, wheel, and scanner. Before you logout and log back in as this new user, you should make your life a little easier and an give yourself some sudo power. At a terminal window:

visudo

look for a line like

#%wheel ALL=(ALL) ALL

and remove the hash so that it becomes

%wheel ALL=(ALL) ALL

this will allow all members of the group wheel to use sudo.

Wireless Networking

If you use or want to use wireless networking. You will probably want to have a decent wireless network management tool. The answer is wicd. The package for wicd is conveniently located on the Slackware DVD. Pop in the disc, open dolphin, select the DVD on the left hand side. Go to the extra folder, then the wicd folder, and press shift and F4. At the terminal prompt, type

sudo installpkg wicd*.txz

It would now be a good idea to check what network hardware you are trying to use. You can try the command

ifconfig -a

to see if the hardware is automatically detected. If it isn't you can use "lspci". The most common problem is firmware related. If you are using a Broadcom 43xx chipset try b43 drivers. If you are using a newer Macintosh, you will most likely need the Broadcom STA drivers and you are going to need to edit src/wl/sys/wl_linux.c at line 485 from

init_MUTEX(&wl->sem); to sema_init(&wl->sem,1);

and then issue

make && sudo make install && sudo modprobe wl

Slackware does have network-manager as well. If you wish to enable it instead of using wicd, you can use: 'sudo pkgtool' Then navigate to Setup -> netconfig and choose network-manager.

LAMP setup

If you didn't enable httpd and mysqld during setup, that's ok. Go ahead and issue

sudo pkgtool

Here you need to select setup.

Then you need to select services.

Then you need to make sure that you select httpd and mysqld.

After that is done, we can naturally exit. Your next steps are going to be dealt with by editing some configuration files. With the editor of your choosing (I prefer VIM), open

sudo vim /etc/httpd/httpd.conf

and find the line

# Include /etc/httpd/mod_php.conf

and then remove the # in front of it. Then find the line

DirectoryIndex index.html

and change it to

DirectoryIndex index.html index.php

task accomplished? Good. Now, we need to ensure that we have a MySQL config, which is /etc/my.cnf, and the easiest way to do this is this

sudo cp /etc/my-small.cnf /etc/my.cnf

Create the initial MySQL database

mysql_install_db user=mysql

Make that database writable by the mysql user

chown -R mysql.mysql /var/lib/mysql

Once this is done, we can start the servers

sudo /etc/rc.d/rc.httpd start
sudo /etc/rc.d/rc.mysqld start

Now we just run the MySQL setup, and we will be finished

mysql_secure_installation
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

At this point, it's useful to know that the default location for your web files will be /var/www/htdocs/ and if you create a folder within that path, you will be able to access these files through your web browser with http://127.0.0.1/foobar/

Multilib 64 bit

To get a multilib Slackware64 system (one that is capable of running 32 bit applications), we need first to get the 32 bit compatibility packages.

lftp -c "open http://slackware.com/~alien/multilib/ ;
mirror -c -e '13.37'"

Now, move to that directory

cd 13.37/

And install the first set of packages

sudo upgradepkg --reinstall --install-new *.t?z

Those were the prerequisits for the following

find slackware64-compat32/ -type f -regextype posix-extended \
-regex ".*\.(tgz|txz)" -exec sudo installpkg '{}' \;

That should do it.

WINE

WINE is Windows API compatibility layer for Linux that will allow you to run many Windows programs on Linux. This is technically only supported on 32 bit systems, but it can work on Slackware64 Multilib systems. You first need to grab the sources and SlackBuild.

wget http://www.unrealize.co.uk/source/dibeng-max-2010-11-12.zip
wget http://ibiblio.org/pub/linux/system/emulators/wine/wine-1.2.3.tar.bz2
wget http://slackbuilds.org/slackbuilds/13.37/system/wine.tar.gz

You will then need to unpack the SlackBuild archive

tar -xzf wine.tar.gz

Move the source archives into the new folder

mv dibeng-max-2010-11-12.zip wine/
mv wine-1.2.3.tar.bz2 wine/

Now you need to run the SlackBuild script, then install the package.

sudo ./wine.SlackBuild
sudo installpkg /tmp/wine*.tgz

Backup

So, you've gotten everything up and running and you now want to back up your system. No problem. Let's go ahead and get things moving. I am going to assume that you want to backup to an external hard disc drive. The next thing that I am going to assume is that this drive is formatted as NTFS. At this point, let's create a plain old text file that will contain a list of things to exclude from the up.

sudo cat > /etc/systembackup.excludes << "EOF"
  + /dev/console
  + /dev/initctl
  + /dev/null
  + /dev/zero
  - /dev/*
  - /proc/*
  - /sys/*
  - /tmp/*
  - lost+found/
  - /media/*
  - /mnt/*
EOF

Now, let's create the backup script.

sudo cat > /usr/bin/systembackup << "EOF"
#!/bin/sh sudo rsync -av --delete-excluded \
--exclude-from=/etc/systembackup.excludes / $1;
EOF

Make it executable.

sudo chmod +x /usr/bin/systembackup

So, now all you need to do is issue a single command, and the entire system will be backed up. If you have no other removable external device attached to your computer this command should work just fine

systembackup /media/disk

A Bit About Slackbuilds

In the section about WINE, I used a SlackBuild. SlackBuilds.org is pretty much the Slackware software repository for packages not included in the distribution release. Slackware doesn't use automatic dependency resolution, nor does it use automatic package fetching. Slackpkg is used only for the automatic installation of packages that have been updated for security reasons. Every SlackBuild works like the one shown, and if the SlackBuild has dependencies they are listed on the SlackBuild page. There is a package out there, slpkg, which uses the official slackpkg repos as well as sbopkg, and can resolve dependencies.


© MMIX - MMXVII absurd.wtf
Licentiam Absurdum