Chameleon Applications

Chameleon Applications Svn Source Tree

Root/branches/blackosx/trunk/PackageBuilder/Main_Package_Elements/Scripts/MainStandardPostinstall.sh

  • Property svn:executable set to *
1#!/bin/bash
2
3echo "==============================================="
4echo "Main Standard Post-Install Script"
5echo "*********************************"
6echo "-----------------------------------------------"
7echo ""
8
9# Find location of this script in the package installer
10# so we know where all the other scripts are located.
11MYLOCATION="${PWD}/${BASH_ARGV[0]}"
12export MYLOCATION="${MYLOCATION%/*}"
13scriptDir=$MYLOCATION
14
15
16#echo "==============================================="
17#echo "Apple Installer Package Variables"
18#echo "*********************************"
19#echo "DEBUG: $ 1 = Full path to the installation package the installer app is processing: " $1
20#echo "DEBUG: $ 2 = Full path to the installation destination: " $2
21#echo "DEBUG: $ 3 = Installation volume (mountpoint) to receive the payload: " $3
22#echo "DEBUG: $ 4 = Root directory for the system: " $4
23#echo "DEBUG: Script Name: " $SCRIPT_NAME
24#echo "DEBUG: Package Path: " $PACKAGE_PATH
25#echo "DEBUG: Installer Temp: " $INSTALLER_TEMP
26#echo "DEBUG: Full path to the temp directory containing the operation executable: " $RECEIPT_PATH
27#echo "-----------------------------------------------"
28#echo ""
29
30
31
32# Initialise Script Globals
33
34stage0Loader="boot0"
35stage0LoaderDualBoot="boot0hfs"
36stage1LoaderHFS="boot1h"
37stage1LoaderFAT="boot1f32"
38stage2Loader="boot"
39
40targetVolume=$3 #was bootvolume
41targetDevice=$( df "${targetVolume}" | sed -n '2p' | awk '{print $1}' )
42targetDeviceRaw=${targetDevice/disk/rdisk}
43targetDisk=${targetDevice%s*}
44targetDiskRaw=${targetDisk/disk/rdisk}
45targetSlice=${targetDevice#*disk*s}
46#resources="${0%/*}"
47
48
49
50#echo "==============================================="
51#echo "DEBUG: display script variables"
52#echo "*******************************"
53
54#echo "DEBUG: stage0Loader: Disk loader is ${stage0Loader}"
55#echo "DEBUG: stage0LoaderDualBoot: Disk loader is ${stage0LoaderDualBoot}"
56#echo "DEBUG: stage1LoaderHFS: Partition loader is ${stage1LoaderHFS}"
57#echo "DEBUG: stage1LoaderFat: Partition loader is ${stage1LoaderFAT}"
58#echo "DEBUG: stage2Loader: Filesystem loader is ${stage2Loader}"
59#echo "DEBUG: targetVolume: Volume is ${targetVolume}"
60#echo "DEBUG: targetDevice: Volume device is ${targetDevice}"
61#echo "DEBUG: targetDeviceRaw: Volume raw device is ${targetDeviceRaw}"
62#echo "DEBUG: targetDisk: Disk device is ${targetDisk}"
63#echo "DEBUG: targetDiskRaw: Disk raw device is ${targetDiskRaw}"
64#echo "DEBUG: targetSlice: Volume slice is ${targetSlice}"
65#echo "DEBUG: targetResources: Boot Resources is ${targetResources}"
66#echo "-----------------------------------------------"
67#echo ""
68
69
70# Double check we can see the selected partition and it's of the right type
71# if not the following script returns to indicate failure.
72
73"$scriptDir"CheckProceed.sh "${targetVolume}" "${targetDevice}"
74returnValue=$?
75if [ ${returnValue}=0 ]; then
76# OK to proceed
77
78
79# Does a GRUB or Linux loader already exist in the disk's MBR?
80
81"$scriptDir"CheckDiskMicrocodeType.sh "${targetDisk}"
82returnValue=$?
83if [ ${returnValue} = 0 ]; then
84# OK to proceed
85
86
87# check for a 4-byte Windows disk signature in the disk's MBR.
88# the following script returns 1 if a Windows disk signature exists, and 0 if not.
89
90"$scriptDir"CheckDiskSignature.sh "${targetDisk}"
91diskSigCheck=$?
92
93
94# check for existing bootloaders in the disk's MBR
95# and find out if we can write the Chameleon boot files.
96# the following script returns 1 if we can proceed
97# with writing the boot files, and 0 for not.
98
99"$scriptDir"CheckDiskMicrocode.sh "${targetDisk}" "${diskSigCheck}"
100diskupdate=$?
101
102
103# Cancelled this as all it does is read the GPTdiskProtectiveMBR
104# and the GPTdiskGPTHeader and look to see if they're blank
105
106
107#"$scriptDir"FindPartitionBootcode.sh "${targetDeviceRaw}"
108
109
110# check the format of the selected partition.
111# the following script returns 1 if HFS
112# the following script returns 2 if MSDOS
113# the following script returns 0 if nothing
114
115"$scriptDir"CheckFormat.sh "${targetDevice}"
116espformat=$?
117
118
119# check the partition scheme used for the selected disk.
120# the following script returns 1 if GPT
121# the following script returns 2 if GPT/MBR
122# the following script returns 3 if MBR
123# the following script returns 0 if nothing
124
125"$scriptDir"CheckPartitionScheme.sh "${targetDisk}"
126partitionTable=$?
127if [ ${partitionTable} = 3 ]; then
128# If MBR partition scheme then check for FAT16 or FAT32
129
130# the following script returns 1 if FAT16
131# the following script returns 2 if FAT32
132# the following script returns 0 if nothing
133
134"$scriptDir"CheckFatType.sh "${targetDeviceRaw}"
135fatType=$?
136fi
137
138if [ "${fatType}" = 1 ] && [ "${partitionTable}" = 3 ]; then
139echo "ERROR: - Can't install to a device using FAT16"
140# Write error to Chameleon_Error_Log file
141"$scriptDir"WriteInstallerLog.sh "${3}" "${3} is a FAT16 device - Chameleon boot files not written"
142else
143# Continue if the selected device is not a FAT16 format device
144
145# If diskupdate is flagged as 1 then the stage 0 loader can be written to the MBR
146if [ ${diskupdate} = 1 ]; then
147"$scriptDir"WriteChameleonStage0.sh "${diskupdate}" "${diskSigCheck}" "${stage0Loader}" "${stage0LoaderDualBoot}" "${targetDisk}" "${targetVolume}"
148fi
149
150# Write the stage 1 loader to the partition boot sector
151"$scriptDir"WriteChameleonStage1.sh "${espformat}" "${stage1LoaderHFS}" "${stage1LoaderFAT}" "${3}" "${targetDeviceRaw}" "${targetVolume}"
152
153# Write the stage 2 loader to the root of the selected partition
154"$scriptDir"WriteChameleonStage2.sh "${espformat}" "${stage2Loader}" "${3}" "${targetDevice}" "${targetVolume}"
155
156# Set the active partition ONLY if Windows is not installed
157"$scriptDir"SetActivePartition.sh "${espformat}" "${diskSigCheck}" "${targetDiskRaw}" "${targetSlice}" "${targetVolume}"
158fi
159else
160# Write error to Chameleon_Error_Log file
161"$scriptDir"WriteInstallerLog.sh "${targetVolume}" "Error: Target drive has existing GRUB / Linux loader in the MBR - Not sure how to continue"
162fi
163else
164# Write error to Chameleon_Error_Log file
165"$scriptDir"WriteInstallerLog.sh "${targetVolume}" "Error: ${targetVolume} couldn't be found or the disk doesn't use slices"
166fi
167
168exit 0
169

Archive Download this file

Revision: 250