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" #diskloader
35stage0LoaderDualBoot="boot0hfs" #was stage0Loaderdualboot
36stage1LoaderHFS="boot1h" #was stage1LoaderHFS
37stage1LoaderFAT="boot1f32" #was partitionloaderfat
38stage2Loader="boot" #was filesystemloader
39
40targetVolume=$3 #was bootvolume
41targetDevice=$( df "${targetVolume}" | sed -n '2p' | awk '{print $1}' ) #was bootdev
42targetDeviceRaw=${targetDevice/disk/rdisk} #was bootrdev
43targetDisk=${targetDevice%s*} #was bootdisk
44targetDiskRaw=${targetDisk/disk/rdisk} #was bootrdisk
45targetSlice=${targetDevice#*disk*s} #was bootslice
46targetResources="${targetVolume%/*}" #was bootresources - is this needed?
47
48
49
50echo "==============================================="
51echo "DEBUG: display script variables"
52echo "***************************"
53
54echo "DEBUG: stage0Loader: Disk loader is ${stage0Loader}"
55echo "DEBUG: stage0LoaderDualBoot: Disk loader is ${stage0LoaderDualBoot}"
56echo "DEBUG: stage1LoaderHFS: Partition loader is ${stage1LoaderHFS}"
57echo "DEBUG: stage1LoaderFat: Partition loader is ${stage1LoaderFAT}"
58echo "DEBUG: stage2Loader: Filesystem loader is ${stage2Loader}"
59echo "DEBUG: targetVolume: Volume is ${targetVolume}"
60echo "DEBUG: targetDevice: Volume device is ${targetDevice}"
61echo "DEBUG: targetDeviceRaw: Volume raw device is ${targetDeviceRaw}"
62echo "DEBUG: targetDisk: Disk device is ${targetDisk}"
63echo "DEBUG: targetDiskRaw: Disk raw device is ${targetDiskRaw}"
64echo "DEBUG: targetSlice: Volume slice is ${targetSlice}"
65echo "DEBUG: targetResources: Boot Resources is ${targetResources}"
66echo "-----------------------------------------------"
67echo ""
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"
140else
141# Continue if the selected device is not a FAT16 format device
142
143# If diskupdate is flagged as 1 then the stage 0 loader can be written to the MBR
144if [ ${diskupdate} = 1 ]; then
145"$scriptDir"WriteChameleonStage0.sh "${diskupdate}" "${diskSigCheck}" "${stage0Loader}" "${stage0LoaderDualBoot}" "${targetDisk}" "${targetVolume}"
146fi
147
148# Write the stage 1 loader to the partition boot sector
149"$scriptDir"WriteChameleonStage1.sh "${espformat}" "${stage1LoaderHFS}" "${stage1LoaderFAT}" "${3}" "${targetDeviceRaw}" "${targetVolume}"
150
151# Write the stage 2 loader to the root of the selected partition
152"$scriptDir"WriteChameleonStage2.sh "${espformat}" "${stage2Loader}" "${3}" "${targetDevice}" "${targetVolume}"
153
154# Set the active partition ONLY if Windows is not installed
155"$scriptDir"SetActivePartition.sh "${espformat}" "${diskSigCheck}" "${targetDiskRaw}" "${targetSlice}" "${targetVolume}"
156fi
157
158fi
159fi
160
161exit 0
162

Archive Download this file

Revision: 235