# # mk-images.sparc # # Copyright (C) 2008 Tom "spot" Callaway # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # # modules that are needed. this is the generic "needed for every arch" stuff TFTPCOMMONMODS="nfs sunrpc lockd cramfs loop squashfs ipv6" TFTPUSBMODS="ohci-hcd uhci-hcd ehci-hcd hid mousedev usb-storage" TFTPFSMODS="ext2 ext3 ext4dev lock_nolock cifs" INITRDMODS="$USBMODS $FIREWIREMODS $IDEMODS $SCSIMODS $FSMODS $LVMMODS $RAIDMODS $CRYPTOMODS $COMMONMODS $PCMCIASOCKMODS =scsi =net" TFTPINITRDMODS="$TFTPCOMMONMODS $TFTPUSBMODS $IDEMODS $SCSIMODS $TFTPFSMODS $LVMMODS $CRYPTOMODS" SPARCCOMMONMODS="openpromfs sermouse" SPARCSCSIMODS="qlogicpti esp sym53c8xx qlogicisp mptbase mptscsih mptfc mptsas qla2xxx pata_cmd64x pata_ali" SPARCNETMODS="cassini e1000 e1000e sunbmac sungem sunhme sunlance sunqe sunvnet tg3 tulip" SPARCMODS="$SPARCCOMMONMODS $SPARCSCSIMODS $SPARCNETMODS" TILO=$IMGPATH/usr/bin/tilo SILO=$IMGPATH/usr/sbin/silo # This is a disgusting hack. Unfortunately, it's the only way we can get files out of the tftpinitrd without worse hacks. makeproductfile() { root=$1 rm -f $root/.buildstamp echo $IMAGEUUID > $root/.buildstamp echo $PRODUCT >> $root/.buildstamp echo $VERSION >> $root/.buildstamp if [ -n "$BUGURL" ]; then echo $BUGURL >> $root/.buildstamp fi if [ "$AMITFTP" = "1" ]; then rm -rf $root/modules/*/kernel/drivers/isdn/i4l/isdn.ko* rm -rf $root/modules/*/kernel/drivers/isdn/isdnloop/isdnloop.ko* rm -rf $root/modules/*/kernel/drivers/media/common/ir-common.ko* rm -rf $root/modules/*/kernel/drivers/media/video/bt8xx/bttv.ko* rm -rf $root/modules/*/kernel/drivers/media/video/btcx-risc.ko* rm -rf $root/modules/*/kernel/drivers/media/video/v4l1-compat.ko* rm -rf $root/modules/*/kernel/drivers/media/video/videodev.ko* rm -rf $root/modules/*/kernel/drivers/media/video/videobuf-core.ko* rm -rf $root/modules/*/kernel/drivers/media/video/compat_ioctl32.ko* rm -rf $root/modules/*/kernel/drivers/media/video/videobuf-dma-sg.ko* rm -rf $root/modules/*/kernel/drivers/media/video/v4l2-common.ko* rm -rf $root/modules/*/kernel/drivers/media/video/tveeprom.ko* rm -rf $root/modules/*/kernel/drivers/media/common/ir-common.ko* rm -rf $root/modules/*/kernel/drivers/media/dvb/bt8xx/bt878.ko* rm -rf $root/modules/*/kernel/drivers/media/dvb/bt8xx/dst.ko* rm -rf $root/modules/*/kernel/drivers/media/dvb/dvb-core/dvb-core.ko* rm -rf $root/firmware/ql2100_fw.bin rm -rf $root/firmware/ql2300_fw.bin rm -rf $root/firmware/ql2322_fw.bin rm -rf $root/firmware/ql2400_fw.bin rm -rf $root/firmware/ql2400_fw.bin_mid fi } maketftp() { while [ x$(echo $1 | cut -c1-2) = x"--" ]; do if [ $1 = "--kernel" ]; then TFTPKERNEL=$2 shift; shift continue elif [ $1 = "--initrdfrom" ]; then TFTPINITRD=$2 shift; shift continue elif [ $1 = "--imagename" ]; then TFTPIMAGE=$2 shift; shift continue elif [ $1 = "--systemmap" ]; then TFTPSYSMAP=$2 shift; shift continue fi echo "bad argument $1 passed to maketftp" exit 1 done echo "Making a $KERNELARCH tftp image: $TFTPIMAGE" elftoaout $TFTPKERNEL -o $TFTPIMAGE if [ "$KERNELARCH" = "sparc" ]; then piggyback $TFTPIMAGE $TFTPSYSMAP $TFTPINITRD elif [ "$KERNELARCH" = "sparc64" ]; then piggyback64 $TFTPIMAGE $TFTPSYSMAP $TFTPINITRD fi } prepareBootTree() { echo "sparc: prepareBootTree() is called" (cd $BOOTDISKDIR; find . -maxdepth 1 ! -type d | cpio --quiet -p $MBD_BOOTTREE) cp $MBD_FSIMAGE $MBD_BOOTTREE/initrd.img cp $KERNELROOT/boot/vmlinuz-* $MBD_BOOTTREE/vmlinuz cp $KERNELROOT/boot/System.map-* $MBD_BOOTTREE/System.map } makeBootImages() { echo "Building boot images for kernel $kernelvers.$KERNELARCH" echo "Building initrd.img" export AMITFTP=0 makeinitrd --initrdto $TOPDESTPATH/images/initrd.img \ --initrdsize 8192 \ --loaderbin loader \ --modules "$INITRDMODS $SPARCMODS" [ $? = 0 ] || exit 1 echo "Building special tftpinitrd.img" export AMITFTP=1 makeinitrd --initrdto $TOPDESTPATH/images/tftpinitrd.img \ --initrdsize 8192 \ --loaderbin loader \ --modules "$TFTPINITRDMODS $SPARCMODS" [ $? = 0 ] || exit 1 if [ -f $IMGPATH/usr/lib/anaconda-runtime/boot/second.b ]; then echo "Building boot dir for silo" MBD_BOOTTREE=$TOPDESTPATH/boot MBD_FSIMAGE=$TOPDESTPATH/images/initrd.img mkdir $MBD_BOOTTREE cp $IMGPATH/usr/lib/anaconda-runtime/boot/*.b $MBD_BOOTTREE/ prepareBootTree maketftp --kernel $MBD_BOOTTREE/vmlinuz \ --imagename $TOPDESTPATH/images/tftp.img \ --initrdfrom $TOPDESTPATH/images/tftpinitrd.img \ --systemmap $MBD_BOOTTREE/System.map echo "Deleting $TOPDESTPATH/images/tftpinitrd.img , we only want this for the tftp image creation" # rm -rf $TOPDESTPATH/images/tftpinitrd.img else echo "I can't find SILO in $IMGPATH/usr/lib/anaconda-runtime/boot ?!?" exit 1 fi } doPostImages() { if [ -n "$BOOTISO" ]; then echo "Making $BOOTISO" mkisofs -R -J -T \ -G /boot/isofs.b \ -B ... \ -s /boot/silo.conf \ -r -V "PBOOT" -A "$PRODUCT $VERSION" \ -x Fedora \ -x repodata \ -sparc-label "$PRODUCT $VERSION Boot Disc" \ -o $TOPDESTPATH/images/$BOOTISO -graft-points \ boot=$TOPDESTPATH/boot images/stage2.img=$TOPDESTPATH/images/stage2.img fi }