blob: 38ebcc63e000cbbb2a0098f36df70732f628b6e5 (
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
SYSLINUX=$IMGPATH/usr/lib/syslinux/syslinux-nomtools
if [ ! -f $SYSLINUX ]; then
echo "Warning: nomtools syslinux doesn't exist"
SYSLINUX=$IMGPATH/usr/bin/syslinux
if [ ! -f $SYSLINUX ]; then
echo "$SYSLINUX doesn't exist"
exit 1
fi
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 \#cdcfd5=7 \#c90000=2 \#ffffff=15 \#5b6c93=9 > $BOOTDISKDIR/splash.lss
cp $BOOTDISKDIR/splash.lss $MBD_BOOTTREE/splash.lss
rm -f $MBD_BOOTTREE/syslinux-splash.png
rm -f $MBD_BOOTTREE/memtest*
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="ohci-hcd uhci-hcd ehci-hcd hid usb-storage sd_mod sr_mod"
# usb-storage goes on both so we can reload it. *sigh*
LATEUSBMODS="usb-storage"
IDEMODS="ide-cd"
SCSIMODS="sd_mod sg sr_mod st"
FSMODS="msdos vfat ext3 reiserfs jfs xfs"
SECSTAGE="agpgart md raid0 raid1 raid5 dm-mod $FSMODS $IDEMODS $SCSIMODS $LATEUSBMODS st parport_pc parport"
BTERMMODULES="vga16fb"
COMMONMODULES="vfat loop cramfs floppy $USBMODS $BTERMMODULES"
LOCALMODULES="$COMMONMODULES aic7xxx megaraid ncr53c8xx
sym53c8xx $IDEMODS $SCSIMODS"
NETWORKMODULES="$COMMONMODULES nfs 3c59x
e100 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
makeBootImages() {
echo "Building initrd-everything.img"
makeinitrd --initrdto $TOPDESTPATH/images/pxeboot/initrd.img \
--pcmcia \
--initrdsize 8192 \
--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.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
# copy in memtest if present
if [ -f $IMGPATH/usr/lib/anaconda-runtime/boot/memtest* ]; then
cp $IMGPATH/usr/lib/anaconda-runtime/boot/memtest* $MBD_BOOTTREE/memtest
echo -e "label memtest86\n kernel memtest\n append -\n" >> $MBD_BOOTTREE/isolinux.cfg
fi
else
echo "No isolinux binaries. Skipping isolinux creation"
fi
# symlink the kernel for pxe dir
ln $TOPDESTPATH/isolinux/vmlinuz $TOPDESTPATH/images/pxeboot/vmlinuz
# now make a boot iso
mkdir -p $TOPDESTPATH/images/isopath
cp -rl $TOPDESTPATH/isolinux $TOPDESTPATH/images/isopath
mkisofs -o $TOPDESTPATH/images/boot.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -V "$PRODUCT" -T $TOPDESTPATH/images/isopath
rm -rf $TOPDESTPATH/images/isopath
# now make a boot pendrive image
mkdir -p $TOPDESTPATH/images/fobpath
dd if=/dev/zero of=$TOPDESTPATH/images/diskboot.img bs=1M count=6 2>/dev/null
mkdosfs $TOPDESTPATH/images/diskboot.img
$SYSLINUX $TOPDESTPATH/images/diskboot.img
mount -o loop $TOPDESTPATH/images/diskboot.img $TOPDESTPATH/images/fobpath
cp -r $TOPDESTPATH/isolinux/* $TOPDESTPATH/images/fobpath/
mv $TOPDESTPATH/images/fobpath/isolinux.cfg $TOPDESTPATH/images/fobpath/syslinux.cfg
umount -f $TOPDESTPATH/images/fobpath
rmdir $TOPDESTPATH/images/fobpath
}
makeSecondStage() {
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
}
|