Windows 8.1 "Dirty Bit" in UEFI



  • My FOG Cloud says 4848, I’m on Fedora 21 Server.

    I’m booting an Optiplex 9020 with the “Legacy Option ROMs” enabled. The system is otherwise set to UEFI and is installed on the hdd with GPT and Windows 8.1

    I’m getting this error:
    Partclone_Windows_Dirty_Bit.jpg

    The other partitions upload fine.
    I’ve done some searching, and I am fairly sure this is due to the “dirty bit” being set on that partition. It’s because currently Windows “Fast Startup” is enabled, which basically sets the dirty bit permanently.

    When I disable this and after a few reboots, and after deleting the hibernation file, the image uploads normally. I’ve documented the things I’ve found helpful here: https://wiki.fogproject.org/wiki/index.php/Windows_8_UEFI_Imaging_Tips

    I’m wondering if anything can be done to make this process more seamless for 1.3.0 ?



  • Old thread - new news.

    Had this error show up when uploading from an EliteBook 8730w with Win10 on it.

    While I was digging up the commands in the wiki to fix it, when the laptop rebooted on it’s own (due to error), it began uploading!

    How strange?


  • Developer



  • @ch3i said:

    @Wayne-Workman Hi, There is a function in func.sh (in the init) to remove pagefile and hiberfile :

    # $1 is the device name of the windows system partition
    removePageFile() {
        local part="$1";
        local fstype="";
        if [ "$part" != "" ]; then
            fstype=`fsTypeSetting $part`
        fi
        if [ "$fstype" != "ntfs" ]; then
            echo " * No ntfs file system on ($part) to remove page file"
            debugPause;
        elif [[ "$osid" == +([1-2]|[5-7]|9|50) ]]; then
            if [ "$ignorepg" == "1" ]; then
                dots "Mounting partition ($part)";
                mkdir /ntfs &>/dev/null;
                ntfs-3g -o force,rw $part /ntfs;
                if [ "$?" == "0" ]; then
                    echo "Done";
                    debugPause;
                    dots "Removing page file";
                    if [ -f "/ntfs/pagefile.sys" ]; then
                        rm -f "/ntfs/pagefile.sys" >/dev/null 2>&1;
                        echo "Done";
                    else
                        echo "No pagefile found";
                    fi
                    debugPause;
                    dots "Removing hibernate file";
                    if [ -f "/ntfs/hiberfil.sys" ]; then
                        rm -f "/ntfs/hiberfil.sys" >/dev/null 2>&1;
                        echo "Done";
                    else
                        echo "No hibernate found";
                    fi
                    resetFlag "$part";
                    umount /ntfs;
                else
                    echo "Failed";
                fi
                debugPause;
            fi
        fi
    }
    

    And ntfsfix too :

    # $1 is the part
    resetFlag() {
        if [ -n "$1" ]; then
            fstype=`blkid -po udev $1 | awk -F= /FS_TYPE=/'{print $2}'`;
            if [ "$fstype" == "ntfs" ]; then
                dots "Clearing ntfs flag";
                ntfsfix -b -d $1 &>/dev/null;
                echo "Done";
                debugPause;
            fi
        fi
    }
    

    Not sure if the two functions are used during upload process, @Developers ?

    @Uncle-Frank stated that these two functions are called for resizable image types. Resizeable is the image type I’m using for this…

    So that means these two functions are either running and failing on /dev/sda4, or not running at all, or not running at the correct time.


  • Moderator

    @Wayne-Workman said:

    @ch3i How would I use those functions from CLI?

    I suppose I can make a bash script during debug and call those functions to run, then run ntfsfix on all the partitions in the same script.

    You can modify the fog.upload to call these scripts before uploading.



  • @ch3i How would I use those functions from CLI?

    I suppose I can make a bash script during debug and call those functions to run, then run ntfsfix on all the partitions in the same script.


  • Moderator

    @Uncle-Frank said:

    As far as I can see in the fog.upload script those two functions are only used with image type set to resizable.

    I think we have to enable it on each upload resizable or not.


  • Developer

    As far as I can see in the fog.upload script those two functions are only used with image type set to resizable.


  • Moderator

    @Wayne-Workman Hi, There is a function in func.sh (in the init) to remove pagefile and hiberfile :

    # $1 is the device name of the windows system partition
    removePageFile() {
        local part="$1";
        local fstype="";
        if [ "$part" != "" ]; then
            fstype=`fsTypeSetting $part`
        fi
        if [ "$fstype" != "ntfs" ]; then
            echo " * No ntfs file system on ($part) to remove page file"
            debugPause;
        elif [[ "$osid" == +([1-2]|[5-7]|9|50) ]]; then
            if [ "$ignorepg" == "1" ]; then
                dots "Mounting partition ($part)";
                mkdir /ntfs &>/dev/null;
                ntfs-3g -o force,rw $part /ntfs;
                if [ "$?" == "0" ]; then
                    echo "Done";
                    debugPause;
                    dots "Removing page file";
                    if [ -f "/ntfs/pagefile.sys" ]; then
                        rm -f "/ntfs/pagefile.sys" >/dev/null 2>&1;
                        echo "Done";
                    else
                        echo "No pagefile found";
                    fi
                    debugPause;
                    dots "Removing hibernate file";
                    if [ -f "/ntfs/hiberfil.sys" ]; then
                        rm -f "/ntfs/hiberfil.sys" >/dev/null 2>&1;
                        echo "Done";
                    else
                        echo "No hibernate found";
                    fi
                    resetFlag "$part";
                    umount /ntfs;
                else
                    echo "Failed";
                fi
                debugPause;
            fi
        fi
    }
    

    And ntfsfix too :

    # $1 is the part
    resetFlag() {
        if [ -n "$1" ]; then
            fstype=`blkid -po udev $1 | awk -F= /FS_TYPE=/'{print $2}'`;
            if [ "$fstype" == "ntfs" ]; then
                dots "Clearing ntfs flag";
                ntfsfix -b -d $1 &>/dev/null;
                echo "Done";
                debugPause;
            fi
        fi
    }
    

    Not sure if the two functions are used during upload process, @Developers ?



  • @Wayne-Workman said:

    @ch3i

    mkdir /mnt/tmp
    ntfs-3g -o remove_hiberfile /dev/sda4 /mnt/tmp
    umount /mnt/tmp
    ntfsfix /dev/sda4
    

    That says it succeeded, but then NFS failed to mount during the fog command… gah… trying again.

    I think this has to be done for all the partitions for it to work right… Because now I’m getting errors about mounting /dev/sda1 during the FOG command. I’m testing now.



  • @ch3i

    mkdir /mnt/tmp
    ntfs-3g -o remove_hiberfile /dev/sda4 /mnt/tmp
    umount /mnt/tmp
    ntfsfix /dev/sda4
    

    That says it succeeded, but then NFS failed to mount during the fog command… gah… trying again.


  • Moderator

    @Wayne-Workman said:

    This is with Fast Startup and Hibernation turned on.

    IMG_20151019_085735.jpg

    I’ll try that : ntfs-3g -o remove_hiberfile /dev/sdaX /tmp/mount_point to remove the hibernate file.



  • This is with Fast Startup and Hibernation turned on.

    IMG_20151019_085735.jpg



  • @Wayne-Workman said:

    @ch3i Is it just me, or does the “Fast Startup” checkbox vanish after it’s disabled for others too?

    So, you must run powercfg.exe -H on for the “Fast Startup” option to even show up.



  • @ch3i Is it just me, or does the “Fast Startup” checkbox vanish after it’s disabled for others too?



  • @ch3i Trying it now.


  • Moderator

    @Wayne-Workman said:

    @ch3i Not yet, thank you for reminding me. I’ll try to do it today. I actually need to.

    Hi @Wayne-Workman, I’ve tested it on a Windows 8.1 with “Fast Startup”, it’s functional. Could-you test it to confirm my result ? If it’s OK, it would be interesting to add it to FOG upload process.



  • @Wayne-Workman
    Thank you for the Article.
    A few months ago we bought dell laptops and I was using WDS for deployment and it worked perfect with HP and Win7 computers.
    When I deployed win8.1 to these DELL machines I had to stop using WDS 2012 R2.(endless errors) Deleted WDS COMPLETELY OFF the network.
    Since then IM leveraging Open source technology on levels of DEVOPS.
    My point is now I have an answer for my UEFI deployment issues. Thank you once again :-) :-)



  • @ch3i Not yet, thank you for reminding me. I’ll try to do it today. I actually need to.


  • Moderator

    @Wayne-Workman Hi, did you have time to test ?


 

386
Online

41.5k
Users

12.0k
Topics

113.4k
Posts