#!/bin/sh # This script sets the boot flag for partitions whose method is # newworld. It removes it for all non-newworld partitions that # have been made bootable by this script. # # It doesn't remove it for all non-newworld partitions: although I # don't know of a reason to make a partition other than Apple_Bootstrap # bootable, removing boot flags might be a bit hostile if there are # cases I don't know about. # # The number of this script (currently 21) must be greater than the # number of the script update.d/bootable (currently 20). . /lib/partman/lib/base.sh dev=$1 num=$2 id=$3 size=$4 type=$5 fs=$6 path=$7 name=$8 cd $dev if [ $fs = free ]; then exit 0 fi method= if [ -f $id/method ]; then method=$(cat $id/method) fi read_flags () { local flag open_dialog GET_FLAGS $1 while { read_line flag; [ "$flag" ]; }; do if [ "$flag" != boot ]; then echo "$flag" fi done close_dialog } if [ "$method" = newworld ] && [ ! -f $id/bootable ]; then flags=$(read_flags $id) open_dialog SET_FLAGS $id write_line "$flags" write_line boot write_line NO_MORE close_dialog >$id/bootable >$id/newworld_bootable elif [ "$method" != newworld ] && [ -f $id/bootable ] && \ [ -f $id/newworld_bootable ]; then flags=$(read_flags $id) open_dialog SET_FLAGS $id write_line "$flags" write_line NO_MORE close_dialog rm $id/bootable rm $id/newworld_bootable fi if [ "$method" != newworld ]; then rm -f $id/newworld_bootable fi