Failed to read back partitions
-
So I am having a rather strange issue that I cannot work out what could be the cause.
I have done some remodeling to the fog.man.reg file in that it selects the correct image to deploy based on various factors (Ie EFI/Legacy, 32/64bit, Previous Windows versions etc. ) of the previous installation and triggers the fog.download file to start the deployment automatically.
This seems to work fine until it comes to the deployment. Specifically, Win 11.
Now when the Windows 11 image is assigned it brings up the Failed to read back partitions. But if I assign the image directly instead of my auto-selection it works 100% . As I said Windows 10 works perfectly it just seems to be Windows 11.
Please see below :
This is my fog.man.reg file:
#!/bin/bash . /usr/share/fog/lib/funcs.sh clearScreen displayBanner disks="" disk="" hd="" getHardDisk sysman="" sysproduct="" sysversion="" sysserial="" sysuuid="" systype="" biosversion="" biosvendor="" biosdate="" mbman="" mbproductname="" mbversion="" mbserial="" mbasset="" cpuman="" cpuversion="" cpucurrent="" cpumax="" mem="" hdinfo="" caseman="" casever="" caseserial="" caseasset="" sysman64="" sysproduct64="" sysversion64="" sysserial64="" sysuuid64="" systype64="" biosversion64="" biosvendor64="" biosdate64="" mbman64="" mbproductname64="" mbversion64="" mbserial64="" mbasset64="" cpuman64="" cpuversion64="" cpucurrent64="" cpumax64="" mem64="" hdinfo64="" caseman64="" casever64="" caseserial64="" caseasset64="" dots "Using disk device" echo $hd echo " * Starting host registration" echo "" echo "********PLEASE NOTE CONNEX / PROLINE / MECER Z140C ARE NOT SUPPORTED**********" echo "" mac=$(getMACAddresses | base64) sysuuid=$(dmidecode -s system-uuid) sysuuid=${sysuuid,,} sysuuid=$(echo $sysuuid | base64) exists=$(curl -Lks --data "sysuuid=${sysuuid}&mac=$mac" ${web}service/man.hostexists.php 2>/dev/null) dots "Getting previous installation details" echo "" # EXTRACT PREVIOUS WINDOWS VERSION blkid_output=$(blkid) windows_partitions=$(echo "$blkid_output" | grep -i 'TYPE="ntfs"' | cut -d':' -f1 | head -n1) mkdir /mnt/ntfs mount $windows_partitions /mnt/ntfs reged -x mnt/ntfs/Windows/System32/config/SOFTWARE "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\\CurrentVersion" \\ /out.reg &> /dev/null || true editionid=$(grep "EditionID" out.reg | tail -n 1 | awk -F= '{print $2}' | tr -d '"') if [ -f /out.reg ]; then currentbuild=$(grep CurrentBuild out.reg | head -n 1 | sed 's/[^0-9]//g') # Function to determine the Windows version based on the build number getWindowsVersion() { build=$1 if ((build >= 7000 && build <= 8000)); then echo "Windows 7" elif ((build >= 9000 && build <= 9999)); then echo "Windows 8" elif ((build >= 10000 && build <= 20000)); then echo "Windows 10" elif ((build >= 22000 && build <= 23000)); then echo "Windows 11" else echo "Unknown Windows Version" fi } # Determine the Windows version based on the build number version=$(getWindowsVersion $currentbuild) echo "" echo "Your previous Build was $currentbuild" echo "Your current Windows version is $version" echo "Your current Edition is $editionid" echo "Your Windows Partition is $windows_partitions" fi bootmode=$(dmesg | grep "EFI v") if [[ -z "$bootmode" ]] then bootmode="Legacy" echo "" echo "YOUR BOOT MODE IS LEGACY" else bootmode="EFI" echo "" echo "YOUR BOOT MODE IS UEFI" fi chiptype=$(arch) if [[ $chiptype = "x86_64" ]] then chiptype="64" else chiptype="32" fi licensekey=$(tail -c+57 /sys/firmware/acpi/tables/MSDM) deployimage="" if [[ "$version" = *"Windows 7"* ]] && [[ "$bootmode" = *"Legacy"* ]]; then #WIN10_LEG_32BIT_HOME deployimage="5" elif [[ "$version" = *"Windows 8"* ]] && [[ "$bootmode" = *"Legacy"* ]]; then #WIN10_LEG_32BIT_HOME deployimage="5" elif [[ "$version" = *"Windows 10"* ]] && [[ "$chiptype" = *"64"* ]] && [[ "$bootmode" = *"Legacy"* ]] && [[ "$editionid" = *"Home"* ]]; then #WIN10_LEG_64_HOME deployimage="6" elif [[ "$version" = *"Windows 10"* ]] && [[ "$chiptype" = *"64"* ]] && [[ "$bootmode" = *"EFI"* ]] && [[ "$editionid" = *"Home"* ]]; then #WIN10_EFI_64_HOME deployimage="1" elif [[ "$version" = *"Windows 10"* ]] && [[ "$chiptype" = *"64"* ]] && [[ "$bootmode" = *"EFI"* ]] && [[ "$editionid" = *"Professional"* ]]; then #WIN10_EFI_64_PRO deployimage="2" elif [[ "$version" = *"Windows 11"* ]] && [[ "$chiptype" = *"64"* ]] && [[ "$bootmode" = *"EFI"* ]] && [[ "$editionid" = *"Home"* ]]; then #WIN11_EFI_64_HOME deployimage="4" elif [[ "$version" = *"Windows 11"* ]] && [[ "$chiptype" = *"64"* ]] && [[ "$bootmode" = *"EFI"* ]] && [[ "$editionid" = *"Professional"* ]]; then #WIN11_EFI_64_PRO deployimage="3" else #WIN10_EFI_64_HOME deployimage="1" fi echo "" echo "Your pre-selected image number is $deployimage" echo "" checkAndSet() { local testvar="$1" local onlynum="$2" [[ -z $testvar ]] && return if [[ $onlynum =~ [Tt][Rr][Uu][Ee] && $testvar =~ ^[0-9]+$ ]]; then echo $testvar | base64 elif [[ $testvar =~ ^[0-9,]+$ ]]; then echo $testvar | base64 else return fi } setIDs() { local varVar="$1" local str="$2" local csvstyle="$3" local dummy="$4" local max="$5" local res="" local url="" local oIFS=$IFS local line="" while [[ -z ${!varVar} ]]; do # [[ $csvstyle =~ [Tt][Rr][Uu][Ee] ]] && echo -n " Enter the $str IDs separated with , to associate with computer (? for listing): " || echo -n " Enter the $str ID to associate with computer (? for listing): " dummy=$deployimage #read dummy dummy=$(echo $dummy | sed -e 's/^,//' -e 's/,$//') case $dummy in [?]) url="${web}service/${str}listing.php" clearScreen res=$(echo -e $(curl -ks $url 2>/dev/null)) i=0 IFS=$'\n' for line in $res; do let i+=1 echo $line if [[ $i -eq $max ]]; then [[ $csvstyle =~ [Tt][Rr][Uu][Ee] ]] && echo -n " Press [Enter] to proceed or enter the $str IDs separated with , to associate with computer: " || echo -n " Press [Enter] to proceed or enter the $str ID to associate with computer: " dummy=$deployimage #read dummy case $dummy in [?]|"") i=0 clearScreen continue ;; esac case $csvstyle in [Tt][Rr][Uu][Ee]) [[ $dummy =~ ^[0-9,]+$ ]] && printf -v "$varVar" $(checkAndSet $dummy) || setIDs "$varVar" "$str" "$csvstyle" "$dummy" "$max" break ;; *) [[ $dummy =~ ^[0-9]+$ ]] && printf -v "$varVar" $(checkAndSet $dummy "true") || setIDs "$varVar" "$str" "$csvstyle" "$dummy" "$max" break ;; esac i=0 dummy=$(echo $dummy | sed -e 's/^,//' -e 's/,$//') clearScreen fi done ;; ""|0) printf -v "$varVar" 0 ;; *) dummy=$(echo $dummy | sed -e 's/^,//' -e 's/,$//') [[ -z $dummy ]] && setIDs "$varVar" "$str" "$csvstyle" "$dummy" "$max" case $csvstyle in [Tt][Rr][Uu][Ee]) [[ $dummy =~ ^[0-9,]+$ ]] && printf -v "$varVar" $(checkAndSet $dummy) || setIDs "$varVar" "$str" "$csvstyle" "$dummy" "$max" ;; *) [[ $dummy =~ ^[0-9]+$ ]] && printf -v "$varVar" $(checkAndSet $dummy "true") || setIDs "$varVar" "$str" "$csvstyle" "$dummy" "$max" ;; esac ;; esac done IFS=$oIFS } [[ $exists != "#!ok" ]] && handleError "Unable to register host: $exists ($0)\n Args Passed: $* ****PLEASE CLEAR HOSTS****" host="" ip="" productKey="" imageid="" primaryuser="" other1="" other2="" blImage="" blDoAddGroup="" blDoAddSnapin="" keyEnter="" blDoAD="" res="" while [[ $res != "#!ok" ]]; do echo -n " * Enter the Stockcode for this computer: " read host if [[ ${#host} -gt 15 ]]; then host=${host:0:15} echo " | Truncated to 15 characters: $host" usleep 2000000 fi host=$(echo $host | base64) res=$(curl -Lks --data "host=$host" ${web}service/hostnameloop.php 2>/dev/null) [[ $res != "#!ok" ]] && echo "$res" done imageid="" setIDs "imageid" "image" "" "" 20 if [[ $(curl -Lks ${web}service/locationcheck.php 2>/dev/null) == "##" ]]; then while [[ -z $askme ]]; do #echo -n " Would you like to assign a location for this host? (y/N) " askme="n" case $askme in [Nn]|[Nn][Oo]|"") askme="N" ;; [Yy]|[Yy][Ee][Ss]) setIDs "locationid" "location" "" "" 20 location64=$locationid ;; *) askme="" echo " * Invalid input, please try again" ;; esac done fi askme="" if [[ $(curl -Lks ${web}service/oucheck.php 2>/dev/null) == "##" ]]; then while [[ -z $askme ]]; do #echo -n " Would you like to assign an ou for this host? (y/N) " askme="N" case $askme in [Nn]|[Nn][Oo]|"") askme="N" ;; [Yy]|[Yy][Ee][Ss]) setIDs "ouid" "ou" "" "" 20 ou64=$ouid ;; *) askme="" echo " * Invalid input, please try again" ;; esac done fi askme="" while [[ -z $askme ]]; do #echo -n " Would you like to associate this host with groups? (y/N) " askme="N" case $askme in [Nn]|[Nn][Oo]|"") askme="N" ;; [Yy]|[Yy][Ee][Ss]) setIDs "groupid" "group" "true" "" 20 group64=$groupid ;; *) askme="" echo " * Invalid input, please try again" ;; esac done askme="" while [[ -z $askme ]]; do #echo -n " Would you like to associate this host with snapins? (y/N) " askme="Y" case $askme in [Nn]|[Nn][Oo]|"") askme="N" ;; [Yy]|[Yy][Ee][Ss]) setIDs "snapinid" "snapin" "true" "" 20 snapin64=$snapinid ;; *) askme="" echo " * Invalid input, please try again" ;; esac done askme="" while [[ -z $askme ]]; do #echo -n " Would you like to associate a product key to this host? (y/N) " askme="N" case $askme in [Nn]|[Nn][Oo]|"") askme="N" ;; [Yy]|[Yy][Ee][Ss]) echo -n " * Enter the product key for this computer: " read productKey productKey=$(echo $productKey | base64) ;; *) askme="" echo " * Invalid input, please try again" ;; esac done askme="" while [[ -z $askme ]]; do #echo -n " Would you like this host to join a domain, (using default settings)? (y/N) " askme="N" case $askme in [Nn]|[Nn][Oo]|"") askme="N" ;; [Yy]|[Yy][Ee][Ss]) blDoAD=$(echo -n 1 | base64) askme="Y" ;; *) askme="" echo " * Invalid input, please try again" ;; esac done #echo -n " * Enter the primary user for this computer: " #read primaryuser #primaryuser=$(echo $primaryuser | base64) #echo -n " * Enter the other tag #1 for this computer: " #read other1 #other1=$(echo $other1 | base64) #echo -n " * Enter the other tag #2 for this computer: " #read other2 #other2=$(echo $other2 | base64) #echo " * You entered all required information, " askme="" while [[ -z $askme ]]; do #echo -n " Would you like to deploy image to this computer now? (y/N) " askme="y" case $askme in [Nn]|[Nn][Oo]|"") askme="N" ;; [Yy]|[Yy][Ee][Ss]) tmp="" ret="" retry=3 while [[ $ret != "#!ok" && ! $retry -eq 0 ]]; do echo " * Enter Username and Password" echo -n " Username: " read username echo -n " Password: " read -s password user64=$(echo $username | tr -d '\012' | base64) pass64=$(echo $password | tr -d '\012' | base64) ret=$(curl -Lks --data "sysuuid=${sysuuid}&mac=$mac&username=$user64&password=$pass64" ${web}service/checkcredentials.php 2>/dev/null) case $ret in '#!ok') echo echo " * This host will reboot and deployment will start!" ret=$tmp realdoimage=$(echo -n 1 | base64) break ;; '#!il') echo echo " * Error: Invalid Login! ($retry remaining)" let retry-=1 ;; esac done askme="Y" ;; *) askme="" echo " * Invalid input, please try again" ;; esac done dots "Attempting to register host" res="" while [[ -z $res ]]; do res=$(curl -Lks --data "sysuuid=${sysuuid}&mac=$mac&advanced=$(echo -n 1 | base64)&host=$host&imageid=$imageid&primaryuser=$primaryuser&other1=$other1&other2=$other2&doimage=$realdoimage&doad=$blDoAD&location=$location64&username=$user64&groupid=$group64&snapinid=$snapin64&productKey=$productKey" ${web}service/auto.register.php 2>/dev/null) echo "$res" usleep 2000000 done . /bin/fog.inventory curl -X POST --data "host= $host" --data "stockcode= $host" --data "sysman= $sysman" --data "sysproduct= $sysproduct" --data "sysver= $sysversion" --data "sysserial= $sysserial" --data "sysuuid= $sysuuid" --data "systype= $systype" --data "cpuman= $cpuman" --data "cpuversion= $cpuversion" --data "cpumax= $cpumax" --data "mem= $mem" --data "harddisk= $hdinfo" --data "caseserial= $caseserial" --data "mac= $mac" --data "productkey= $productkey" --data "licensekey= $licensekey" --data "ip= $ip" --data "repaircode= $other2" --data "bootmode= $bootmode" --data "chiptype= $chiptype" ${web}service/fogmailer.php echo -n "" echo -n "**********THE INSTALLATION WILL START AUTOMATICALLY NO USER INPUT IS NEEDED*************" echo -n "" sysuuid=$(dmidecode -s system-uuid) sysuuid=${sysuuid,,}switch mac=$(getMACAddresses) curl -Lks -o /tmp/hinfo.txt --data "sysuuid=${sysuuid}&mac=$mac" "${web}service/hostinfo.php" -A '' [[ -f /tmp/hinfo.txt ]] && . /tmp/hinfo.txt . /bin/fog.download usleep 2000000