# == defs # -- overwrite these >> ifeq ($(ROOT_FS_DEVICE),) ROOT_FS_DEVICE = /dev/hda1 endif BOOT_FILES = $(wildcard /boot/*$(shell uname -r)*) # -- overwrite these << URL = http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-3.11.tar.bz2 DLOAD_DIR = /home/samba/dat/share/exe/linux/syslinux DLOAD_PKG = $(DLOAD_DIR)/$(notdir $(URL)) BUILD_DIR = cd_root DIRS = $(DLOAD_DIR) $(BUILD_DIR) UNPACK_DIR = $(notdir $(shell echo $(DLOAD_PKG) | sed 's/.tar.bz2$$//')) ISO_IMAGE = image.iso ISOLINUX_BIN = $(UNPACK_DIR)/isolinux.bin ISOLINUX_CFG = isolinux.cfg INITRD = /boot/initrd CD_FILES = \ $(BOOT_FILES) \ $(UNPACK_DIR)/com32/modules/menu.c32 \ $(INITRD) \ $(ISOLINUX_BIN) \ $(ISOLINUX_CFG) KERNELS = $(shell file $(BOOT_FILES) | grep -ie 'linux.*kernel' | sed 's/:.*//') export ROOT_FS_DEVICE # == targets all: $(ISO_IMAGE) install: clean: rm -rf *.done rm -rf $(BUILD_DIR) $(UNPACK_DIR) rm -f $(ISO_IMAGE) rm -f $(ISOLINUX_CFG) distclean: clean # == rules dirs.done: mkdir -p $(DIRS) touch $@ $(DLOAD_PKG): wget -c $(URL) -P $(DLOAD_DIR) dload.done: $(DLOAD_PKG) touch $@ unpack.done: dload.done tar -xjf $(DLOAD_PKG) touch $@ copy.done: unpack.done dirs.done $(CD_FILES) mkdir -p $(BUILD_DIR) for i in $(CD_FILES); do \ n=`basename $$i | tr [A-Z] [a-z] | sed 's/\.tar\.gz/.tgz/; s/-/_/g; s/\([^.]*\)\.\([^.]*\)$$/\1@\2/; s/\./_/g; s/@/./'` ;\ echo "copying $$i -> $(BUILD_DIR)/$$n" ;\ cp $$i $(BUILD_DIR)/$$n ;\ done touch $@ $(ISO_IMAGE): copy.done mkisofs -l --iso-level 2 -o $(ISO_IMAGE) \ -b isolinux.bin -c boot.cat \ -no-emul-boot -boot-load-size 4 -boot-info-table \ $(BUILD_DIR) isolinux.cfg: ( \ echo DEFAULT menu.c32 ;\ echo PROMPT 0 ;\ for k in $(notdir $(KERNELS)); do \ l=`echo $$k | sed 's/vmlinuz-//g'` ;\ echo -e "LABEL $$l\n KERNEL $$k\n APPEND initrd=initrd root=$(ROOT_FS_DEVICE)" ;\ done \ ) > $@