xref: /freebsd/release/powerpc/mkisoimages.sh (revision 4d7174b1d91ff3651ef78987d93989a40a4facd2)
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