The SlackMe page, For Slackware Specific Information.
 
General Slackware information can be found in the DistroMe page.

All information here (except Slackware specific, meaning package mechanism and some program locations) can be useful to any Distro.
So read even if you don't use (or like) Slackware.


The latest stable official Slackware version is now 13.37, featuring
GNU/Linux kernel 2.6.37.6, Kde 4.5.5, X.org 1.9.5.

From 13.0, and up, some new features are: Ext4 filesystem addition, Kde 4, txz packages
for better compression, and XWindow working without the need of a configuration file.
As from Slackware 12, the default kernel is 2.6+ (12.0 version was 2.6.21.5).
In Slackware 10.2, the default kernel used was 2.4.31 in much many variations. Kernel 2.6.10 was also included.

Paragraphs in this page are:

Introduction
Installation
Administering your system
Further Tweaking
Specific issues
Slackware Packaging Mechanism


Introduction:

This is a copy - paste from my DistroMe page referring to Slackware:

Slackware is one of the oldest modern Distros and is symbolicly the other
counterpart of Debian, since it was initially developed by one (1!) person, 15
years ago!

In fact, Slackware is notorious over the years to be a 1 person distro,
a characteristic that has not changed till now!

In my opinion (personal taste), Slackware has the most unix-like characteristics.
It is simple, compact, very understandable, up-to-date and provided that the user
is accustomed to a *nix philosophy, the most easy to customize by hand.
But be careful, using that Distro you will have to meet face to face with
tasks trivial to other Distros, like enabling your mouse wheel!

Slackware simplicity refers more to the "machanics" of the OS, its system design, packaging, configuration and tools, rather than the ease of use of the system itself.

Slackware's basic configuration files are more BSD oriented, as opposed to the SystemV
"philosophy". Therefore, it keeps the rc.* files in a single directory instead of
using multiple directories, as the majority distros do.

In these 15 years of development, Slackware has gained a very stable - yet expanding -
group of hardcore users.

Using this distro, you don't just operate a GNU/Linux OS. You also learn too much!



Installation:

Bootdisks include:
* bare.i     which boots from ide disks
* scsi.s     for varius scsi controllers
  scsi2.s
  adaptec.s

* speakup.i  for the visually impaired, includes voice synth.
* raid.s     to boot from scsi or ata raid controllers
* lowmem.i   for machines with 8Mb of memory.

and much more!

If booting from a cd/dvd Slackware prepared installation (i.e. Linux Format June 2003) is difficult to achieve, the boot method can easily be constructed using:

* One of the bootdisks described above
* Rootdisks that load after kernel boot to create a base system located in RAM with all that is needed to proceed.

After booting, you can call
fdisk or cfdisk     to create the partition sizes
mke2fs or mkfs.ext3 or mkfs.ext4 to create the filesystems you need.
less, vi & mount exist to provide pre-setup operations.

setup can then be called to start the setup process. The process itself runs in scripted dialogs that resemble binary console programs.

You will be asked for keyboard, mouse, mount points (linux or not), install source (where the packages are located).
The install source can be in cd/dvd, premounted directory, not-mounted hd partition, and nfs share (maybe ftp also, I don't remember since I pass this dialog rather quickly).

Packages are around 900 Mb compressed and may take 3.0 Gb after installation.
My recommendation is to have a "/" partition around 6 Gb, "/home" in a separate partition as much as you want, swap from 1 to 2.5 times your RAM and /mnt/linux around 6 Gb for an alternate GNU/Linux OS.

You may choose to keep "/usr/local" separated also. 1 or 2 Gb is my recommendation.

Next comes the package selection. As Slackware selection is not as sophisticated as others, but its simplicity guarantees installation speed and minimal input from the user. If you have the space without worrying, choose "install everything" without prompting.

The installation time can be ridiculously low, especially if the packages exist in a fast hd partition.

Then, network, lilo (Linux Loader) and some other configuration issues take place.

I suggest static network ip adress. The rest (Host, Domain, Gateway, Dns) can be easily configured.

For lilo I suggest expert lilo configuration because everything is configurable this way (and you learn a lot). Don't forget to add the appropriate kernel command if you have a cd/dvd recorder.

After setup finishes, if you want to return before rebooting you can recall it.

After rebooting - and if you have done all well - you will be in your new Slackware distro in no time.



Administering your system:

Slackware is a very simple to use Distro, and the philosophy of manual configuration close to the Unix logic is apparent everywhere.

But the lack of special tools may be a little (or very) frustrating to new users.

Some tool frontends
pkgtool Installation and configuration options.
adduser a simple and very clever script to add users.
liloconfig simple script that helps configure lilo.
netconfig helps configure the network.
xwmconfig is a very easy way for selecting a default window manager or desktop.

In Slackware >=9.1 there is also a friendly and simplest "Services" tool, easily called by pkgtool.

Some basic tools
installpkg
upgradepkg
removepkg

Manual Administration: See my other pages for configuration details.

a) Configuration files:

/etc/rc.d/*
/etc/fstab
/etc/hosts
/etc/resolv.conf
/etc/inetd.conf
/etc/samba/smb.conf
/etc/exports
/etc/X11/XF86Config
/etc/profile
/etc/bashrc
/etc/printcap
/etc/defaults/cdrecord
/etc/DIR_COLORS
/etc/lilo.conf
/etc/modules.conf
/etc/inittab
Basic configuration files
for the mount points
for manual host adresses
Dns&Name Servers for Internet LAN etc.
services for the daemon to launch
SMB File & Printer sharing
Network Filesystem configuration
X Configuration
login shell profile
second shell profile
Printer configuration for several applications
cdrecord default configuration
color configuration for the "ls" command
Linux Loader configuration
informs the kernel module (new or old) parameters
tells how the system boots,the runlevels etc.

inetd is the daemon that calls servers that are not started as daemons, when a specific port request takes place, even local. Servers like telner, ftp etc. are usually called that way.

SMB is the Session Message Block (Microsoft) protocol for file&printer sharing. I usually start smbd and nmbd as daemons, so there is no need to put this in inetd.conf this way.

the cdrecord configuration file would be useful to create, if doesn't exist.

b) Basic configuration files: Again, see my other pages for further explanation.

In Slackware, the files that are needed to bring the system up (apart /etc/inittab) are located in the /etc/rc.d directory.

This directory includes only files, not dirs, making Slackware more oriented to BSD rather than SysemV.
The other logic (SystemV) is to have an init.d directory that has subdirs and all the runlevels to be into separate dirs, usually as soft links to the original ones.

This characteristic to Slackware makes the whole system more understandable and tweakable by hand.

The scripts are as smart as they need to be but not fancy whatsoever.

If rc.M detects that /etc/rc.samba is not executable or doesn't exist, it will not call it.

And if rc.samba doesn't find smbd nmbd and /etc/samba/smb.conf, it will not bother at all!

This way, useless error messages are not going to happen!

In my system:

foo@bar:~$ ls /etc/rc.d
rc.0
rc.gpm
rc.keymap
rc.nfsd
rc.sshd
rc.4
rc.hotplug
rc.local
rc.pcmcia
rc.syslog
rc.6
rc.httpd
rc.M
rc.S
rc.sysvinit
rc.acpid
rc.inet1
rc.modules
rc.samba
rc.yp
rc.atalk
rc.inet2
rc.netdevice
rc.sendmail

rc.font.sample
rc.K
rc.news
rc.serial


rc.0 (turn off) is a soft link to rc.6 (reboot).
rc.news is a soft link to /usr/lib/news/bin/rc.news.
rc.samba does not have execute permissions.
rc.inet1 brings the network interfaces up while
rc.inet2 brings daemons up.

Slackware is not entirely plug'n play, so even if most things are found by the kernel, in my case Advanced Power management is not.
So, I've added it to rc.modules at the end: /sbin/modprobe apm.

rc.local is the most convenient script for adding custom commands to be executed everytime the system boots.
Here, virtual console font selection, or sound card mixer initialization can be issued.

rc.gpm
is the general purpose mouse move& select& paste mechanism for the virtual console.

Explanations would take ages.
Study the /etc/inittab to find which script is called first, then study this script and continue.
To know the Basic Configuration System of your Distro is a must, if you want to be a Power User.



Further Tweaking:

My main problem in many Distros (except Mandrake 9.0+ as tested by me) is that Sane (Scanner Access Now Easy) doesn't find my HP Scanjet C3300 Scanner.

This is not the fault of Sane, as scanners are usually a complicated mix of chipsets, and I regret to say that companies do not give their best effort (sometimes not even good) to provide modules for the Free Software and Open Source Communities.

Seeing Mandrake do this correctly, I decided to do it by hand.

I uninstalled the sane package from Slackware (you know rebooting in Unices is not necessary for these trivial tasks:))
Then, I obtained the latest sources for Sane-Backends, Sane-Frontends, XSane and a package from some good people that programmed modules in C.

I compiled the additional modules, patched the Sane-Backends, compiled them, installed them and then compiled and installed Sane-Frontends and XSane.

Things went smoothly.



Specific issues

Warning: Read TrickMe page first paragraph.
Could be useful for the next issues.

Alsa:

Alsa is by default the Sound Module package in Slackware >=9.1.

Beware: In Slackware, Alsa is installed as a separate set of packages and NOT inside the kernel + Module packages.

Therefore, if you upgrade to another Slackware kernel via the package mechanism, you must upgrade the Alsa packages too.


There is a possible bug in Slackware 10.1: Sound may be not functional and you may see the Kde mixer looking inactive.

Just run as root: alsaconf and let it do all the tricks.
If still in Kde, you will see the kmixer to change immediately!

Cups:

Cups is included in Slackware >= 9.1 as well as Lpd-Lprng-Ifhp. You can easily choose between them.

Others:

Not being a Slackware's fault (or any distro's for that matter), difficulty may rise using Software modems (Winmodems) internal or not or even Hardware (complete) internal modems.
Modules may have to be compiled and installed and maybe the rc.serial basic configuration file to be edited.

----------

Furthermore, for the OpenGL 3d acceleration to be achieved correctly considering your Graphics Card, you may need to install modules from your Graphics Card vendors, (or the chipset brands that are inside).

Mine, an NVidia chipset based card works perfectly now after installing the generic Linux module from nvidia.
The installation scripts install the module, perform module dependency check, load it and optionally edit /etc/rc.modules.
They also
backup and edit /etc/X11/xorg.conf (or /etc/X11/XF86Config for XFree86) automatically nowdays.

And you don't have to reboot!
Note: Changing kernel version will require module reinstallation.

----------

There might be lack of multimedia considering DVD playback.
The projects I compile and install are Mplayer Xine
and  VLC Player.
The first two work as backends and need frontends to work. Both have simple frontends, but others Kaffeine and KPlayer are also good.
VLC Player is portable, working in Windows Linux etc. It can also broadcast to the network.
Find them, compile them as well as other really good frontends based on these mechanisms and happy DVD viewing!

These projects can understand a wide variety of codecs for video files.
Common locations for these codecs would be /usr/local/lib/codecs and/or /usr/local/lib/win32. You might use one dir for real and symlink the other.

Slackware >= 9.1 includes Xine. Therefore the codecs location should be in /usr/lib/codecs or /usr/lib/win32.


The Services option in pkgtool

Slackware nowdays includes a handy "services" scripted tool for easily tweaking the basic configuration init files in /etc/rc.d.
This can be found in pkgtools > Setup    Choose Slackware installation scripts to run again. It is called simply "Services".

However, there is a case where we may need to start the NFS server, where there are two rc scripts to be made executable but only one is mentioned in the "Services" tool. The mentioned one is rc.rpc, the other needed one is called rc.nfsd.

The nfsd is the NFS Daemon. When you choose to start the Portmap service, remember then to login as root and do:
chmod a+x /etc/rc.d/rc.nfsd
/etc/rc.d/rc.rpc
/etc/rc.d/rc.rpc start
/etc/rc.d/rc.nfsd start

Note: rc.rpc was named rc.portmap in earlier Slackware distro versions.
An expanded explanation of this paragraph is also is now in the TrickMe page.




Slackware Packaging Mechanism

The Slackware packaging system is well known for its simplicity and speed especially when full install is selected.

Many users may have difficulties considering installation overview as well as upgrading and/or installing software.

Overview

All packaging information is located at /var/log/packages
issue: ls -l /var/log/packages for knowing all the packages installed.
issue: less /var/log/packages/bash* for all info about the current bash package.

Uninstallation

Issue: removepkg -warn /var/log/packages/bash* as root for fake uninstallation.

Caution: if -warn is omitted, then actual uninstallation will take place!

Installing from a directory

Consider as "directory" every dir inside a cdrom, local disk and network share.

Installing a new package is simple.
We are talking about new installations.
Make sure that no previous version of the package is installed.

goto the dir that the Slackware packages are located.
In my case the path is: /home/shared/setup/Packages created and accessed by a regular user.
Then issue:
su
installpkg -warn packagename.tgz to see what would happen and if sure do:
installpkg packagename.tgz to actually install it.

Optionally do: installpkg -menu -ask packagename.tgz to be given a friendlier menu.

Upgrading from a directory

It is better to upgrade a package if exists instead of installing the new as if it was new.
The upgrade is first creating the files, overwrites the equally named ones and then removes the ones that do not exist in the package description, so no unneeded old files remain.

Issue: su to be root, do not forget to exit when finished.
Issue: upgradepkg --dry-run newpackagename.tgz to fake the upgrade.
Issue: upgradepkg newpackagename.tgz to do the actual upgrade.

Q: I have a dir where there are new, same and upgraded packages. What should I do?
A: as root: upgradepkg --install-new *.tgz

In this way, upgradepkg will:
a) omit packages of the same version
b) upgrade to the version found
c) install the new ones.

If the --install-new option is omitted, then only already installed packages (found in /var/log/packages) will be processed.

If you issue: upgradepkg --install-new --reinstall *.tgz
then packages found of the same version will be reinstalled also.

Installing-upgrading from a remote location

... meaning from an http or ftp repository url.

Here, either we download everything we need and perform as local, or we use special frontends that use the standard packaging mechanism.

Projects worth checking: slackpkg slapt-get swaret xpkgtool sbopkg


slackpkg

Official Slackware online update tool. Checks from one Slackware mirror and can perform major version updates (12.2 -> 13.0).

Main options are update, install-new, upgrade-all & clean-system.
Other options are: check-updates (reports online repository changes) and new-config (checks for updated configuration files).
It can additionally create templates to automate installation on other machines.
It can also search for patterns and provide package info.

By default, slackpkg does not wait to download everything and then perform the upgrades.
It rather downloads, installs-upgrades and purges the temporary download one-by-one.
The clean-system option reports packages not officially included, so helps us keep track of all the packages we may have manually installed.
We can therefore return our installation to its official version state whenever we need to, considering only packaged installations, not compiled ones.
The check-updates option is only functional in the newest slackpkg but older Slackware distro versions can work with the new slackpkg.
Only one mirror should be selected in the /etc/slackpkg/mirrors configuration file. We just need to uncomment the suitable for our location.


slapt-get

Debian-like internet based frontend.

Features: Automatic installation of requirements, use of many mirrors and preservation of the downloaded packages (until the --clean option).

The file saving is following the tree logic of the Slackware mirrors or
installation media, so that everything downloaded may be for later use or for
upgrading all Slackware boxes in the LAN.

Slapt-get is ideal for third party compiled programs and all their requirements, and it also understands the official Slackware repositories.


swaret

Swaret is another tool for repository synchronization. Very similar to slapt-get, it can handle many repositories and supports package dependencies.

A very interesting option is to "rollback". Before upgrading a package, swaret can create and backup the older package version.


xpkgtool

GUI frontend, the one that is indeed missing from Slackware, if we exclude the Kde and Gnome installers of course.

It's like the official pkgtool terminal frontend but running in X.
It has also the very useful SlackGrade: Slackware Upgrade Wizard.

Slackgrade can be downloaded as a stand-alone app.
What it does is to connect to a list of mirrors, download the selected packages in the /tmp/slackgrade dir in a treeless structure and install or upgrade.
It first downloads everything and performs the upgrades afterwards. Therefore, always keep in mind the disk space required to do so.
After the installation, slackgrade removes the downloaded files so that nothing stays behind.

I would suggest SlackGrade and the whole xpkgtool project for small package installation-upgrading, but I strongly suggest manual downloading of "big" packages like the whole KDE suite, or at least the use of a frontend like slapt-get that replicates the installation tree locally.


sbopkg

Sbopkg is a frontend that connects to the Slackbuilds.org source repository.

While the previous frontends deal with precompiled packages, Slackbuilds focuses on scripts that compile the projects and save them as slackware packages.
Note that the scripting mechanism that Slackbuild uses is the official Slackware distro's one.
Using this method, any project can be compiled once and then archived, installed or removed using the main slackware packaging mechanism.
Additionally, the configuration of the source is more centralised and easily editable.

However, this also requires hand made work to download the source and the additional slackbuild script package.
This is where sbopkg comes. It can synchronize the repository information, download and make - and optionally install - the packages,
track for Slackbuild installed packages, report potential updates, queue and review the work, track report and purge the downloaded/obsolete sources etc.


Upgrading the whole Slackware Distro from a directory


Slackware is very easy to upgrade just if it was installed from scratch.
In this paragraph it is assumed that the new package tree is in a disk, a local or network one, and not in the Internet (ftp or http).
Keep in mind 4 actions:

1) Go to telinit 1 in order to close all daemons and switch to single user mode.
Alternatively, as root stop all /etc/rc.d/rc* scripts (e.g /etc/rc.d/rc.samba stop)
but keep the ssh daemon up if upgrading a remote host.

2) Read the UPGRADE.TXT carefully to see which packages from the past version should be removed completely.

3) Upgrade the package tools and their prequisites, as stated in the UPGRADE.TXT.

4) Inside the top dir that contains the package directories (a kde l xap etc.) issue:
upgradepkg --install-new */*.tgz. Bash will expand the names for upgradepkg.

5) Be very sure about the newly installed kernel, check /etc/lilo.conf and issue lilo so that next boot happens without problems.

Making a Slackware package from a project source

For this issue, two paragraphs in more relevent pages are created:
Introduction in CompileMe,
script in ScriptMe.


That's all for now, I hope this page doesn't help Slackware users only.