qubes-installer-qubes-os/scripts/mk-images.sparc
2011-01-18 04:24:57 -05:00

173 lines
5.9 KiB
Plaintext

#
# mk-images.sparc
#
# Copyright (C) 2008 Tom "spot" Callaway <tcallawa@redhat.com>
#
# 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 <http://www.gnu.org/licenses/>.
#
# 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
}