• Recent
  • Unsolved
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Register
  • Login
  • Recent
  • Unsolved
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Register
  • Login

Failed to read back partitions

Scheduled Pinned Locked Moved
General
1
1
241
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Z
    zaboxmaster
    last edited by Dec 13, 2023, 1:21 PM

    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 :
    ERROR.jpg

    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
    
    
    
    1 Reply Last reply Reply Quote 0
    • 1 / 1
    1 / 1
    • First post
      1/1
      Last post

    201

    Online

    12.1k

    Users

    17.3k

    Topics

    155.3k

    Posts
    Copyright © 2012-2024 FOG Project