13f11b7d1SPeter Grehan#!/bin/sh 23f11b7d1SPeter Grehan# 33f11b7d1SPeter Grehan# Module: mkisoimages.sh 43f11b7d1SPeter Grehan# Author: Jordan K Hubbard 53f11b7d1SPeter Grehan# Date: 22 June 2001 63f11b7d1SPeter Grehan# 73f11b7d1SPeter Grehan# 83f11b7d1SPeter Grehan# This script is used by release/Makefile to build the (optional) ISO images 93f11b7d1SPeter Grehan# for a FreeBSD release. It is considered architecture dependent since each 103f11b7d1SPeter Grehan# platform has a slightly unique way of making bootable CDs. This script 113f11b7d1SPeter Grehan# is also allowed to generate any number of images since that is more of 123f11b7d1SPeter Grehan# publishing decision than anything else. 133f11b7d1SPeter Grehan# 143f11b7d1SPeter Grehan# Usage: 153f11b7d1SPeter Grehan# 163f11b7d1SPeter Grehan# mkisoimages.sh [-b] image-label image-name base-bits-dir [extra-bits-dir] 173f11b7d1SPeter Grehan# 183f11b7d1SPeter Grehan# Where -b is passed if the ISO image should be made "bootable" by 193f11b7d1SPeter Grehan# whatever standards this architecture supports (may be unsupported), 203f11b7d1SPeter Grehan# image-label is the ISO image label, image-name is the filename of the 213f11b7d1SPeter Grehan# resulting ISO image, base-bits-dir contains the image contents and 223f11b7d1SPeter Grehan# extra-bits-dir, if provided, contains additional files to be merged 233f11b7d1SPeter Grehan# into base-bits-dir as part of making the image. 243f11b7d1SPeter Grehan 25a7d9306aSEd Masteset -e 269fb36b5eSNathan Whitehorn 2793cf995aSEd Masteif [ "$1" = "-b" ]; then 2813cb0041SJessica Clarke MAKEFSARG="$4" 2913cb0041SJessica Clarkeelse 3013cb0041SJessica Clarke MAKEFSARG="$3" 3113cb0041SJessica Clarkefi 3213cb0041SJessica Clarke 3313cb0041SJessica Clarkeif [ -f ${MAKEFSARG} ]; then 3413cb0041SJessica Clarke BASEBITSDIR=`dirname ${MAKEFSARG}` 3513cb0041SJessica Clarke METALOG=${MAKEFSARG} 3613cb0041SJessica Clarkeelif [ -d ${MAKEFSARG} ]; then 3713cb0041SJessica Clarke BASEBITSDIR=${MAKEFSARG} 3813cb0041SJessica Clarke METALOG= 3913cb0041SJessica Clarkeelse 4013cb0041SJessica Clarke echo "${MAKEFSARG} must exist" 4113cb0041SJessica Clarke exit 1 4213cb0041SJessica Clarkefi 4313cb0041SJessica Clarke 4413cb0041SJessica Clarkeif [ "$1" = "-b" ]; then 459fb36b5eSNathan Whitehorn bootable=1 463f11b7d1SPeter Grehan shift 473f11b7d1SPeter Grehanelse 483f11b7d1SPeter Grehan bootable="" 493f11b7d1SPeter Grehanfi 503f11b7d1SPeter Grehan 513f11b7d1SPeter Grehanif [ $# -lt 3 ]; then 5227065039SDevin Teske echo "Usage: $0 [-b] image-label image-name base-bits-dir [extra-bits-dir]" 533f11b7d1SPeter Grehan exit 1 543f11b7d1SPeter Grehanfi 553f11b7d1SPeter Grehan 5627065039SDevin TeskeLABEL=`echo "$1" | tr '[:lower:]' '[:upper:]'`; shift 5727065039SDevin TeskeNAME="$1"; shift 5813cb0041SJessica Clarke# MAKEFSARG extracted already 5913cb0041SJessica Clarkeshift 6013cb0041SJessica Clarke 6113cb0041SJessica Clarkeif [ -n "${METALOG}" ]; then 6213cb0041SJessica Clarke metalogfilename=$(mktemp /tmp/metalog.XXXXXX) 6313cb0041SJessica Clarke cat ${METALOG} > ${metalogfilename} 6413cb0041SJessica Clarke MAKEFSARG=${metalogfilename} 6513cb0041SJessica Clarkefi 663f11b7d1SPeter Grehan 679fb36b5eSNathan Whitehornif [ -n "$bootable" ]; then 689fb36b5eSNathan Whitehorn echo "Building bootable disc" 699fb36b5eSNathan Whitehorn 706c3e01bfSColin Percival BOOTBLOCK=$(mktemp /tmp/hfs-boot-block.XXXXXX) 719fb36b5eSNathan Whitehorn 726c3e01bfSColin Percival # Apple boot code 73*4d7174b1SColin Percival uudecode -p "`dirname "$0"`/hfs-boot.bz2.uu" | bunzip2 > $BOOTBLOCK 746c3e01bfSColin Percival OFFSET=$(hd $BOOTBLOCK | grep 'Loader START' | cut -f 1 -d ' ') 756c3e01bfSColin Percival OFFSET=0x$(echo 0x$OFFSET | awk '{printf("%x\n",$1/512);}') 766c3e01bfSColin Percival dd if="$BASEBITSDIR/boot/loader" of=$BOOTBLOCK seek=$OFFSET conv=notrunc 776c3e01bfSColin Percival 786c3e01bfSColin Percival bootable="-o bootimage=macppc;$BOOTBLOCK -o no-emul-boot" 799fb36b5eSNathan Whitehorn 809fb36b5eSNathan Whitehorn # pSeries/PAPR boot code 8113cb0041SJessica Clarke mkdir -p "$BASEBITSDIR/ppc/chrp" 8213cb0041SJessica Clarke cp "$BASEBITSDIR/boot/loader" "$BASEBITSDIR/ppc/chrp" 8313cb0041SJessica Clarke cat > "$BASEBITSDIR/ppc/bootinfo.txt" << EOF 849fb36b5eSNathan Whitehorn<chrp-boot> 859fb36b5eSNathan Whitehorn<description>FreeBSD Install</description> 869fb36b5eSNathan Whitehorn<os-name>FreeBSD</os-name> 879fb36b5eSNathan Whitehorn<boot-script>boot &device;:,\ppc\chrp\loader</boot-script> 889fb36b5eSNathan Whitehorn</chrp-boot> 899fb36b5eSNathan WhitehornEOF 909fb36b5eSNathan Whitehorn bootable="$bootable -o chrp-boot" 9113cb0041SJessica Clarke if [ -n "${METALOG}" ]; then 9213cb0041SJessica Clarke echo "./ppc type=dir uname=root gname=wheel mode=0755" >> ${metalogfilename} 9313cb0041SJessica Clarke echo "./ppc/chrp type=dir uname=root gname=wheel mode=0755" >> ${metalogfilename} 9413cb0041SJessica Clarke echo "./ppc/chrp/loader type=file uname=root gname=wheel mode=0644" >> ${metalogfilename} 9513cb0041SJessica Clarke echo "./ppc/bootinfo.txt type=file uname=root gname=wheel mode=0644" >> ${metalogfilename} 9613cb0041SJessica Clarke fi 979fb36b5eSNathan Whitehorn 989fb36b5eSNathan Whitehorn # Petitboot config for PS3/PowerNV 9913cb0041SJessica Clarke echo FreeBSD Install=\'/boot/kernel/kernel vfs.root.mountfrom=cd9660:/dev/iso9660/$LABEL\' > "$BASEBITSDIR/etc/kboot.conf" 10013cb0041SJessica Clarke if [ -n "${METALOG}" ]; then 10113cb0041SJessica Clarke echo "./etc/kboot.conf type=file uname=root gname=wheel mode=0644" >> ${metalogfilename} 10213cb0041SJessica Clarke fi 1039fb36b5eSNathan Whitehornfi 1049fb36b5eSNathan Whitehorn 105a2aef24aSEitan Adlerpublisher="The FreeBSD Project. https://www.FreeBSD.org/" 10613cb0041SJessica Clarkeecho "/dev/iso9660/$LABEL / cd9660 ro 0 0" > "$BASEBITSDIR/etc/fstab" 10713cb0041SJessica Clarkeif [ -n "${METALOG}" ]; then 10813cb0041SJessica Clarke echo "./etc/fstab type=file uname=root gname=wheel mode=0644" >> ${metalogfilename} 10913cb0041SJessica Clarkefi 1101a9b1c36SJessica Clarkemakefs -D -N ${BASEBITSDIR}/etc -t cd9660 $bootable -o rockridge -o label="$LABEL" -o publisher="$publisher" "$NAME" "$MAKEFSARG" "$@" 11113cb0041SJessica Clarkerm -f "$BASEBITSDIR/etc/fstab" 1126c3e01bfSColin Percivalif [ n "$bootable" ]; then 1136c3e01bfSColin Percival rm $BOOTBLOCK 1146c3e01bfSColin Percivalfi 11513cb0041SJessica Clarkerm -rf "$BASEBITSDIR/ppc" 11613cb0041SJessica Clarkeif [ -n "${METALOG}" ]; then 11713cb0041SJessica Clarke rm ${metalogfilename} 11813cb0041SJessica Clarkefi 119