Slackware - Network configuration
: - : 2004-09-13 21:56:43 - : 2004-09-13 21:56:43

The configuration and setup scripts for networking are a place where Slackware distinguishes itself from other distros.
The proper kernel modules to support ths system NICs are loaded by /etc/rc.d/rc.modules and, if setup has successfully recognized local hardware, /etc/rc.d/rc.netdevice.

The IP configuration parameters are placed in /etc/rc.d/rc.inet1.conf, they can be edited manually or configured by the netconfig tool.
As usual, /etc/resolv.conf contains the IP of the DNS servers and /etc/hosts the static hostname-IP settings.
The /etc/rc.d/rc.inet1 takes care to activate and configure the network interfaces and default gateway according to the user's configuration, the script /etc/rc.d/rc.inet2, executed later, mounts eventual NFS and SMB shares, starts the portmapper, starts firewalling (/etc/rc.d/rc.firewall start), activates IP forwarding (/etc/rc.d/rc.ip_forward start), starts the Inetd superdaemon (/etc/rc.d/rc.inetd start, configured by /etc/inetd.conf with services TCP wrapped according to the limits placed in /etc/hosts.allow and /etc/hosts.deny), the OpenSSH daemon (/etc/rc.d/rc.sshd start), the Bind name server (/etc/rc.d/rc.bind start), NIS (/etc/rc.d/rc.yp start) and NFS server (/etc/rc.d/rc.nfs start).
All these services are started if the relative scripts are executables, to disable one of them, chmod the script to be not executable (rough but effective).

Wireless networking is managed via the /etc/rc.d/rc.wireless, /etc/rc.d/rc.wireless.conf and /etc/rc.d/rc.wlan scripts.
The tool pppsetup cab be used to configure dial up networking, it operated on the files in .

Slackware - Boot messages
: - : 2004-11-14 10:46:24 - : 2004-11-14 10:46:24

On Slackware kernel's boot messages are stored in /var/log/dmesg.

[email protected]:/# cat /var/log/dmesg
Linux version 2.4.26 ([email protected]) (gcc version 3.3.4) #8 Mon Jun 14 19:09:31 PDT 2004
# Let's dive in a typical kernel booting procedure, this doesn't change too much from distro to distro (different versions of kernel and its modules generally have the same output messages) but heavily depends on the underlining hardware and its relevant drivers
# The parameters passed to this kernel:
Kernel command line: auto BOOT_IMAGE=hda10 ro root=30a
# CPU and memory initialization (here running on a Pentium 4 HT, contrary to other distros, Slackware hasn't automatically used a SMP kernel):
Initializing CPU#0
Detected 2793.205 MHz processor.
Console: colour dummy device 80x25
Calibrating delay loop... 5570.56 BogoMIPS
Memory: 514620k/523712k available (1975k kernel code, 8704k reserved, 661k data, 128k init, 0k highmem)
[...] CPU: Trace cache: 12K uops, L1 D cache: 8K
CPU: L2 cache: 512K
CPU:     After generic, caps: bfebfbff 00000000 00000000 00000000
CPU:             Common caps: bfebfbff 00000000 00000000 00000000
CPU: Intel(R) Pentium(R) 4 CPU 2.80GHz stepping 09 [...]
# IDE devices recognition:
    ide0: BM-DMA at 0x2040-0x2047, BIOS settings: hda:DMA, hdb:pio
    ide1: BM-DMA at 0x2048-0x204f, BIOS settings: hdc:DMA, hdd:pio
hda: TOSHIBA MK6021GAS, ATA DISK drive
blk: queue c03e27c0, I/O limit 4095Mb (mask 0xffffffff)
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: attached ide-disk driver.
hda: host protected area => 1
hda: 117210240 sectors (60012 MB), CHS=7296/255/63, UDMA(100)
hdc: attached ide-cdrom driver.
hdc: ATAPI 24X DVD-ROM CD-R/RW drive, 2048kB Cache, DMA

Slackware - Package management
: - : 2004-12-19 22:41:18 - : 2004-12-19 22:41:18

Slackware package management, even if based on a common logic (software packages can be individually installed, listed, upgraded and removed) uses a method that reveals somehow the "older" nature of this distribution.

Slackware packages are divided in different sets, that group software according to various common points. In a distribution CDROM or download site, all the files are contained in directories with the relative set name:
A - The base system. Contains enough software to get up and running and have a text editor and basic communications programs.
AP - Various applications that do not require the X Window System.
D - Program development tools. Compilers, debuggers, interpreters, and man pages. It's all here.
DES - Includes the GNU libc crypt() function.
E - GNU Emacs. Yes, Emacs is so big it requires its own series.
F - FAQs, HOWTOs, and other miscellaneous documentation.
GTK - The GNOME desktop environment, GTK widget library, and the GIMP.
K - The source code for the Linux kernel.
KDE - The K Desktop Environment. An X environment which shares a lot of look-and-feel features with the MacOS and Windows. The Qt widget library is also in this series, as KDE requires it to function.
N - Networking programs. Daemons, mail programs, telnet, news readers, and so on.
T - teTeX document formatting system.
TCL - The Tool Command Language, Tk, TclX, and TkDesk.
U - Contains packages for programs designed specifically for and that will only run on UltraSPARC systems.
X - The base X Window System.
XAP - X applications that are not part of a major desktop environment. For example Ghostscript and Netscape.
XD - X11 program development. Libraries, server link kit, and PEX support.
XV - XView libraries, the OpenLook Virtual and Non-Virtual window managers, and various other XView applications.
Y - Games (the BSD games collection, Sasteroids, Koules, and Lizards).

Packages are simple tar.gz files (generally with suffix .tgz) that are meant to be uncompacted in the root directory of the filesystem. Each pack's file and directory structure, in fact, reflexes exactly the positions on the system of the files to be installed. In a .tgz, beside the system directories, there is a special install/ subdirectory with the description of the package and the scripts to be executed at its installation.

An out of the box Slackware installation provides some tools to manage packages:

PKGTOOL is a menu driven program that provides a somehow simple interface to package installation, view and removal. To install one or more packages you just need to specify the location of the directory containing the .tgz files.

INSTALLPKG REMOVEPKG UPGRADEPKG are the command line tools used to install, remove or upgrage a package. A database of installed software is kept in the /var/log/packages/ directory, here there is a file for each package with its description and the list of what has been installed. A list of the eventual post-installation scripts is in  /var/log/packages/scripts/. If you want to try the installation on a test directory, change the value of the ROOT environment variable before launching installpkg (this is what is automatically done during Slackware's installation).
The upgrade procedure first installs the new package, writing its file on the system, then removes any file from the older package that is not present in the new one. It's always better to make a copy of edited configuration files.

MAKEPKG RPM2TARGZ the first one can be used to create a tgz package, the second one attempts to create a tgz from a rpm file.

Besides these standard tools it is possibile to download more effective utilities to manage and update the software:

SWARET is one of the most knows tools to manage manual or unattended system's updates. It reads configuration and repository URLS from /etc/swaret.conf, it stores the downloaded tgzs in /var/swaret/ and keeks a log of its activities in /var/log/swaret

SLAPT-GET is the Slack's way to implement Debian's apt system for packages. Keeping the use of the native tools (installpkg, upgradepkg, removepkg), it handles recursive dependencies, partial downloads, lists of installable software and multiple sources with different protocols. It keeps configuration files in /etc/slapt-get/ and stores downloaded data in /var/slapt-get/.

Slackware - Packages logs
: - : 2004-11-14 10:36:17 - : 2004-11-14 10:36:17

The list of the packages installed on Slackware Linux is in the /var/log/packages directory, where there's a file (with description and installed files list) for each tgz.
If swaret is installed, you can view the log of its activities in /var/log/swaret

[email protected]:/home/al# ls -latr /var/log/packages/
total 7728
-rw-r--r--   1 root root   4561 2004-09-11 22:51 bittorrent-3.4.2-noarch-1
-rw-r--r--   1 root root   1165 2004-09-11 22:51 slackpkg-1.2.2-noarch-4
-rw-r--r--   1 root root   3034 2004-09-11 23:23 linux-wlan-ng-0.2.1pre21_2.6.7-i486-1
# Package names follow a common logic with the software name - its version - the architecture for which is built
-rw-r--r--   1 root root  58881 2004-09-12 00:15 kernel-modules-2.4.26-i486-3
-rw-r--r--   1 root root   2524 2004-09-12 00:15 lilo-22.5.9-i486-2
# From the size of these description files you can have a glimpse of its dimensions, since here you find a (always useful) list of the files installed with the package. Make use of this: commands like grep * /usr/sbin/ifconfig can show you what package has provided the specified command
-rw-r--r--   1 root root  13027 2004-09-12 00:15 pkgtools-10.0.0-i486-1
# The package pgktools installs the basic tools for package management: explore this in order to discover everything about Slack's packages
-rw-r--r--   1 root root   7441 2004-09-12 00:17 gcc-3.3.4-i486-1
-rw-r--r--   1 root root 247936 2004-09-12 00:19 glibc-2.3.2-i486-6
# GCC 3.3.4, GLIBC 2.3.2 on standard Slackware 10. Note that most packages are built for 486 architecture (from a standard Intel ISO CDROM install)
-rw-r--r--   1 root root  74614 2004-09-12 00:30 quanta-3.2.3-i486-1
# Here follow packages installed later, after the initial installation on hard disk
-rw-r--r--   1 root root   5561 2004-09-12 00:51 xcdroast-0.98alpha15-i486-1
-rw-r--r--   1 root root   2416 2004-09-12 01:06 swaret-1.6.2-noarch-1
-rw-r--r--   1 root root   2215 2004-09-12 17:10 slapt-get-0.9.9a-i386-1
# For package management and update, Swaret is a must, but there's always slapt-get for APT devotes

[email protected]:/home/al# cat /var/log/swaret
Sun Sep 12 01:08:39 CEST 2004: [ GLOBAL ] - swaret --update
# Swaret's log is interesting. The options --update retrieves the list of current packcages...
Sun Sep 12 01:08:39 CEST 2004: [ update_lists() ] - [ ]
Sun Sep 12 01:08:42 CEST 2004: [ update_lists() ] - ### Fetching CHECKSUMS List File... DONE!
Sun Sep 12 01:08:46 CEST 2004: [ update_lists() ] - ### Fetching FILELIST List File... DONE!
Sun Sep 12 01:08:48 CEST 2004: [ update_lists() ] - ### Fetching PACKAGES List File for Packages... DONE!
Sun Sep 12 01:08:49 CEST 2004: [ update_lists() ] - ### Fetching PACKAGES List File for Extra Packages... DONE!
Sun Sep 12 01:08:50 CEST 2004: [ --changelog ] - ### Fetching ChangeLog... DONE!
Sun Sep 12 01:08:50 CEST 2004: [ update_lists() ] - => Generating List Files... DONE!
Sun Sep 12 01:08:56 CEST 2004: [ GLOBAL ] - swaret --upgrade
Sun Sep 12 01:30:15 CEST 2004: [ function_upgrade() ] - Upgrade alsa-driver-1.0.5a-i486-2 to alsa-driver-1.0.6a_2.4.26-i486-1? (y/n/A/Q): [y]
Sun Sep 12 01:30:15 CEST 2004: [ function_upgrade() ] - Upgrade alsa-lib-1.0.5-i486-1 to alsa-lib-1.0.6-i486-1? (y/n/A/Q): [y]
# The option --upgrade make an update of all the installed packages (you can exclude some of them manually) keeping them up to  date with the Slackware-current list
Sun Sep 12 01:30:16 CEST 2004: [ function_upgrade() ] - Upgrade alsa-oss-1.0.5-i486-1 to alsa-oss-1.0.6-i486-1? (y/n/A/Q): [y]
Sun Sep 12 01:30:26 CEST 2004: [ gfile() ] - ### Fetching alsa-driver-1.0.6a_2.4.26-i486-1 (1485 kB)... DONE!
Sun Sep 12 01:30:26 CEST 2004: [ checksum() ] - => MD5 for Package alsa-driver-1.0.6a_2.4.26-i486-1 OK!
Sun Sep 12 01:30:26 CEST 2004: [ gfile() ] - [ ]
# After the selection of packages to update, each of them is downloaded, MD5 checked and installed

Slackware - syslog.conf
: - : 2004-11-14 10:14:04 - : 2004-11-14 10:14:04

Slack's syslogd configuration is quite normal, with info system messages logged in /var/log/messages, system warnings logged in /var/log/syslog, mail movements in /var/log/maillog, authentication records in /var/log/secure and general debug information in /var/log/debug.

[email protected]:/home/al# cat /etc/syslog.conf
# [...]
# Uncomment this to see kernel messages on the console.
#kern.*                                                 /dev/console

# Log anything 'info' or higher, but lower than 'warn'.
# Exclude authpriv, cron, mail, and news.  These are logged elsewhere.

        authpriv.none;cron.none;mail.none;news.none     -/var/log/messages

# Log anything 'warn' or higher.
# Exclude authpriv, cron, mail, and news.  These are logged elsewhere.

        authpriv.none;cron.none;mail.none;news.none     -/var/log/syslog

# Debugging information is logged here.
*.=debug                                                -/var/log/debug

# Private authentication message logging:
authpriv.*                                              -/var/log/secure

# Cron related logs:
cron.*                                                  -/var/log/cron

# Mail related logs:
mail.*                                                  -/var/log/maillog

# Emergency level messages go to all users:
*.emerg                                                 *

# This log is for news and uucp errors:
uucp,news.crit                                          -/var/log/spooler
# [...]

Slackware: The boot process
: - : 2004-12-19 22:33:13 - : 2004-12-19 22:33:13

Slackware's boot process maintains the logic of the typical Linux boot sequence, but uses BSD style init scripts instead of the SystemV style more common in other mainstream Linux distro. The main boot sequence actors are always:
- Linux Loader (Lilo by default)
- Kernel (2.4 in Slackware 10)
- Init and its initialization scripts.
Let's explore the involved components in a Slackware 10 boot process (most of what is reported here applies also to older Slackware versions).

Linux Loader
Lilo is the default choice in Slackware 10 and /etc/lilo.conf its configuration file. The default settings are essential: you find only the entries defined in the installation procedure (no fallback options to safe boot options or memtest labels) and an handy selection of VGA codes for different console resolutions.
A log of the Lilo related activities during installation is placed in /var/log/setup/setup.liloconfig
The program /sbin/mkrescue is available for the creation of a bootable rescue floppy disc or CD ISO image.
Documentation is available as man pages and docs/samples in /usr/doc/lilo-version/.

The kernel image referenced in lilo.conf, /boot/vmlinuz, is a symlink to the actual kernel file (for example   /boot/vmlinuz-ide-2.4.26).
In the same directory you find the configuration file used for the kernel compilation (ie: /boot/config-ide-2.4.26) and The default kernel package is optimized for 486 architecture.
Kernel modules are provided by a different package and placed in the standard /lib/modules/kernelversion.
The /etc/rc.d/rc.modules initialization script explicitly loads (modprobe) selected kernel modules at boot time. It's mostly not necessary for kernel compiled for module autoloading, as the default Slackware kernel, so most of its lines are commented.
The Kernel headers, necessary to compile system software, as in other distros, are provided by an autonomous package and placed in /usr/include/linux and /usr/include/asm-i386/

The major differences of Slackware, compared to other Linux distros as RedHat, Mandrake, Debian or Suse, stays in the absence of /etc/rc.d/rc#.d directories (where # is the selected runlevel) with symlinks to the startup scripts of different services, typical of the SystemV style logic. However a simple /etc/rc.d/rc.sysvinit script provides basic compatibility with SystemV style startup scripts, looking for S/K files in /etc/rc.d/rcrunlevel.d/. Note that by default Slackware doesn't create these directories.
Whatever the init scripts, a sysadmin always knows where to begin his quest for system awareness: /etc/inittab.
A Unix multi-level logic is always present, different runlevels place the system in different states:
0 - System halted
1 - Single user mode without network, needed for maintenance (root's password is still required)
3 - Multiuser mode with network support and text login (default)
4 - Multiuser mode with network support and X Window support (xdm graphic login). Note that in many other distro this is 5.

From Init's configuration file is possible to reconstruct the whole userland phase of the boot process:
/etc/rc.d/rc.S is the first script to be executed. It handles common general initialization activities: starts the devfs, if supported; activates swap partitions; checks the root filesystem (if hard problems occur /bin/sulogin is invoked asking the root password for system maintenance); remounts root system in read/write mode; initializes the Logical Volume Manager, if present; checks and mounts other (non network) filesystems in /etc/fstab; cleans up some temporary files; overwrites /etc/motd/ with the current kernel version (to comment out to keep previous custom Messages of the Day); configures ISA Plug&Play devices; sets the system time according to the hardware clock time; sources the /etc/rc.d/rc.modules for non automatic kernel modules loading; sources /etc/rc.d/rc.serial (note that this function is commented by default) for serial ports initialization; improves the system's randomness.

/etc/rc.d/rc.K is used only to bring the system to runlevel 1 where every network and system service is disabled.

/etc/rc.d/rc.M is executed for multiuser support at runlevels 2,3,4,5.
It sets screen blanking after 15 minutes of idleness; defines the system's hostname according to what is written in /etc/HOSTNAME; activates PCMCIA support running /etc/rc.d/rc.pcmcia start; initializes the networking hardware and IP parameters running /etc/rc.d/rc.inet1; initializes hotplug support (/etc/rc.d/rc.hotplug start); starts various network services via /etc/rc.d/rc.inet2 (it mounts remote NFS/SMB shares, starts the portmapper, activates firewalling (/etc/rc.d/rc.firewall start) and IP forwarding (/etc/rc.d/rc.ip_forward start), launches Inetd (/etc/rc.d/rc.inetd start), the OpenSSH server (/etc/rc.d/rc.sshd start), the Bind DNS server (/etc/rc.d/rc.bind start), NIS (/etc/rc.d/rc.yp start) and NFS server (/etc/rc.d/rc.nfsd start); starts system logging (/etc/rc.d/rc.syslog start); removes stale lock files, updates shared libraries links and X font indexes; starts the print spooling subsystem; if uncommented, starts smartd (for hard drives problems early discovery) and genpowerd (for communication with UPS via serial or USB line); enables BSD process accounting (not activated by default); starts crond and atd; activates file system quotas, if configured; launches Sendmail (/etc/rc.d/rc.sendmail start), APM, ACPI (/etc/rc.d/rc.acpid start) and ALSA (/etc/rc.d/rc.alsa); selects the screen font (/etc/rc.d/rc.font) and keymap (/etc/rc.d/rc.keymap); starts Mysql (/etc/rc.d/rc.mysql start), Apache (/etc/rc.d/rc.httpd start), Samba (/etc/rc.d/rc.samba start), the GPM mouse server (/etc/rc.d/rc.gpm start); if there are SystemV init scripts for the current runlevel, it ries to executed them via /etc/rc.d/rc.sysvinit and finally it executes user custom commands in /etc/rc.d/rc.local.

/etc/rc.d/rc4.d is executed just at runlevel 4 and starts the GDM, KDM or XDM session manager for graphical login.

The default getty program used is agetty, inittab provides six virtual terminal consoles (tty1-6) and has commented examples with agetty configuration for console via serial port or and dialup.  
Inittab is completed with the init default runleve set at 3, the "control+alt+del"  reboot "three finger salute" and power failure handling settings.

Slackware: The oldest, still kicking
: - : 2004-11-13 20:25:18 - : 2004-11-13 20:25:18

Slackware is the oldest Linux distribution that is still actively maintained and supported.
It was released in 1993, shortly after the the release of its parent SLS Linux, according to many, the first real public Linux distribution.
Leaded since the beginning by Patrick Volkerding, Slackware has its own place carved in the stone of Linux world.

It has a devoted supporting base, both for its age and its no frills logic, which somehow is a glimpse of its ancient origins. Slackware is one of the few distros that features BDS like init scripts (SysV is still supported), an essential and somehow primitive packaging system (tgz), a text based semi-manual installation procedure and few custom configuration tools.
Many love it because they know it and appreciate its essential structure, others simply find it too difficult compared to other popular distros and avoid it.

Chronology of Slackware releases
n/a (1993-07-11) Kernel 0.99pl11A, "SLS-like system" pre-announced on comp.os.linux. Patrick's email was posted on the Cleveland FreeNet, sponsored by CWRU.
Slackware 1.00 (1993-07-17) Kernel 0.99pl11A, Announced on c.o.l. TeX had to be installed from the SLS T-series floppies. With: gcc-2.4.5, libc-4.4.1.
Slackware 1.01 (1993-08-04) Kernel 0.99pl12A, with: ksh, tcl, XFree86 1.3.
Slackware 1.0.2 (1993-09-05) Kernel 0.99pl12, with: emacs 19.19, games, change in versioning 1.01 -> 1.0.2.
Slackware 1.0.3 (1993-09-15) Kernel 0.99pl12, with: pine
Slackware 1.0.4 (1993-10-01) With: Tin/XView updates
Slackware 1.1.0 (1993-11-04) Kernel 0.99pl13. Disk sets: A, E, IV, OI, OOP, TCL, X, XAP, XD, XV, Y.
Slackware 1.1.1 (1994-02-xx) Kernel 0.99pl14. 51 floppies. XFree86 2.0, libc 4.4.4. TeX
Slackware 1.2 (1994-03-27) Kernel 1.0 "Installing all takes about 200MB"
Slackware 2.0 (1994-06-25) Kernel 1.0.9, 1.1.18  Also Morse Communications "Slackware Pro"
Slackware 2.1 (1994-11-15) Kernel 1.1.59, 65 floppies, plus boot & root disks
Slackware 2.2 (1995-03-??) Kernel 1.2.1
Slackware 2.3 (1995-05-??) Kernel 1.2.8, libc 4.6.27, XFree86 3.1.1
Slackware 3.0 (1995-09-30) Kernel 1.2.13, 1.3.1 First ELF. Walnut Creek CDROM.
Slackware 3.1.0 (1996-07-03) Kernel 2.0.0 Called "Slackware'96". libc 5.3.12.
Slackware 3.1.0 (1997-01-13) Kernel 2.0.27 Also called "Slackware '96"
Slackware 3.2.0 (1997-02-17) Kernel 2.0.29
Slackware 3.3.0 (1997-07-11) Kernel 2.0.30     
Slackware 3.4.0 (1997-10-14) Kernel 2.0.30     
Slackware 3.5.0 (1998-06-09) Kernel 2.0.34,  libc 5.4.44, XFree86
Slackware 3.6.0 (1998-10-28) Kernel 2.0.35 "Recommend 500MB for full install"
Slackware 3.9 (1999-05-17) Kernel 2.0.37 Co-released with 4.0
Slackware 4.0.0 (1999-05-17) Kernel 2.2.6, 2.2.7 "Recommend 1GB for full install", XFree86 First kde 1.1.1
Slackware 7.0 (1999-10-25) Kernel 2.2.13 First glibc2, "recommend 2GB partition", Version jump from 4 to 7.
Slackware 7.1 (2000-06-22) Kernel 2.2.16, XFree86 3.3.6. First gnome.
Slackware 8.0 (2001-06-28) Kernel 2.2.19, 2.4.5, XFree86 4.1.0, kde-2.1.1
Slackware 8.1 (2002-06-19) Kernel 2.4.18, XFree86 4.2.0, kde-3.0.1, gnome-1.4.1, First mozilla
Slackware 9.0 (2003-03-20) Kernel 2.4.20, gcc-3.2.2, XFree-4.3.0, kde-3.1, gnome-2.2
Slackware 9.1 (2003-09-25) Kernel2.4.22, GCC 3.2.3 (with GCC 3.3.1 as an alternate choice), GNOME 2.4.0, and KDE 3.1.4. Slackware 9.1 uses the stable 2.4.22 kernel, but is 2.6.x ready.
Slackware 10.0 (2004-06-22) Kernel 2.4.26, gcc 3.3.4, X11R6 (xorg) replacing XFree86 for the fist time, KDE 3.2.3, Gnome 2.6.2

Privacy Policy