target audience

People with older boxen without CDROM and want to avoid the three or four floppy boot sequence.

contents

overview

An alternate boot method for those systems without the option of booting from CDROM. Floppy drives are becoming unreliable and while the USB and PXE methods are available, they are not available on all PC boxes. For example the target box described here has USB ports, but no option to boot from them. Also, no option is provided for PXE boot on the example target machine.

A separate service partition is setup using files from the slackware install CDROM. These days the additional PCMCIA and network boot floppies are not required, at least not on the systems I've been installing. Also assumed is that the install source will be either already on the hard drive, or available via NFS mount.

Another use for the service boot option it allows one to perform tasks such as repartitioning and/or adding labels to partitions for new kernel options. I used it for repartitioning firewall box, keeping the box 'on-air' for most of the process -- using the service boot option to copy /var and / partitions and transfer control to them, which must be performed on the non-running OS partition.

requirements

You need a network connection to the target machine in order to transfer the files. This discussion assumes you already installed slackware the 'hard way' using a floppy boot and you wish to avoid the floppy boot sequence next time.

The example here uses /dev/hda1 for the service boot partition. Slackware 13.1 is the OS. Don't worry about the new OS that will call the hard drives sda and sdb -- that's taken care of during the boot sequence.

The source files come from the first install CDROM or DVD, or from a local install mirror you may decide to maintain. In this case the machine is accessing a local mirror of the install files, which may be NFS mounted from another localnet machine, on /home/mirror/slackware-13.1, adjust target drive, partition and file source to suit your setup.

the result, updated for Slackware-13.1

~# tree gc/
gc/
|-- boot
|   |-- boot.0301
|   |-- bzImage
|   |-- initrd.img
|   `-- map
|-- dev
|-- etc
|   `-- lilo.conf
|-- mnt
|-- proc
`-- tmp

6 directories, 5 files

the method

build empty tree
format and mount the service partition to gc
~# mkreiserfs /dev/hda1
~# mkdir gc
~# mount /dev/hda1 gc
~# mkdir gc/{boot,dev,etc,mnt,proc,tmp}
	
grab a kernel
~# cp /home/mirror/slackware-13.1/kernels/huge.s/bzImage gc/boot/
grab the initrd
~# cp /home/mirror/slackware-13.1/isolinux/initrd.img gc/boot/
write a lilo.conf
~# vim gc/etc/lilo.conf
~# cat gc/etc/lilo.conf
# /etc/lilo.conf for service boot on /dev/hda1 -- 2009-10-04
#
boot = /dev/hda1
root = /dev/hda1
read-only

# load initrd above the 15M memory hole
large-memory

# faster kernel loading
compact

image = /boot/bzImage
  label = service
  initrd = /boot/initrd.img
#
install the service boot kernel
~# mount --bind /dev gc/dev
~# lilo -r gc/
Warning: Partition 1 on /dev/hda is not marked Active.
Added service *
~# umount gc/dev ## Important!
~# umount gc/
append 'service' boot option to main /etc/lilo.conf

other = /dev/hda1
  label = service
run main lilo to link the service boot partition
~# lilo
Added 2.6.31.1a
Added 2.6.30.8a
Added 2.6.27.35a *
Added slack-2.4.33.3
Added service
Added alt
reboot and test
Please report any technical bludners :o)

example

recap procedure

example paths

The target service partition is /dev/hda1 and the install source is NFS mounted on /home/mirror/slackware-11.0. Adjust these from the example below to suit your own setup.

example run

root@deltree:~# [ -d gc/ ] || mkdir /home/service/
root@deltree:~# dd if=/dev/zero bs=4k of=/dev/hda1
dd: writing `/dev/hda1': No space left on device
64253+0 records in
64252+0 records out
263176704 bytes (263 MB) copied, 8.57175 seconds, 30.7 MB/s
root@deltree:~# mkreiserfs /dev/hda1
mkreiserfs 3.6.19 (2003 www.namesys.com)
[...]
ReiserFS is successfully created on /dev/hda1.
root@deltree:~# mount /dev/hda1 gc/
root@deltree:~# mkdir gc/{boot,dev,etc,mnt,proc,tmp}
root@deltree:~# cp /home/mirror/slackware-13.1/kernels/huge.s/bzImage gc/boot/
root@deltree:~# cp /home/mirror/slackware-13.1/isolinux/initrd.img gc/boot/
root@deltree:~# vim gc/etc/lilo.conf
root@deltree:~# cat gc/etc/lilo.conf
# /etc/lilo.conf for service boot on /dev/hda1 -- 2009-10-04
#
boot = /dev/hda1
root = /dev/hda1
read-only

# load initrd above the 15M memory hole
large-memory

# faster kernel loading
compact

image = /boot/bzImage
  label = service
  initrd = /boot/initrd.img
#
root@deltree:~# mount --bind /dev gc/dev
root@deltree:~# lilo -r gc/
Warning: Partition 1 on /dev/hda is not marked Active.
Added service *
root@deltree:~# umount gc/dev
root@deltree:~# umount gc/
root@deltree:~# vim /etc/lilo.conf
root@deltree:~# lilo
Added 2.6.31.1a
Added 2.6.30.8a
Added 2.6.27.35a *
Added slack-2.4.33.3
Added service
Added alt

credits

Based on a method reported by Ray to newsgroup alt.os.linux.slackware and followup posts.

updates

Updated 2010-10-18 as I'm looking at updating the slack-11.0 box to 13.1, a big jump. Also means moving from apache-1.3 series to the latest as well. I have no what pain there -- except I been avoiding it for years!