176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#!/bin/bash 276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# Generate a legacy floppy emulation ISO boot image 476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# genliso foo.liso foo.lkrn bar.lkrn ... 676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# 776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# The .liso image filename is the first argument followed by 876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# a list of .lkrn images include in .liso image 976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmancase $# in 1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman0|1) 1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman echo Usage: $0 foo.liso foo.lkrn ... 1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman exit 1 1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ;; 1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanesac 1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmancase "`mtools -V`" in 1876d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanMtools\ version\ 3.9.9*|Mtools\ version\ 3.9.1[0-9]*|[mM]tools\ *\ [4-9].*) 1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ;; 2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman*) 2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman echo Mtools version 3.9.9 or later is required 2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman exit 1 2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ;; 2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanesac 2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanout=$1 2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanshift 2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmandir=`mktemp -d bin/liso.dir.XXXXXX` 3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanimg=$dir/boot.img 3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanmformat -f 1440 -C -i $img :: 3376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 3476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmancfg=$dir/syslinux.cfg 3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmancat > $cfg <<EOF 3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman# These default options can be changed in the genliso script 3776d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanSAY gPXE ISO boot image generated by genliso 3876d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanTIMEOUT 30 3976d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEOF 4076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 4176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanfirst= 4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanfor f 4376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmando 4476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman if [ ! -r $f ] 4576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman then 4676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman echo $f does not exist, skipping 1>&2 4776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman continue 4876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman fi 4976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman # shorten name for 8.3 filesystem 5076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman b=$(basename $f) 5176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman g=${b%.lkrn} 5276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman g=${g//[^a-z0-9]} 5376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman g=${g:0:8}.krn 5476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman case "$first" in 5576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman "") 5676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman echo DEFAULT $g 5776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman ;; 5876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman esac 5976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman first=$g 6076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman echo LABEL $b 6176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman echo "" KERNEL $g 6276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman mcopy -m -i $img $f ::$g 6376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmandone >> $cfg 6476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 6576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanmcopy -i $img $cfg ::syslinux.cfg 6676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 6776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanif ! syslinux $img 6876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanthen 6976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman exit 1 7076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanfi 7176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 7276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanmkisofs -q -o $out -c boot.cat -b boot.img $dir 7376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman 7476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanrm -fr $dir 75