Penguin

This method is outdated; read about

AutoInstall by Progeny

An AutomatedInstallation tool for Debian.

Bought to you by CraigBox and NeilFenemor with help from JohnMcPherson and DanielLawson


autoinstall depends far too much on having a 1720Kb floppy disc around - so lets blow that away and use a CDRW.

Run make-autoinst-initrd(1) to get your linux and initrd.gz file. This is the end of the involvement with the tools that are provided for autoinstall.

Make a conf dir, copy the examples from /usr/share/doc/autoinstall/ into it. Run autoinst-read-debconf debconf.cfg in this directory to backup your debconf database.

(cd conf && tar cf - . | gzip -9) > conf.tgz

Go get isolinux - part of the syslinux(1) suits - and get it to boot your kernel and initrd file.

I recommend using isolinux-debug.bin until you get things working right - apt-get(8) source syslinux, and then make isolinux-debug.

Create a cdrom/ directory somewhere. Create a cdrom/isolinux/, put isolinux{-debug}.bin in there. Create an cdrom/isolinux/isolinux.cfg file with your lilo(8)-like boot options - you can just use

timeout 100 default linux initrd=initrd.gz prompt 1

Copy your kernel (linux) and initrd (initrd.gz) into the cdrom/isolinux/ directory.

Copy conf.tgz into the cdrom/ directory; it will be mounted off the CD when the system boots off it.

In the cdrom/ directory, issue

mkisofs -o ../bootcd.iso -b isolinux/isolinux.bin -c isolinux/boot.cat \

  • no-emul-boot -boot-load-size 4 -boot-info-table .

Now cdrecord that baby and watch things fly.

(Note: You'll need to change linuxrc inside your initrd, to get to mount your data off /cdrom instead of /dev/fd0u1720, unless you want to use a disk as well (whats the point, really?) It's in /usr/lib/autoinstall.)

Search for autoinst_config_drive = "/dev/fd0u1720" and replace with

autoinst_config_drive = "/dev/hdc" autoinst_config_fstype = "iso9660"


Kernel 2.4 keeps its modules somewhere else: a patch for /usr/lib/autoinstall/mkmodules

--- mkmodules.old Thu Feb 28 14:16:36 2002

  • ++ mkmodules Thu Aug 22 10:46:32 2002

@@ -133,7 +133,7 @@

if not os.path.exists(depmodrealpath)
continue
  • moddir = "%s/%s" % (modroot, os.path.basename(os.path.dirname(depmodpath)))
  • moddir = "%s" % (os.path.dirname(depmodpath)?) if not os.path.isdir(moddir):
  • os.mkdir(moddir)
  • os.makedirs(moddir)

os.system("cp %s %s" % (depmodrealpath, moddir))


A better idea when using a CD is to replace the mkmodules script (or at least the bit at the end) with a nice simple one
  1. Copy the modules in.

os.mkdir("modules") modroot = "modules/%s" % kernelversion os.mkdir(modroot) os.system("cp -r %s/%s/* %s" % (modpath, kernelversion, modroot))

Then it copies the entire modules tree.

To do this you will need to make a bigger initrd: in /usr/bin/make-autoinst-initrd, replace the lines

dd if=/dev/zero of=$TMPPATH/initrd bs=1024 count=4096 /sbin/mke2fs -Fq -N 2048 $TMPPATH/initrd

with

dd if=/dev/zero of=$TMPPATH/initrd bs=1024 count=8192 /sbin/mke2fs -Fq -N 4096 $TMPPATH/initrd

to make an 8mb ramdisk instead. Then, edit conf/isolinux/isolinux.cfg to append "ramdisk_size=8192" to your kernel parameters. Thanks to DanielLawson for the heads up on this one.

Part of LinuxInstallationNotes