1. Sysbuild

You've assembled the machine hardware, and checked that all the devices are detected.

You've got got the blank boot floppies, (or the disks prepared from your friends PC and a working CD-ROM). You've got your netmask ready, You want to install Linux.

You should have already used the BOOT disk(s) when building the hardware, to confirm that each device is properly detected and appears to be OK. Otherwise you are running the hardware without knowing if you plugged it in upside down or not. If you are reading ahead to do that, this may help.

You create the BOOT+ROOT floppies, by selecting them from the CDROM. They are a complete (but scaled down) Linux, that runs completely from diskette. You use them to fdisk and format your hard disk into partitions, then install Linux from the CDROM (or elsewhere).

Different distributions have their own setup scripts that guide you through the process, but behind the scenes, they do the same things. Personally, I prefer to do most of the work manually, without setup as it is genuinely easier, and you get to understand what is happening. If you don't have slackware, you should still read this. Your distribution will be calling the same commands. Some distributions use the CDROM directly, but that is much the same, just harder for them to design.

Once you have prepared the hard disk, you load the software onto it from the CDROm (or network, or ...). Configure a few files, and setup the boot mechanism (either LILO or another boot diskette). You can also run loadlin.exe from DOS. Then you will be booting from the hard disk, running the main distribution, with access to the man pages, browsers etc.

Most people compile a custom kernel, as part of the installation process, so that their hardware is exactly matched, however many people don't. If you don't, you will have to be sure that the installation kernel is good enough to run from.

I recommend that you do build your own kernel, (maybe using a a second machine). It is a part of running and understanding a Linux system. Users with insufficient disk space to do so, are missing out.

There are a few essential core config files that have to be configured from the very start. They describe your machine, and have to be customised to you. Setup will help you, but it also helps if you can help yourself. You need to find an editor that you can operate. Personally I use vi, but that might upset you. If so, install Linux, learn to program, and write an editor that fits onto a diskette. Or use one of the 'light' editors, such as ae(1), ee(1), jed(1) or pico(1) (comes with PINE). They have on-screen instructions.

1.1 Documentation
1.2 Kernel detects hardware
1.3 CDROM Slackware directories
1.4 FIPS.EXE shrank my DOS partition
1.5 BOOT 'n ROOT
1.6 Read This If Nothing Else
1.7 Boots Independently - Won't
1.8 Using CHROOT to build a kernel from the BOOT diskettes
1.9 Boots Independently



Everybody has to install, as well as here there are documents in:

LDP manual - eg Doctor Linux

LDP-II		Getting started Chapter 2
LDP-IV		Sytem Admin Guide - eg swap space
LDP-XIV		Distribution HOWTO
LDP-XXII	Installation HOWTO - Mat Welsh 
		The mini-printed inset with the CDROMS.

LDR1:/cdrom/HOWTO/*.HOWTO - In text format.

If the printed versions are old, look on the CDROM's or on the net for http://sunsite.unc.edu/mdw/linux.html

Remember to read through the rest of Raven, before starting. Especially things like formatting the disks (etc). It will make passing references more meaningful as reminders.

There are loads of docs on your cdrom and online. In future, I hope to refer to them from here, but the problem is that they "move around" and might not be on your CDROM, or you might not have a browser running. Find them.


Kernel detects hardware

When the kernel goes through it's initialisation, each driver in the kernel, reports on the device it initialises, confirming it is there, and has the correct IO_ADDR, IRQ, Ethernet MAC address, etc.

If the driver isn't in the kernel, it won't say anything, so make sure your BOOT disk (kernel) is well chosen. The (sample) messages you are supposed to see, are listed in a later section. Find them now.

If these messages scrolled by too quickly, try CTRL-S and CTRL-Q to stop and start the screen (XON/XOFF). If the boot process gets as far as mounting the hard disk(s) writable, these messages get logged to /var/log/messages or /var/log/syslog. Also the dmesg command recalls the boot messages.

If a driver is not built into the kernel, but is loaded later as a module, you won't get error messages (or sucess reports) until then. There may be several boot-disk kernels, some with device drivers for specific SCSI controllers, or unusual CDROMS.

Some boot disks only use built in drivers, some actually use kernel MODULES, where the devices driver is selected from a menu and loaded from a second diskette, or the CDROM. IE a device might NOT be reported by the first diskette. RedHat have a sophisticated boot disk sub-system, with modules, and the newt text menu system. try:

This is explained much better in the Linux Getting Started documentation that comes with and on your CD. There is also a RedHat guide in HTML format. This may even be readable using a DOS viewer. However at the risk of confusing you even more ...


CDROM Slackware directories

NOTE: This relates to Slackware 3.0 not 3.1 (Aug-96) so remember to switch BrainMode=ON, however the two are almost identical, just upgraded

Slackware(tm) from Patrick Volkerding is arranged to fit on floppy disks, all held under the /cdrom/slakware directory. CDROM distributions include extra things, and it can be confusing to know which directory is which.

Of course things may have changed by the time you are reading this, but you should be able to look for yourself, and annotate this list if things are different. /cdrom

/cdrom/slakware	- the disks with ./a1/package.tgz
/cdrom/slaktest - ./a1 disks configured for CD dependence (AVOID)
/cdrom/slackwar - the installation help texts, dos prgrams etc
/cdrom/slackwar/source/a1	# the sources to Slackware/a1
/cdrom/slackwar/contrib - extra stuff (AUIS, IRC, ...)
/cdrom/slackwar/kernels	- should not need - but ... !
/cdrom/slackwar/docs - other stuff which might not be in /usr/doc
/cdrom/live/usr/doc - InfoMagic duplicates /usr on the CD
/cdrom/help/booting - and some others
/cdrom/HOWTO/*.HOWTO - In text format
/cdrom/viewer/*	 - MS-WIN HOWTO viewer (nice)

/cdrom/utils/FIPS/FIPS.EXE	# shrink a DOS fdisk partition
/cdrom/utils/RAWWRITE.EXE	# DOS write entire floppy (slowly)

/cdrom/HTML/ldp/*.html		# Infomagic put it on cdrom #1 or #3


FIPS.EXE shrank my DOS partition

If your disk is already full of DOS, you should get a second disk for Linux. If that is not possible consider a UMSDOS installation (slow), or use DEFRAG then FIPS to reduce the DOS partition, releasing space to create an extra partition for Linux. Most people don't need FIPS,

Basically, you run DEFRAG.EXE, on your DOS partition, so that all the files are at the start of the disk, then you run FIPS.EXE to move the end of partition boundry. It is simple, but not documented here. Backup first.

There is also a Drop-In-Linux (DILinux) on sunsite (and CDROM-5) that is intended for DOS machines over UMSDOS. I haven't tried it yet, but it claims to be a mini-linux distribution, with enough to get started, and try it all out.

If it works, thank the author with a list of tips that make sense to you. If it didn't, oh well.



As always, Linux is changing. The new scheme has better RAM-DISK technology, and loadlin.exe can load the RAM-DISK from the CDROM via DOS. IE you might never need a BOOT+ROOT pair! However, you might not have DOS available to you, and you might not have an EIDE CDROM, ie you require a special driver to access the CDROM, which is where all the extra files are!

/cdrom/utils/RAWWRITE.EXE	# DOS write entire floppy (slowly)
/cdrom/slackwar/boot144/idecd	# ide hd + ide cd
/cdrom/slackwar/rootdsks/color.gz # colour menu setup - not tty

You need to create a pair of diskettes that will boot Linux on your box. The BOOT disk contains the kernel, and (usually) the LILO program to load it. The ROOT disk contains a (compressed) file-system that gets loaded into the RAMDISK, which gets mounted as '/' (ROOT).

The ROOT disk is the easiest to find. Almost everybody wants the same installation programs (some want text mode - not dialog screen, some want UMSDOS - not performance). I used /cdrom/slakwar/rootdsks/color.img.

The BOOT disk is a bit trickier, there are several to choose from, and it's very frustrating if you pick the wrong one.


On the CDROM, the diskettes are kept as files, upto 1440 K. You have to image-copy them to the diskette.

# to copy color.img to a floppy
# with only DOS access to the E:\ CDROM
  E:\UTILS\RAWWRITE.EXE	# DOS write entire floppy (slowly)
# then follow the prompts
# A:


If you have a linux system, you can write out a root floopy with dd(1)

dd if=/cdrom/slakwar/rootdsks/color.img of=/dev/fd0 bs=18k

The bs=18k is optional, but a lot faster, as it writes a complete track in one go (then re-reads it to validate it?). This is why RAWWRITE is so slow! It writes a sector or two, does a full spin, rereads the sector to validate it, and then has to find the next sector.

(Actually Linux has the floppy driver internally optimised so that merged requests happens anyway, but it used to be true and it still applies to some SVR4 and other UNIX's).

The BOOT disk holds the Linux kernel that will be used during the installation process. You must pick the right one.

There are several supplied on the CD, and you have to pick one that is right for your hardware. The kernel drives the hardware, and you will need to pick a kernel that can drive yours - ie the CDROM and the root partition DISK DRIVE.

Other options such as network controllers are probably less relevant to the process of installing Linux base and packages from CD to disk. If the kernel you select doesn't have the correct CD driver, it won't be able to read it. Ditto for the hard disk. If you have an EIDE CD, it uses the same driver as the EIDE hard disk - which is now standard. The kernel still needs to have EIDE-CDROM code included.

If you have a SCSI disk (that you are installing to, or from a SCSI CD), you will need a kernel that can drive your SCSI CONTROLLER. If you have a IDE CD and disk, then the kernel will include the EIDE driver.

If you have a special CDROM, you need a kernel that can drive it (or install some other way).

If you don't have a CDROM, but do have a second machine, you can connect them using ethernet, parallel cables (see plip) or a null modem serial cable. You will then need a boot kernel that can drive your ethernet card, or has plip or pppd or slip built in (or available as a module). Then you boot, and configure TCP/IP on the card. Then you establish NFS or SMB over TCP/IP (SMB is used by windows-for-workgroups, WIN-311, WIN-95, NT, but you might have to convert the WIN-311 from netbios to TCP/IP using a freely downloadable module from microsoft).

With all these methods, you are estabishing local access to the slakware directory, which you configure as the "SOURCE" directory, with the "TARGET" directory being your new Linux root partition.

If your booting system uses MODULES, it is much the same, but the driver is a separate module on the floppy, not built into the kernel. This allows more flexibility, but also more care and attention to detail. Unless you use some really fruity SCSI disk, you needn't worry. It is perfectly OK to use an older kernel to install a newer Linux with.

If it works, it is SO easy. If it doesn't, you will have to work a bit. Use your imagination, you need the CDROM to read the /slakware/a1/files.tgz (etc). But you may be able to pre-load them onto an MSDOS partition, or make them available over NFS or even SMB (or even floppies!). Having a second machine helps, but is not necessary. If the first attempt fails, and it looks like the start of a long session, use LOADLIN to boot the kernel from MSDOS. It is a lot faster (though you will probably have to remove config.sys to get sufficient memory).

BOOT disk

Look in /cdrom/slackwar/boot144/, If it's not mouted as /cdrom, use mount(8) or df(1) to see if it's mounted on /var/adm/mount or elsewhere.

You can use DOS to read the help texts and the rawwrite.exe program to create the disks.

Boot from the boot disk and switch to the root disk when prompted.

You will get a prompt BEFORE the kernel is loaded off the boot disk. This enables you to set special options to be passed to the kernel, eg cdrom=/dev/hdc. The BOOT disks already have a few parameters builtin to the LILO configuration. You probably don't need to type anything here as the kernel can usually 'grope' the hardware to find what it is looking for (if it is there). But it is an option that helps if the kernel doesn't look at the IO_PORT where you installed your hardware, or crashes by probing a device that didn't like being probed, or ... otherwise fails.

More modern BOOT+ROOT diskette pairs, may fit onto one floppy! There may even be a third disk (ie soon a second diskette) with a collection of kernel driver modules on it. This would enable you to boot+root off the first diskette, then mount the utils floppy which you could always customise with any special drivers you need from your supplier (the LAN-CARD, SCSI-CARD or CDROM).

ROOT disk

Look in /cdrom/slackwar/rootdsks

The ROOT disk gets loaded into a RAM disk, where it is used to complete the boot. It contains programs like /bin/login, /etc/passwd, /bin/sh ... so that you can login. If the 'ls' command is missing, try cd /bin ; echo *

RAM disk

When you use BOOT+ROOT, they are configured to copy the ROOT disk to a RAM-disk (size 1440 K-blocks). This frees up the floppy device, for those who don't have a CD-ROM. During normal system use, you don't have a RAM-disk (unless you want one).

People installing with only 4 MB ram, might have trouble, as the RAM-DISK is eating up their space. In that case establish some swap space as soon as possible.

login as root, run setup

Login as root (there is no password) to get a login shell (an open prompt), type setup to run the Slackware installation program. This program will go through a series of steps to configure your machine.

You could do much of this from the command line. The setup program calls programs, that you could call directly. Doing so will help you understand your machine better, and you will still be able to run the setup program and have it take over. The setup program seems to be quite aware of second-attempt installations, and detects all sort of things (though it can get tedious re-typing in names, and 'y' to obvious options).

REMEMBER: ALT-F2 switches to the second console.

Before or during setup you will :

You or setup will edit /etc/fstab on your HARD-DISK (the one on the RAM-DISK evaporates when you reboot). You can mount DOS disks (eg floppies) with:

mkdir -p /dos/a		# -p does a mkdir /dos first - if required
mount -t msdos /dev/fd0 /dos/a
umount /dos/a

This will enable you to save+load /etc/rc.d/rc.inet1 files when upgrading, but beware of dos filename.ext (8.3) not matching unix long filenames.


This is UNIX (not). You are the system administrator. You are supposed to know what you are doing, the machine obeys. You say "jump off a cliff", it's gone.

Many commands do include sanity checks, and will notice if a device does not exist or is unusable because it is currently IN USE for something else. But avoid these hand rails, you only have yourself to blame.

Generally, in day-to-day operations, these are sensible checks, but system installation is about doing crazy things, like deleting file-systems, setting up swap sections, and generally setting the indicators that daily operations will check, over-riding any established indicators.

Before pressing return: relax, check the device numbering (eg /dev/hda4 -vs- /dev/hdb4), avoid using > when you meant < . Hopefully, we're building a new system, so any loss is time not data.

If you forget to do something in setup, you can probably reboot and do it later. Look in /var/adm/setup/ for the scripts. Really, all slackware does is untar the files to the root directory, run a shell script to create sym-links (/install/doinst.sh gets moved to /var/adm/scripts), and runs any special setup-script, to establish an initial configuration.

The brains of slackware is the setup script that does all the /etc/fstab editing (which you can do manually), /etc/lilo.conf editing (ditto), and maintaining a few lists of lists of files and package descriptions, and of course the huge task of integrating a system that works.

If you want to do it manually, you only really need a text editor to prepare /etc/lilo.conf and /etc/fstab so that it will boot. You may find an editor on the cdrom or your old system (I once used PICO the PINE editor, it was very strange, but very simple).


Read This If Nothing Else


Do not install more than ONE pre-compiled kernel (q1-q9). The last one in overwrites any previous ones. Maybe it won't boot your machine if you don't have the right disk controller driver! Either cnews or INN (don't mix).


Boots Independently - Won't

I've had sytems installations failing for every reason under the sun. The earlier incidents were from ignorance of Slackware's setup, but many of the other's just happened, and Slackware's simplicity came to the rescue,

EG At one time the Adaptec and BusLogic SCSI controllers confused my 1542 card, Passing the LILO option BusLogic=0 didn't help (no effect!), and the only BOOT kernel with SBPCD on it, also had BusLogic. To get the right kernel driver, I had to boot without SBPCD. (No CDROM to install from!)

I installed using a second WIN.311 machine to read the CDROM, feeding the CDROM to a booting slackware diskette over smbfs.o (I needed to copy the .o module file to floppy). I've even recompiled a kernel from the BOOT+ROOT environment. I hope you never have to. With Modular kernels you probably won't, you'll just need to get that cd_driver.o onto a floppy so that you can read the other driver.o files.

Note: Slackware helped me, but the slackware setup script usually got in the way, eg installing with NFS is easy, as long as you don't have to type in the numbers to the dialog boxes, again, and again ... until you get it right. It's esier to run the commands manually, and install from a "pre-mounted SOURCE directory".


Using CHROOT to build a kernel from the BOOT diskettes

chroot /var/adm/mount /bin/sh
cd /usr/src/linux 
make config
make dep
make zdisk
# make menuconfig dep clean install
# make modules	modules_install

The chroot(8) command, makes /var/adm/mount/usr/src/linux appear as /usr/src/linux, and /var/adm/mount/etc/lilo.conf appear as /etc/lilo.conf.

As soon as it runs, sh probably puts out an error message, because it can't find the current working directory (outside the chrooted zone), but cd / soon fixes that.

lilo -r /var/adm/mount uses a similar trick, to allow you to install lilo from /etc/lilo.conf, when that is currently mounted beneath /var/adm/mount.

If you have a pre-installed partition, you can run it's commands with the chroot command. EG if the new partition won't boot, but you can use the BOOT+ROOT disks, you can then get access to the "full" set of utilites, that you have installed (but can't boot to).

Be careful with chroot, and things like mounting a disk twice, or forgetting to unmount it.

chroot /var/adm/mount /bin/sh
cd /	# "cannot determine PWD"
vi /etc/fstab
vi /etc/lilo.conf
mount /hda4
umount /hda4

If you don't like the "cannot determine PWD" message, then first cd to within the chroot'd tree, then run chroot . command. Note: some utilities will notice that "something is wrong", maybe due to a lack of /proc in the visible area, or lack of 'utmp' records or wrong ownership of the /dev/tty device. Most won't, and it should still work. If less(1) doesn't seem to like it, try

cd /hdc7
chroot . man hdparm | less

Another reason for not being able to boot independently, is that BIOS needs all the boot files to reside below 1024 cylinders. If you forgot, try loadlin.exe from DOS or a boot floppy.


Boots Independently

Don't throw the BOOT+ROOT away (or boot disk created with make zdisk), just because you don't need them anymore! You can use them as repair disks, for when something goes wrong.

Load the X11R6 base, called XF86_SVGA, not XF86_Mono or XF86_Mach3 unless you have that kind of card. The LAST X11 server installed will override the link from X to XF86_SVGA.

Load the X11R6 contrib section (see xdvi(1), xpaint(1)), as well as the xview libraries and apps.

Install all the backward compatibility libs, a.out and X11R5 if you want to. There is still some of it about (PRE-ELF, occasionally pre-POSIX, k+r originals).


Slackware gives you the choice of two kernel sources. The CDROM has others, but slackware arranges them better with symbolic links - which prevents two source trees overlapping. Build a kernel for either ALL your cards, or the minimum to boot (the other devices are supported as modules).

Install as much of the other series of disks, as you wish. Do NOT select all TeX fonts or your disk will be full before you start. Ditto for all emacs gadgets.

Don't install cnews and INN on the same machine! If you don't install either, you can use netscape, pine, knews or skim.

A few packages more ...

Remember that /cdrom/slackwar/contrib contains loads of goodies, like AUIS, which may sound like an X25 protocol, but is actually a very nice X11 wordprocessor, with a spread-sheet / table editor. That is slackwar with a c but no e. Where you found the BOOT disk.

The other disks also contain Arena (an up and coming browser), an archive of kernel increments, apple comms, TCL-TK apps libr (old/new tk), TeX fonts ...

Misc Admin (After boot)

(( NOTE: other distributions delete /tmp/* every time you boot. SVR4 does. Slackware doesn't. If you really want to keep stuff, put it elsewhere ))

Copy the huge /cdrom/ls_lr file from the FIRST disk to /tmp, then you can grep(1) for things like hdparm, to see who has the latest version for you. Ditto for MANIFEST. Here is the InfoMagic search engine command script to search InfoMagic CDROM collections (or others)

# lr - locate resource
	grep "$@" /tmp/ls_ls/ls_lr_LDR_9612 | less

Then lr gimp will tell you if it is on any CDROM. If you add the '-i' option, the search will be case insensitive. You have to write the command all by yourself, because you could have any number of ls-lR files from different archives. Don't forget the locate command, for files on the hard drive, not the CDROM's.

When you desperately need space, rm -rf /usr/doc then use the copies on /cdrom/live/usr/doc. If you do delete it, recreate the top directory with mkdir /usr/doc, so that new docs have somewhere to go.

Run updatedb(1), then locate README.ide

The Slackware (3.0) version of mc(1) (version-2.0) does not do justice to mc-3.++, one of the finest programs in existence. grep /mc /tmp/ls_lr or ftp it.

add youself as a user with adduer(8) (Slackware specific) and set passwords with the passwd(1) command. HINT: to exit without changing the password, simply mistype it twice differently. Other than the encrypted password string, you can manually edit the /etc/passwd file, the format is described in the passwd(5) man page.

passwd root # (forget? me? no!)
passwd user

edit /etc/profile, setting ignoreeof=2, PS1="$LOGNAME@$PS1"

edit /etc/fstab, setting up correct permissions for cdrom, dos-uid, exchangables.

edit /etc/group, /etc/passwd (maybe /etc/shadow) adding users and groups, or copy them across from your old backups.

edit /etc/XF86Config, run xvidtune(1), locate README.Cirrus, see X11 configuration.

edit /etc/rc.d/rc.inet1 (and others) with routes to eth0 (explicitly, not the default route, leave that for when you dial Internet).

edit smb.conf, dosemu.conf, /etc/rc.d/*, PPP.HOWTO, README.Tunnel

Get some sleep.