diff options
Diffstat (limited to 'helpers/lh_binary_yaboot')
-rwxr-xr-x | helpers/lh_binary_yaboot | 217 |
1 files changed, 217 insertions, 0 deletions
diff --git a/helpers/lh_binary_yaboot b/helpers/lh_binary_yaboot new file mode 100755 index 000000000..f891927fa --- /dev/null +++ b/helpers/lh_binary_yaboot @@ -0,0 +1,217 @@ +#!/bin/sh + +# lh_binary_yaboot(1) - installs yaboot into binary +# Copyright (C) 2006-2007 Daniel Baumann <daniel@debian.org> +# +# live-helper comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +# This is free software, and you are welcome to redistribute it +# under certain conditions; see COPYING for details. + +set -e + +# Source common functions +for FUNCTION in /usr/share/live-helper/functions/*.sh +do + . ${FUNCTION} +done + +# Set static variables +DESCRIPTION="installs yaboot into binary" +HELP="" +USAGE="${PROGRAM} [--force]" + +Arguments "${@}" + +Echo_debug "Init ${PROGRAM}" + +# Reading configuration files +Read_conffile config/bootstrap +Read_conffile config/chroot +Read_conffile config/common +Read_conffile config/image +Set_defaults + +if [ "${LIVE_BOOTLOADER}" != "yaboot" ] +then + exit 0 +fi + +Breakpoint "binary_yaboot: Init" + +# Requiring stage file +Require_stagefile .stage/bootstrap + +# Checking stage file +Check_stagefile .stage/binary_yaboot + +# Checking lock file +Check_lockfile .lock + +# Creating lock file +Create_lockfile .lock + +if [ "${LIVE_ARCHITECTURE}" != "powerpc" ] && [ "${LIVE_ARCHITECTURE}" != "ppc64" ] +then + Echo_warning "skipping binary_yaboot, foreign architecture." + exit 0 +fi + +# Check templates +if [ ! -d "${LIVE_TEMPLATES}" ] +then + if [ -d ../"${LIVE_TEMPLATES}" ] + then + LIVE_TEMPLATES="../${LIVE_TEMPLATES}" + else + Echo_error "user specified templates not accessible in ${LIVE_TEMPLATES}" + exit 1 + fi +fi + +if [ ! -f chroot/usr/lib/yaboot/yaboot ] +then + PACKAGES="${PACKAGES} yaboot" +fi + +if [ -n "${PACKAGES}" ] +then + # Installing symlinks + case "${LH_APT}" in + apt|apt-get) + Chroot "apt-get install --yes ${PACKAGES}" + ;; + + aptitude) + Chroot "aptitude install --assume-yes ${PACKAGES}" + ;; + esac +fi + +# Setting destination directory +case "${LIVE_BINARY_IMAGE}" in + iso) + DESTDIR="binary/live" + ;; + + net|usb|hdd) + Echo_error "not supported, FIXME" + ;; +esac + +# Temporary check for broken yaboot +if [ "${LIVE_BINARY_IMAGE}" = "iso" ] +then + case "${LIVE_ARCHITECTURE}" in + powerpc) + DESTDIR="${DESTDIR}.ppc" + ;; + esac +fi + +# Creating directory +if [ ! -d "${DESTDIR}" ] +then + mkdir -p "${DESTDIR}" +fi + +# Setting boot parameters +if [ -n "${LIVE_ENCRYPTION}" ] +then + LIVE_BOOTAPPEND="${LIVE_BOOTAPPEND} encryption=${LIVE_ENCRYPTION}" +fi + +if [ -n "${LIVE_USERNAME}" ] +then + LIVE_BOOTAPPEND="${LIVE_BOOTAPPEND} username=${LIVE_USERNAME}" +fi + +if [ -n "${LIVE_HOSTNAME}" ] +then + LIVE_BOOTAPPEND="${LIVE_BOOTAPPEND} hostname=${LIVE_HOSTNAME}" +fi + +LIVE_BOOTAPPEND="`echo ${LIVE_BOOTAPPEND} | sed -e 's/ //'`" + +# Assembling kernel configuration +if [ "${LIVE_BINARY_IMAGE}" = "iso" ] +then + DEFAULT_FLAVOUR="`echo ${LIVE_KERNEL_FLAVOUR} | awk '{ print $1 }'`" + LINUX="image=/`basename ${DESTDIR}`/`basename chroot/boot/vmlinuz-*${DEFAULT_FLAVOUR}`\n\tinitrd=/`basename ${DESTDIR}`/initrd.img-`basename chroot/boot/vmlinuz-*${DEFAULT_FLAVOUR} | sed -e 's/vmlinuz-//'`\n\tlabel=LIVE\n\tappend=\"boot=casper LIVE_BOOTAPPEND\"\n\tinitrd-size=1048576\n\tread-only" +else + DEFAULT_FLAVOUR="`echo ${LIVE_KERNEL_FLAVOUR} | awk '{ print $1 }'`" + LINUX="image=`basename chroot/boot/vmlinuz-*${DEFAULT_FLAVOUR}`\n\tinitrd=initrd.img-`basename chroot/boot/vmlinuz-*${DEFAULT_FLAVOUR} | sed -e 's/vmlinuz-//'`\n\tlabel=LIVE\n\tappend=\"boot=casper LIVE_BOOTAPPEND\"\n\tinitrd-size=1048576\n\tread-only" +fi + +# FIXME +if [ "`echo ${LIVE_KERNEL_FLAVOUR} | wc -w`" -gt "1" ] +then + for KERNEL in chroot/boot/vmlinuz* + do + if [ -z "${LINUX}" ] + then + if [ "${LIVE_BINARY_IMAGE}" = "iso" ] + then + LINUX="label LIVE-`basename ${KERNEL} | sed -e 's/vmlinuz-//'`\n kernel /`basename ${DESTDIR}`/`basename ${KERNEL}`\n append initrd=/`basename ${DESTDIR}`/initrd.img-`basename ${KERNEL} | sed -e 's/vmlinuz-//'` boot=casper LIVE_BOOTAPPEND" + else + LINUX="label LIVE-`basename ${KERNEL} | sed -e 's/vmlinuz-//'`\n kernel `basename ${KERNEL}`\n append initrd=initrd.img-`basename ${KERNEL} | sed -e 's/vmlinuz-//'` boot=casper LIVE_BOOTAPPEND" + fi + else + if [ "${LIVE_BINARY_IMAGE}" = "iso" ] + then + LINUX="${LINUX}\nlabel LIVE-`basename ${KERNEL} | sed -e 's/vmlinuz-//'`\n kernel /`basename ${DESTDIR}`/`basename ${KERNEL}`\n append initrd=/`basename ${DESTDIR}`/initrd.img-`basename ${KERNEL} | sed -e 's/vmlinuz-//'` boot=casper LIVE_BOOTAPPEND" + else + LINUX="${LINUX}\nlabel LIVE-`basename ${KERNEL} | sed -e 's/vmlinuz-//'`\n kernel `basename ${KERNEL}`\n append initrd=initrd.img-`basename ${KERNEL} | sed -e 's/vmlinuz-//'` boot=casper LIVE_BOOTAPPEND" + fi + fi + done +fi + +LINUX="`echo ${LINUX} | sed -e 's#//#/#g'`" + +case "${LIVE_BINARY_IMAGE}" in + iso) + # Copying yaboot + mkdir -p binary/install + cp chroot/usr/lib/yaboot/yaboot binary/install + cp -r "${LIVE_TEMPLATES}"/yaboot/* binary/yaboot + + # Configure yaboot templates + sed -i -e "s#LIVE_KERNEL_LIVE#${LINUX}#" -e "s#LIVE_KERNEL_INSTALL#${LIVE_KERNEL_INSTALL}#" -e "s#LIVE_MEMTEST#${MEMTEST}#" binary/install/yaboot.conf + sed -i -e "s#LIVE_BOOTAPPEND#${LIVE_BOOTAPPEND}#" binary/yaboot/yaboot.conf + sed -i -e "s/LIVE_DATE/`date +%Y%m%d`/" -e "s/LIVE_VERSION/${VERSION}/" binary/yaboot/boot.msg + + # Working arround yaboot 8.3 limitation + if [ "`echo ${LIVE_KERNEL_FLAVOUR} | wc -w`" -gt "1" ] + then + for FLAVOUR in ${LIVE_KERNEL_FLAVOUR} + do + NUMBER=$(($NUMBER + 1)) + + mv "${DESTDIR}"/vmlinuz-*-${FLAVOUR} "${DESTDIR}"/vmlinuz${NUMBER} + mv "${DESTDIR}"/initrd.img-*-${FLAVOUR} "${DESTDIR}"/initrd${NUMBER}.img + sed -i -e "s/LIVE.*-${FLAVOUR}/live${NUMBER}/g" -e "s/vmlinuz-.*-${FLAVOUR}/vmlinuz${NUMBER}/g" -e "s/initrd.img-.*-${FLAVOUR}/initrd${NUMBER}.img/g" -e "s/LIVE/live/" binary/install/yaboot.conf + done + else + mv "${DESTDIR}"/vmlinuz-*-${LIVE_KERNEL_FLAVOUR} "${DESTDIR}"/vmlinuz + mv "${DESTDIR}"/initrd.img-*-${LIVE_KERNEL_FLAVOUR} "${DESTDIR}"/initrd.img + sed -i -e "s/LIVE.*-${LIVE_KERNEL_FLAVOUR}/live/g" -e "s/vmlinuz-.*-${LIVE_KERNEL_FLAVOUR}/vmlinuz/g" -e "s/initrd.img-.*-${LIVE_KERNEL_FLAVOUR}/initrd.img/g" -e "s/LIVE/live/" binary/install/yaboot.conf + fi + ;; +esac + +if [ -n "${PACKAGES}" ] +then + # Removing packages + case "${LH_APT}" in + apt|apt-get) + Chroot "apt-get remove --purge --yes ${PACKAGES}" + ;; + + aptitude) + Chroot "aptitude purge --assume-yes ${PACKAGES}" + ;; + esac +fi + +# Creating stage file +Create_stagefile .stage/binary_yaboot |