service partition
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
- check target partition is available
- clear, format and mount target partition
- create target directories
- mount source and copy files to target
- write target /etc/lilo.conf
- mount /dev to target
- run lilo on target
- unmount target /dev
- edit main /etc/lilo.conf, run lilo
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!