[Casper] Upgrading from Tiger to Leopard
David Lundgren
david.lundgren at brooks.edu
Fri Jan 9 18:15:11 PST 2009
Thank you all for your help, ideas and definitely the script. I was going to
use python for the scripting part as my netinstall is leopard, but I'll just
modify yours as needed for our setup. If I refactor the script I'll shoot it
back to the list.
I ran into the same problem as a others saw with the symlink'd /Users when
installing CS4, it didn't like symlinks. So I setup the fstab on Leopard
(using vifs) and it worked for the CS4 install.
Thanks
Dave
On 1/9/09 5:15 AM, "Daniel Farnworth"
<daniel.farnworth at thecreativepartnership.co.uk> wrote:
> He he, thought that'd be popular.
>
> The script is fairly poorly written (I'm not a Bash wiz) so any
> improvements are welcome (please let me have any so I can improve mine).
>
> We run it as a 'before' script during our imaging process and it
> takes a look at the internal disks, tries to figure out which is the
> system disk or otherwise the disk in the first bay (Mac Pros only I
> think) and then partitions it up into various volumes that we want.
> Our post-flight script then takes the names of these and builds an
> fstab file which it writes down to /etc. It also moves our admin
> user's ('lwsadmin' in the script) home directory to /var/homes. We
> figured this may be wise just in case the data partition goes dead
> for any reason. Our OS image is pre-confd with lwsadmin's home
> pointing at the correct location, so you may want to excise this
> section and rely on using root to login in bad circumstances.
>
> Oh, the post script also 'hides' some of the partitions (Restore,
> Freespace etc) so they don't show on the desktop, check the resulting
> fstab to see how this is done.
>
> Be careful using this, it is destructive. Usual disclaimers apply =)
>
> ### Pre-install Partition Script
>
> #!/bin/bash -v
>
> exec 2>&1
>
> function rawdisksize {
> FLOAT=$1
> INT1=${FLOAT/.*}
> #if $(( INT1 % 10 )) then
> while (( INT1 % 10 ))
> do
> let INT1++
> done
> #fi
> echo "$INT1"
> }
>
>
> function partitionsizes {
>
> case $RAW_SIZE in
>
> 30)
> INTHD_SIZE=15
> HOMES_SIZE=10
> SCRATCH_SIZE=3
> RESTORE_SIZE=0
> ;;
>
> 40)
> INTHD_SIZE=20
> HOMES_SIZE=10
> SCRATCH_SIZE=5
> RESTORE_SIZE=0
> ;;
>
> 60)
> INTHD_SIZE=30
> HOMES_SIZE=10
> SCRATCH_SIZE=10
> RESTORE_SIZE=5
> ;;
>
> 80)
> INTHD_SIZE=40
> HOMES_SIZE=10
> SCRATCH_SIZE=10
> RESTORE_SIZE=10
> ;;
>
> 120)
> INTHD_SIZE=60
> HOMES_SIZE=20
> SCRATCH_SIZE=10
> RESTORE_SIZE=20
> ;;
>
> 160)
> INTHD_SIZE=80
> HOMES_SIZE=25
> SCRATCH_SIZE=10
> RESTORE_SIZE=25
> ;;
>
> 240)
> INTHD_SIZE=160
> HOMES_SIZE=25
> SCRATCH_SIZE=10
> RESTORE_SIZE=25
> ;;
>
> *)
> INTHD_SIZE=$(( ($RAW_SIZE / 100) * 66 ))
> HOMES_SIZE=$(( ($RAW_SIZE / 100) * 11 ))
> SCRATCH_SIZE=$(( ($RAW_SIZE / 100) * 11 ))
> RESTORE_SIZE=$(( ($RAW_SIZE / 100) * 11 ))
> ;;
> esac
>
> }
>
>
> # Define a function to define whether this is a 'Bay Capable' machine
> #function bayedmachine {
>
> # This needs to be written fairly soon
>
> #}
>
>
> if [ ! -e /Volumes/CP-IntHD-01/.cp-partition-done ]; then
>
> echo ${1}
> TARGETDISK=`diskutil info ${1} | grep "Device Identifier:" | awk
> '{ print $3 }' | cut -c 1-5`
> echo ${TARGETDISK}
>
> # now to partition the disk
> #
>
> if [ ! -z $TARGETDISK ]
> then
> TOTAL_SIZE=`diskutil info $TARGETDISK | grep "Total Size" |
> awk
> '{ print $3 }'`
> RAW_SIZE=$(rawdisksize $TOTAL_SIZE)
> partitionsizes
>
> echo "Total size of $TARGETDISK: $TOTAL_SIZE GB"
> echo "Raw size of $TARGETDISK: $RAW_SIZE GB"
> echo "CP-IntHD-01 Size: $INTHD_SIZE GB"
> echo "CP-Homes-01 Size: $HOMES_SIZE GB"
> echo "CP-Scratch-NOT-BackedUp Size: $SCRATCH_SIZE GB"
> echo "Restore Size: $RESTORE_SIZE GB"
>
>
> # Check processor type so we partition in the right format
>
> sysinfo=`system_profiler`
>
> countPPC=`echo ${sysinfo} | grep -c PowerPC`
> countIntel=`echo ${sysinfo} | grep -c Intel`
>
> if [ ${countPPC} -ge 1 -a ${countIntel} -eq 0 ]; then
> echo "Got a PPC in here"
> partition_scheme_type="APMFormat"
>
> elif [ ${countIntel} -ge 1 -a ${countPPC} -eq 0 ]; then
> echo "Intel Inside"
> partition_scheme_type="GPTFormat"
>
> else
> echo "Can't work out what kinda proc, it either ain't
> got one or
> could be a Cray?"
> exit 1
>
> fi
>
>
> # Set the partition going
>
> if [ $RESTORE_SIZE -gt 0 ]; then
>
> diskutil partitionDisk $TARGETDISK 4
> $partition_scheme_type \
> "Journaled HFS+" CP-IntHD-01 "$INTHD_SIZE"G \
> "Journaled HFS+" CP-Homes-01 "$HOMES_SIZE"G \
> "Journaled HFS+" CP-Scratch-NOT-BackedUp
> "$SCRATCH_SIZE"G \
> "Journaled HFS+" Restore "$RESTORE_SIZE"G
>
> else
>
> diskutil partitionDisk $TARGETDISK 3
> $partition_scheme_type \
> "Journaled HFS+" CP-IntHD-01 "$INTHD_SIZE"G \
> "Journaled HFS+" CP-Homes-01 "$HOMES_SIZE"G \
> "Journaled HFS+" CP-Scratch-NOT-BackedUp
> "$SCRATCH_SIZE"G
>
> fi
>
>
> chown root:admin /Volumes/CP-Homes-01
> chown root:admin /Volumes/CP-Scratch-NOT-BackedUp
> chown root:admin /Volumes/Restore
> chown root:admin /Volumes/Free-Space
>
> chmod g+w /Volumes/CP-Homes-01
> chmod g+w /Volumes/CP-Scratch-NOT-BackedUp
> chmod g+w /Volumes/Restore
> chmod g+w /Volumes/Free-Space
>
> touch /Volumes/CP-IntHD-01/.cp-partition-done
>
> else
>
> echo "Problem acquiring target disk, exiting";
> exit 1
>
> fi
>
> else
>
> echo "The partition scheme has already been created. Exiting"
> exit 0
>
> fi
>
> exit 0
>
>
> ### Post Install Script
>
> #!/bin/bash -v
>
> # Redirect STDERR to STDOUT
> exec 2>&1
>
> VOLSDIR="/Volumes/"
>
> ROOTVOL="CP-IntHD-01"
> HOMESVOL="CP-Homes-01"
>
> ROOTPATH="${VOLSDIR}${ROOTVOL}"
> HOMESPATH="${VOLSDIR}${HOMESVOL}"
>
>
>
>
> if [ -e "${1}/.cp-partition-done" ]; then
>
> # Ditto the contents of $ROOTPART/Users/Shared to their new location
>
> ditto -v "${1}/Users/Shared" "${HOMESPATH}/Shared"
> if (( ! $? )); then
>
> # Remove the old copy of $ROOTPART/Users/Shared
> echo "Done dittoing..."
> rm -vR "${1}/Users/Shared" || { echo "rm /Users/Shared failed"
> ; }
> rm -v "${1}/Users/.DS_Store" || { echo "rm /Users/.DS_Store
> failed" ; }
> rm -v "${1}/Users/.localized" || { echo "rm /Users/.localized
> failed" ; }
>
> if [ -e "${1}/var/homes/lwsadmin" ]; then
> rm -vR "${1}/Users/lwsadmin" || { echo "rm
> /Users/lwsadmin
> failed" ; }
> fi
>
> DEVID=`diskutil list | grep $HOMESVOL | awk '{print $6}'`
> UUID=`diskutil info $DEVID | grep UUID | /usr/bin/awk {'print
> $2'}`
> echo "# Remap the $HOMESPATH to /Users" >> $1/etc/fstab || {
> echo
> "'fstab' Stage 1 failed: $HOMESPATH" ; exit 1 ; }
> echo -e "UUID=${UUID}\t/Users\thfs\trw,nobrowse\t1\t1\n" >>
> $1/etc/
> fstab || { echo "'fstab' Stage 2 failed: $HOMESPATH" ; exit 1 ; }
>
> HIDDEN_VOLS=(Restore Free-Space)
>
> for volume in "${HIDDEN_VOLS[@]}"; do
>
> DEVID=`diskutil list | grep $volume | awk '{print
> $6}'`
> UUID=`diskutil info $DEVID | grep UUID | /usr/bin/awk
> {'print $2'}`
>
> echo "# Set the volume $volume to not mount at
> startup" >> $1/etc/
> fstab || { echo "'fstab' Stage 3 ($volume) failed: $volume" ; exit 1 ; }
> echo -e "UUID=${UUID}\tnone\thfs\trw,noauto\t1\t1\n"
> >> $1/etc/
> fstab || { echo "'fstab' Stage 4 ($volume) failed: $UUID" ; exit 1 ; }
>
> done
>
> fi
>
> touch "${1}/.cp-user-migration-done" || { echo "Task completion file
> could not be created" ; exit 1 ; }
>
> exit 0
>
> else
> # Log the error
> echo "Could not find partition completion file. It would be wise not
> to continue"
> # Exit with above 0 status
> exit 1
>
> fi
>
>
>
>
>
>
> On 9 Jan 2009, at 12:44, Damien Weiss wrote:
>
>>
>> YES!!!!! PLEASE!!!! Send that script on. That's something that I
>> would implement almost immediately.
>>
>> Thanks!
>> Damien
>>
>> On Jan 9, 2009, at 7:19 AM, Daniel Farnworth wrote:
>>
>>> I have a pre-
>>> install script that we use to do this for us if anyone is interested.
>>>
>>> Cheers
>>> Dan
>>
>
> --
> Daniel Farnworth
> IT Manager
> The Creative Partnership
> daniel.farnworth at thecreativepartnership.co.uk
>
> http://www.thecreativepartnership.co.uk
> Tel: +44 (0)20 7439 7762
> Fax: +44 (0)20 7437 1467
>
> PGP Public Key available
>
>
>
>
>
>
> The information contained in this communication is intended solely for the use
> of the individual or entity to whom it is addressed and others authorised to
> receive it. It may contain confidential or legally privileged information. If
> you are not the intended recipient you are hereby notified that any
> disclosure, copying, distribution or taking any action in reliance on the
> contents of this information is strictly prohibited and may be unlawful. If
> you have received this communication in error, please notify
> postmaster at thecreativepartnership.co.uk immediately and then delete this email
> from your system. Any views or opinions presented in this email are solely
> those of the author and do not necessarily represent those of The Creative
> Partnership. The Creative Partnership has taken every reasonable precaution to
> ensure that any attachment to this e-mail has been swept for viruses. However,
> The Creative Partnership cannot accept liability for any damage sustained as a
> result of software viruses and would advise that you carry out your own virus
> checks before opening any attachment.
>
> _______________________________________________
> Casper mailing list
> Casper at list.jamfsoftware.com
> http://list.jamfsoftware.com/mailman/listinfo/casper
--
David Lundgren
IT Systems Administrator
Brooks Institute - "Passion, Vision, Excellence"
27 East Cota Street
Santa Barbara, CA 93101
(888) 304-3456 (toll-free)
(805) 690-7615 (office)
http://www.brooks.edu
More information about the Casper
mailing list