summaryrefslogtreecommitdiffstats
path: root/scripts/mk-images.x86_64
blob: a70fc65cc8a0ae0ecee47e68c5fbfb1e06c05f56 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
SYSLINUX=$IMGPATH/usr/bin/syslinux

if [ ! -f $SYSLINUX ]; then
    echo "$SYSLINUX doesn't exist"
    exit 1
fi

# prepare a directory with the kernel, initrd, and various message files
# used to populate a boot image
prepareBootTree() {
	(cd $BOOTDISKDIR; find . ! -name "*.msg" -maxdepth 1 ! -type d | cpio --quiet -p $MBD_BOOTTREE)
	
	cp $MBD_FSIMAGE $MBD_BOOTTREE/initrd.img
	cp $KERNELROOT/boot/vmlinuz-* $MBD_BOOTTREE/vmlinuz
	pngtopnm $BOOTDISKDIR/syslinux-splash.png | ppmtolss16 \#000000=0 \#c4c7ce=7 \#c60000=2 \#ffffff=15 \#7790c2=9 > $BOOTDISKDIR/splash.lss
	cp $BOOTDISKDIR/splash.lss $MBD_BOOTTREE/splash.lss
	rm -f $MBD_BOOTTREE/syslinux-splash.png
	for file in $BOOTDISKDIR/*.msg; do
	    filename=`basename $file`
	    sed -e "s/@VERSION@/$VERSION/g" $file > $MBD_BOOTTREE/$filename
	done
	if [ $? != 0 ]; then
	    echo $0: Failed to copy messages from $BOOTDISKDIR to $MBD_BOOTTREE.
	    umount $MBD_BOOTTREE
	    rm -rf $MBD_BOOTTREE $MBD_TMPIMAGE
	    exit 1
	fi
}


# LATEUSBMODS go in the second stage.  
# FIXME: bleah, have to include sd_mod for usb-storage
USBMODS="usb-ohci usb-uhci hid keybdev usb-storage sd_mod"
# usb-storage goes on both so we can reload it.  *sigh*
LATEUSBMODS="mousedev usb-storage"
IDEMODS=""
SCSIMODS="sd_mod sr_mod"

FSMODS="msdos vfat ext3 reiserfs"
SECSTAGE="agpgart raid0 raid1 raid5 lvm-mod $FSMODS $IDEMODS $SCSIMODS $LATEUSBMODS st parport_pc parport"

COMMONMODULES="vfat loop $USBMODS"
LOCALMODULES="$COMMONMODULES aic7xxx megaraid ncr53c8xx 
	     sym53c8xx $IDEMODS $SCSIMODS"
NETWORKMODULES="$COMMONMODULES nfs 3c59x 
	       eepro100 tulip pcnet32 8139too"
#	       sis900 e100 hp100 natsemi"

PCMCIAMAINMODULES="$COMMONMODULES nfs $IDEMODS $SCSIMODS"

# images we only want on the CD (usually for space reasons)
ISOLINUXMODULES="ehci-hcd ieee1394 ohci1394 sbp2"

mkdir -p $TOPDESTPATH/images/pxeboot

# XXX hack hack
PCMCIAMODULES_EXCLUDED="
	apa1480_cb
	iflash2+_mtd
	iflash2_mtd
	memory_cb
	memory_cs
	parport_cs
	parport_pc
	parport
	serial_cs
	serial_cb
	sram_mtd
        aironet4500_cs
        orinoco_cs
        orinoco
        orinoco_old_cs
        wavelan_cs
        wvlan_cs
"
PCMCIAMODULES_EXCLUDED_SED="sed"
for m in $PCMCIAMODULES_EXCLUDED
do
   PCMCIAMODULES_EXCLUDED_SED="$PCMCIAMODULES_EXCLUDED_SED -e 's/$m//g'"
done
PCMCIAMODULES=`echo $PCMCIAMODULES | eval "$PCMCIAMODULES_EXCLUDED_SED"`

mkdir -p $TOPDESTPATH/images/pxeboot

echo "Building initrd-everything.img"
makeinitrd --initrdto $TOPDESTPATH/images/pxeboot/initrd-everything.img \
	   --pcmcia \
	   --initrdsize 5000 \
	   --loaderbin loader \
	   --modules "$LOCALMODULES $NETWORKMODULES $PCMCIAMAINMODULES $PCMCIAMODULES $ISOLINUXMODULES =scsi =net"
[ $? = 0 ] || exit 1

if [ -f $IMGPATH/usr/lib/syslinux/isolinux.bin ]; then
	echo "Building isolinux directory"
	MBD_BOOTTREE=$TOPDESTPATH/isolinux
	MBD_FSIMAGE=$TOPDESTPATH/images/pxeboot/initrd-everything.img
	mkdir $MBD_BOOTTREE
	cp $IMGPATH/usr/lib/syslinux/isolinux.bin $MBD_BOOTTREE/isolinux.bin

	prepareBootTree

	# isolinux needs the config file to be isolinux.cfg
	mv $MBD_BOOTTREE/syslinux.cfg $MBD_BOOTTREE/isolinux.cfg
else
	echo "No isolinux binaries.  Skipping isolinux creation"
fi

echo "Building main moduleball"
makemainmodules "=scsi =net $SECSTAGE"
[ $? = 0 ] || exit 1

echo "Building netstg.img"
makeinstimage "netstg" "=scsi $SECSTAGE"
[ $? = 0 ] || exit 1
echo "Building hdstg.img"
makeinstimage "hdstg" "=net $SECSTAGE"
[ $? = 0 ] || exit 1
echo "Building stage2.img"
makemainimage "stage2" "cramfs"
[ $? = 0 ] || exit 1