summaryrefslogtreecommitdiff
path: root/draft/other-tools/fog/fog-notes.txt
diff options
context:
space:
mode:
Diffstat (limited to 'draft/other-tools/fog/fog-notes.txt')
-rw-r--r--draft/other-tools/fog/fog-notes.txt148
1 files changed, 148 insertions, 0 deletions
diff --git a/draft/other-tools/fog/fog-notes.txt b/draft/other-tools/fog/fog-notes.txt
new file mode 100644
index 0000000..61a7d12
--- /dev/null
+++ b/draft/other-tools/fog/fog-notes.txt
@@ -0,0 +1,148 @@
+
+
+./src/buildroot/package/fog/scripts/usr/share/fog/lib/funcs.sh
+
+
+ pigz $PIGZ_COMP < $fifo | split -a 3 -d -b 200m - ${file}. &
+
+
+ mainuuidfilename="$imagePath/d${disk_number}.original.uuids"
+ swapuuidfilename="$imagePath/d${disk_number}.original.swapuuids"
+ sfdiskoriginalpartitionfilename="$imagePath/d${disk_number}.partitions"
+ sfdisklegacyoriginalpartitionfilename="$imagePath/d${disk_number}.original.partitions"
+ sfdiskminimumpartitionfilename="$imagePath/d${disk_number}.minimum.partitions"
+ sgdiskoriginalpartitionfilename="$imagePath/d${disk_number}.sgdisk.original.partitions"
+ fixed_size_file="$imagePath/d${disk_number}.fixed_size_partitions"
+ hasgrubfilename="$imagePath/d${disk_number}.has_grub"
+ [[ -n $sgdisk ]] && hasgrubfilename="$imagePath/d${disk_number}.grub.mbr"
+ [[ -n $sgdisk && $hasGRUB -eq 1 ]] && \
+ mbr="$imagePath/d${disk_number}.grub.mbr" || \
+ mbr="$imagePath/d${disk_number}.mbr"
+ ebrfilename="$path/d${disk_number}p${part_number}.ebr"
+
+# Save enough MBR and embedding area to capture all of GRUB
+# Strategy is to capture EVERYTHING before the first partition.
+# Then, leave a marker that this is a GRUB MBR for restoration.
+# We could get away with less storage, but more details are required
+# to parse the information correctly. It would make the process
+# more complicated.
+
+# $1 is the disk
+# $2 is the disk number
+# $3 is the image path to save the file to.
+# $4 is the determinator of sgdisk use or not
+saveGRUB() {
+
+
+ # Determine the number of sectors to copy
+ # Hack Note: print $4+0 causes the column to be interpretted as a number
+ # so the comma is tossed
+ local count=$(sfdisk -d $disk 2>/dev/null | awk /start=\ *[1-9]/'{print $4+0}' | sort -n | head -n1)
+
+
+ local has_grub=$(dd if=$disk bs=512 count=1 2>&1 | grep -i 'grub')
+
+ # Ensure that no more than 1MiB of data is copied (already have this size used elsewhere)
+ [[ $count -gt 2048 ]] && count=2048
+ local mbrfilename=""
+ MBRFileName "$imagePath" "$disk_number" "mbrfilename" "$sgdisk"
+ dd if=$disk of=$mbrfilename count=$count bs=512 >/dev/null 2>&1
+
+}
+
+
+
+hasGrubFileName() {
+ local imagePath="$1" # e.g. /net/dev/foo
+ local disk_number="$2" # e.g. 1
+ local sgdisk="$3"
+ [[ -z $imagePath ]] && handleError "No image path passed (${FUNCNAME[0]})\n Args Passed: $*"
+ [[ -z $disk_number ]] && handleError "No disk number passed (${FUNCNAME[0]})\n Args Passed: $*"
+ hasgrubfilename="$imagePath/d${disk_number}.has_grub"
+ [[ -n $sgdisk ]] && hasgrubfilename="$imagePath/d${disk_number}.grub.mbr"
+}
+
+savePartitionTablesAndBootLoaders() {
+
+ case $hasgpt in
+ 0)
+ strdots="Saving Partition Tables (MBR)"
+ case $osid in
+ 4|50|51)
+ [[ $disk_number -eq 1 ]] && strdots="Saving Partition Tables and GRUB (MBR)"
+ ;;
+ esac
+ dots "$strdots"
+ saveGRUB "$disk" "$disk_number" "$imagePath"
+ sfdisk -d $disk 2>/dev/null > $sfdiskfilename
+ [[ $have_extended_partition -ge 1 ]] && saveAllEBRs "$disk" "$disk_number" "$imagePath"
+ echo "Done"
+ ;;
+ 1)
+ dots "Saving Partition Tables (GPT)"
+ saveGRUB "$disk" "$disk_number" "$imagePath" "true"
+ sgdisk -b "$imagePath/d${disk_number}.mbr" $disk >/dev/null 2>&1
+ if [[ ! $? -eq 0 ]]; then
+ echo "Failed"
+ debugPause
+ handleError "Error trying to save GPT partition tables (${FUNCNAME[0]})\n Args Passed: $*"
+ fi
+ sfdisk -d $disk 2>/dev/null > $sfdiskfilename
+ echo "Done"
+ ;;
+ esac
+}o
+
+clearPartitionTables() {
+ sgdisk -Z $disk >/dev/null 2>&1
+}
+
+restorePartitionTablesAndBootLoaders() {
+ if [[ $table_type == GPT ]]; then
+ dots "Restoring Partition Tables (GPT)"
+ restoreGRUB "$disk" "$disk_number" "$imagePath" "true"
+ sgdisk -gel $tmpMBR $disk >/dev/null 2>&1
+ [[ ! $? -eq 0 ]] && handleError "Error trying to restore GPT partition tables (${FUNCNAME[0]})\n Args Passed: $*"
+ global_gptcheck="yes"
+ echo "Done"
+ else
+ [big cheat for MBR, dd, sfdisk for EBRs]
+ fi
+}
+
+
+savePartition() {
+ case $fstype in
+ swap)
+ echo " * Saving swap partition UUID"
+ swapUUIDFileName "$imagePath" "$disk_number"
+ saveSwapUUID "$swapuuidfilename" "$part"
+ ;;
+ *)
+ case $parttype in
+ 0x5|0xf)
+ echo " * Not capturing content of extended partition"
+ debugPause
+ EBRFileName "$imagePath" "$disk_number" "$part_number"
+ touch "$ebrfilename"
+ ;;
+ *)
+ echo " * Using partclone.$fstype"
+ debugPause
+ imgpart="$imagePath/d${disk_number}p${part_number}.img"
+ uploadFormat "$fifoname" "$imgpart"
+ partclone.$fstype -fsck-src-part -c -s $part -O $fifoname -N -f 1
+ case $? in
+ 0)
+ mv ${imgpart}.000 $imgpart >/dev/null 2>&1
+ echo " * Image Captured"
+ ;;
+ *)
+ handleError "Failed to complete capture (${FUNCNAME[0]})\n Args Passed: $*"
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ esac
+