diff --git a/poky/scripts/lib/wic/ksparser.py b/poky/scripts/lib/wic/ksparser.py
index 3eb669d..913e328 100644
--- a/poky/scripts/lib/wic/ksparser.py
+++ b/poky/scripts/lib/wic/ksparser.py
@@ -229,23 +229,6 @@
                                 err = "%s:%d: SquashFS does not support LABEL" \
                                        % (confpath, lineno)
                                 raise KickStartError(err)
-                        if parsed.fstype == 'msdos' or parsed.fstype == 'vfat':
-                            if parsed.fsuuid:
-                                if parsed.fsuuid.upper().startswith('0X'):
-                                    if len(parsed.fsuuid) > 10:
-                                        err = "%s:%d: fsuuid %s given in wks kickstart file " \
-                                              "exceeds the length limit for %s filesystem. " \
-                                              "It should be in the form of a 32 bit hexadecimal" \
-                                              "number (for example, 0xABCD1234)." \
-                                              % (confpath, lineno, parsed.fsuuid, parsed.fstype)
-                                        raise KickStartError(err)
-                                elif len(parsed.fsuuid) > 8:
-                                    err = "%s:%d: fsuuid %s given in wks kickstart file " \
-                                          "exceeds the length limit for %s filesystem. " \
-                                          "It should be in the form of a 32 bit hexadecimal" \
-                                          "number (for example, 0xABCD1234)." \
-                                          % (confpath, lineno, parsed.fsuuid, parsed.fstype)
-                                    raise KickStartError(err)
                         if parsed.use_label and not parsed.label:
                             err = "%s:%d: Must set the label with --label" \
                                   % (confpath, lineno)
diff --git a/poky/scripts/lib/wic/partition.py b/poky/scripts/lib/wic/partition.py
index 286c786..ebe250b 100644
--- a/poky/scripts/lib/wic/partition.py
+++ b/poky/scripts/lib/wic/partition.py
@@ -207,21 +207,11 @@
 
         p_prefix = os.environ.get("PSEUDO_PREFIX", "%s/usr" % native_sysroot)
         if (pseudo_dir):
-            # Canonicalize the ignore paths. This corresponds to
-            # calling oe.path.canonicalize(), which is used in bitbake.conf.
-            ignore_paths = [rootfs] + (get_bitbake_var("PSEUDO_IGNORE_PATHS") or "").split(",")
-            canonical_paths = []
-            for path in ignore_paths:
-                if "$" not in path:
-                    trailing_slash = path.endswith("/") and "/" or ""
-                    canonical_paths.append(os.path.realpath(path) + trailing_slash)
-            ignore_paths = ",".join(canonical_paths)
-
             pseudo = "export PSEUDO_PREFIX=%s;" % p_prefix
             pseudo += "export PSEUDO_LOCALSTATEDIR=%s;" % pseudo_dir
             pseudo += "export PSEUDO_PASSWD=%s;" % rootfs_dir
             pseudo += "export PSEUDO_NOSYMLINKEXP=1;"
-            pseudo += "export PSEUDO_IGNORE_PATHS=%s;" % ignore_paths
+            pseudo += "export PSEUDO_IGNORE_PATHS=%s;" % (rootfs + "," + (get_bitbake_var("PSEUDO_IGNORE_PATHS") or ""))
             pseudo += "%s " % get_bitbake_var("FAKEROOTCMD")
         else:
             pseudo = None
diff --git a/poky/scripts/lib/wic/plugins/imager/direct.py b/poky/scripts/lib/wic/plugins/imager/direct.py
index 0ca67b7..55db826 100644
--- a/poky/scripts/lib/wic/plugins/imager/direct.py
+++ b/poky/scripts/lib/wic/plugins/imager/direct.py
@@ -343,13 +343,6 @@
                     part.fsuuid = '0x' + str(uuid.uuid4())[:8].upper()
                 else:
                     part.fsuuid = str(uuid.uuid4())
-            else:
-                #make sure the fsuuid for vfat/msdos align with format 0xYYYYYYYY
-                if part.fstype == 'vfat' or part.fstype == 'msdos':
-                    if part.fsuuid.upper().startswith("0X"):
-                        part.fsuuid = '0x' + part.fsuuid.upper()[2:].rjust(8,"0")
-                    else:
-                        part.fsuuid = '0x' + part.fsuuid.upper().rjust(8,"0")
 
     def prepare(self, imager):
         """Prepare an image. Call prepare method of all image partitions."""
diff --git a/poky/scripts/lib/wic/plugins/source/empty.py b/poky/scripts/lib/wic/plugins/source/empty.py
deleted file mode 100644
index 041617d..0000000
--- a/poky/scripts/lib/wic/plugins/source/empty.py
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# SPDX-License-Identifier: MIT
-#
-
-# The empty wic plugin is used to create unformatted empty partitions for wic
-# images.
-# To use it you must pass "empty" as argument for the "--source" parameter in
-# the wks file. For example:
-# part foo --source empty --ondisk sda --size="1024" --align 1024
-
-import logging
-
-from wic.pluginbase import SourcePlugin
-
-logger = logging.getLogger('wic')
-
-class EmptyPartitionPlugin(SourcePlugin):
-    """
-    Populate unformatted empty partition.
-    """
-
-    name = 'empty'
-
-    @classmethod
-    def do_prepare_partition(cls, part, source_params, cr, cr_workdir,
-                             oe_builddir, bootimg_dir, kernel_dir,
-                             rootfs_dir, native_sysroot):
-        """
-        Called to do the actual content population for a partition i.e. it
-        'prepares' the partition to be incorporated into the image.
-        """
-        return
