diff --git a/meta-hpe/meta-common/conf/layer.conf b/meta-hpe/meta-common/conf/layer.conf
new file mode 100644
index 0000000..8ae7db1
--- /dev/null
+++ b/meta-hpe/meta-common/conf/layer.conf
@@ -0,0 +1,10 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have recipes-* directories, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+            ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "common-layer"
+BBFILE_PATTERN_common-layer := "^${LAYERDIR}/"
+LAYERSERIES_COMPAT_common-layer = "mickledore"
diff --git a/meta-hpe/meta-common/recipes-phosphor/image/obmc-phosphor-image.bbappend b/meta-hpe/meta-common/recipes-phosphor/image/obmc-phosphor-image.bbappend
index 5cc1192..0eb0069 100644
--- a/meta-hpe/meta-common/recipes-phosphor/image/obmc-phosphor-image.bbappend
+++ b/meta-hpe/meta-common/recipes-phosphor/image/obmc-phosphor-image.bbappend
@@ -10,7 +10,7 @@
     import io
     path = d.getVar('STAGING_DIR_TARGET', True) + d.getVar('sysconfdir', True)
     path = os.path.join(path, 'os-release')
-    parser = configparser.ConfigParser(strict=False)
+    parser = configparser.SafeConfigParser(strict=False)
     parser.optionxform = str
     version = ''
     try:
@@ -27,32 +27,57 @@
         pass
     return version
 
+CUSTOMER_KEY_BLOCK ?= "customer-key-block"
 HPE_GXP_BOOTBLOCK_IMAGE ?= "gxp-bootblock.bin"
 HPE_UBOOT_SIGNING_HEADER ?= "hpe-uboot-header.section"
+HPE_UBOOT_SIGNING_HEADER_512 ?= "hpe-uboot-header-512.section"
 HPE_UBOOT_SIGNING_KEY ?= "hpe-uboot-signing-key.pem"
 
+# Offsets that are the same for the standard image and secure boot image
 FLASH_SIZE = "31552"
 FLASH_UBOOT_OFFSET = "0"
+UBOOT_IMG_SIZE = "393216"
 FLASH_KERNEL_OFFSET = "512"
 FLASH_ROFS_OFFSET = "5376"
 FLASH_RWFS_OFFSET = "29184"
-FLASH_SECTION_OFFSET = "31552"
+
+# Standard image offsets
+FLASH_STANDARD_SECTION_OFFSET = "31552"
+FLASH_STANDARD_SECTION_END = "32768"
+
+# Secure boot offsets
+# offset at 0x01f7_0000 / 1024 = 32192
+FLASH_SECTION_OFFSET = "32192"
+# end is offset + 576
 FLASH_SECTION_END = "32768"
 
-UBOOT_IMG_SIZE = "393216"
+# offset at 0x01ee_0000 / 1024 = 31616
+FLASH_SECTION2_OFFSET = "31616"
+FLASH_SECTION2_END = "32192"
+
+# offset at 0x01c0_0000 / 1024 = 28672
+FLASH_UBOOT2_OFFSET = "28672"
 
 do_generate_static[depends] += " \
-   		  gxp-bootblock:do_deploy \
+        gxp-bootblock:do_deploy \
         gxp-bootblock:do_populate_sysroot \
         "
-
-
 make_image_links:append() {
     ln -sf ${DEPLOY_DIR_IMAGE}/hpe-section image-section
+
+    if  [ -f ${DEPLOY_DIR_IMAGE}/hpe-section2 ]
+    then
+        ln -sf ${DEPLOY_DIR_IMAGE}/hpe-section2 image-section2
+    fi
 }
 
 do_mk_static_symlinks:append() {
     ln -sf hpe-section image-section
+
+    if [ -f ${DEPLOY_DIR_IMAGE}/hpe-section2 ]
+    then
+        ln -sf hpe-section2 image-section2
+    fi
 }
 
 do_generate_static:prepend() {
@@ -60,12 +85,27 @@
 }
 
 do_generate_static:append() {
-    _append_image(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True),
-                               'hpe-section'),
-                  int(d.getVar('FLASH_SECTION_OFFSET', True)),
-                  int(d.getVar('FLASH_SECTION_END', True))) 
+    # hpe-section2 and u-boot2 only exist in the secure boot image.
+    # If hpe-section2 exists, then this is secure boot.
+    if os.path.exists(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), 'hpe-section2')):
+        _append_image(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), 'hpe-section'),
+                      int(d.getVar('FLASH_SECTION_OFFSET', True)),
+                      int(d.getVar('FLASH_SECTION_END', True))) 
+
+        _append_image(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), 'hpe-section2'),
+                      int(d.getVar('FLASH_SECTION2_OFFSET', True)),
+                      int(d.getVar('FLASH_SECTION2_END', True)))
+
+        _append_image(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), 'u-boot.%s' % d.getVar('UBOOT_SUFFIX',True)),
+                      int(d.getVar('FLASH_UBOOT2_OFFSET', True)),
+                      int(d.getVar('FLASH_RWFS_OFFSET', True)))
+    else:
+        _append_image(os.path.join(d.getVar('DEPLOY_DIR_IMAGE', True), 'hpe-section'),
+                      int(d.getVar('FLASH_STANDARD_SECTION_OFFSET', True)),
+                      int(d.getVar('FLASH_STANDARD_SECTION_END', True))) 
 }
 
+# Generate the secure boot image by default
 do_generate_hpe_image() {
     # Extract uboot 256K
     dd if=/dev/zero bs=1k count=256 > ${DEPLOY_DIR_IMAGE}/u-boot-tmp.${UBOOT_SUFFIX}
@@ -73,38 +113,75 @@
             if=${DEPLOY_DIR_IMAGE}/u-boot.${UBOOT_SUFFIX} \
             of=${DEPLOY_DIR_IMAGE}/u-boot-tmp.${UBOOT_SUFFIX}
 
-    # Sign uboot 256K
-    openssl sha256 -sign ${DEPLOY_DIR_IMAGE}/${HPE_UBOOT_SIGNING_KEY} -out ${DEPLOY_DIR_IMAGE}/gxp_tmp.sig \
+    keyblockver="$(expr `grep -c -i 'CustomerKeyBlockVersion\$2.0' "${DEPLOY_DIR_IMAGE}/${CUSTOMER_KEY_BLOCK}"` + 1)"
+
+    # TODO - replace this openssl signing command line with whatever command you need to create a
+    # digital signature of ${DEPLOY_DIR_IMAGE}/u-boot-tmp.${UBOOT_SUFFIX}
+    if [ ${keyblockver} -eq 1 ]
+    then
+        openssl sha256 -sign ${DEPLOY_DIR_IMAGE}/${HPE_UBOOT_SIGNING_KEY} -out ${DEPLOY_DIR_IMAGE}/gxp_tmp.sig \
             ${DEPLOY_DIR_IMAGE}/u-boot-tmp.${UBOOT_SUFFIX}
 
-    # Expand (header+signature) to 4K
-    cat ${DEPLOY_DIR_IMAGE}/${HPE_UBOOT_SIGNING_HEADER} ${DEPLOY_DIR_IMAGE}/gxp_tmp.sig \
-         > ${DEPLOY_DIR_IMAGE}/gxp.sig
+        # Cat U-Boot header+signature
+        cat ${DEPLOY_DIR_IMAGE}/${HPE_UBOOT_SIGNING_HEADER} ${DEPLOY_DIR_IMAGE}/gxp_tmp.sig \
+            > ${DEPLOY_DIR_IMAGE}/gxp-uboot.sig
+    elif [ ${keyblockver} -eq 2 ]
+    then
+        openssl sha384 -sign ${DEPLOY_DIR_IMAGE}/${HPE_UBOOT_SIGNING_KEY} -out ${DEPLOY_DIR_IMAGE}/gxp_tmp.sig \
+            ${DEPLOY_DIR_IMAGE}/u-boot-tmp.${UBOOT_SUFFIX}
 
-    # Add Header and Signature to hpe-section (from 60K)
-    dd bs=1k conv=notrunc seek=60 \
-          if=${DEPLOY_DIR_IMAGE}/gxp.sig \
-          of=${DEPLOY_DIR_IMAGE}/hpe-section
+        # Cat U-Boot header+signature
+        cat ${DEPLOY_DIR_IMAGE}/${HPE_UBOOT_SIGNING_HEADER_512} ${DEPLOY_DIR_IMAGE}/gxp_tmp.sig \
+            > ${DEPLOY_DIR_IMAGE}/gxp-uboot.sig
+    fi
 
-    # Add ubb to hpe-section
+    # Create hpe-section
+    dd if=/dev/zero bs=1k count=576 > ${DEPLOY_DIR_IMAGE}/hpe-section
+
+    # Add U-Boot Header and Signature to hpe-section
+    dd bs=1k conv=notrunc seek=0 \
+        if=${DEPLOY_DIR_IMAGE}/gxp-uboot.sig \
+        of=${DEPLOY_DIR_IMAGE}/hpe-section
+
+    # Add gxp-bootblock to hpe-section
     dd bs=1k conv=notrunc seek=64 \
-          if=${DEPLOY_DIR_IMAGE}/${HPE_GXP_BOOTBLOCK_IMAGE} \
-          of=${DEPLOY_DIR_IMAGE}/hpe-section
+        if=${DEPLOY_DIR_IMAGE}/${HPE_GXP_BOOTBLOCK_IMAGE} \
+        of=${DEPLOY_DIR_IMAGE}/hpe-section
+
+    # hpe-section2 is the same as hpe-section up to this point
+    cp ${DEPLOY_DIR_IMAGE}/hpe-section ${DEPLOY_DIR_IMAGE}/hpe-section2
+
+    # Expand the customer-key-block to 64 KB
+    dd if=/dev/zero bs=1k count=64 > ${DEPLOY_DIR_IMAGE}/${CUSTOMER_KEY_BLOCK}.tmp
+    dd bs=1k conv=notrunc seek=0 count=64 \
+        if=${DEPLOY_DIR_IMAGE}/${CUSTOMER_KEY_BLOCK} \
+        of=${DEPLOY_DIR_IMAGE}/${CUSTOMER_KEY_BLOCK}.tmp
+
+    # Add the customer-key-block to hpe-section
+    dd bs=1k conv=notrunc seek=320 count=64 \
+        if=${DEPLOY_DIR_IMAGE}/${CUSTOMER_KEY_BLOCK}.tmp \
+        of=${DEPLOY_DIR_IMAGE}/hpe-section
+
+    # Add a second copy of the customer-key-block to hpe-section
+    dd bs=1k conv=notrunc seek=384 count=64 \
+        if=${DEPLOY_DIR_IMAGE}/${CUSTOMER_KEY_BLOCK}.tmp \
+        of=${DEPLOY_DIR_IMAGE}/hpe-section
 
     # Expand uboot to 384K
     dd if=/dev/zero bs=1k count=384 > ${DEPLOY_DIR_IMAGE}/u-boot-tmp.${UBOOT_SUFFIX}
-    dd bs=1k conv=notrunc seek=0 count=384\
+    dd bs=1k conv=notrunc seek=0 count=384 \
             if=${DEPLOY_DIR_IMAGE}/u-boot.${UBOOT_SUFFIX} \
             of=${DEPLOY_DIR_IMAGE}/u-boot-tmp.${UBOOT_SUFFIX}
 
     # Remove unnecessary files
     rm ${DEPLOY_DIR_IMAGE}/u-boot.${UBOOT_SUFFIX} \
        ${DEPLOY_DIR_IMAGE}/gxp_tmp.sig \
-       ${DEPLOY_DIR_IMAGE}/gxp.sig
+       ${DEPLOY_DIR_IMAGE}/gxp-uboot.sig \
+       ${DEPLOY_DIR_IMAGE}/${CUSTOMER_KEY_BLOCK}.tmp
 
     mv ${DEPLOY_DIR_IMAGE}/u-boot-tmp.${UBOOT_SUFFIX} ${DEPLOY_DIR_IMAGE}/u-boot.${UBOOT_SUFFIX}
 
-    # Check uboot image size equals to 384K
+   # Check uboot image size equals to 384K
     size="$(wc -c < "${DEPLOY_DIR_IMAGE}/u-boot.${UBOOT_SUFFIX}")"
     if [ ${size} -ne ${UBOOT_IMG_SIZE} ]
     then
@@ -120,10 +197,16 @@
 
   # Create the tar archive
   tar -h -cvf ${IMGDEPLOYDIR}/${IMAGE_NAME}.$type.mtd.tar \
-    image-u-boot image-kernel image-rofs image-rwfs image-section $extra_files
+    image-u-boot image-kernel image-rofs image-rwfs image-section* $extra_files
+
+  # Create the min tar archive
+  tar -h -cvf ${IMGDEPLOYDIR}/${IMAGE_NAME}.$type.mtd.min.tar \
+    image-kernel image-rofs image-rwfs MANIFEST \
+    image-kernel.sig image-rofs.sig image-rwfs.sig MANIFEST.sig publickey
 
   cd ${IMGDEPLOYDIR}
   ln -sf ${IMAGE_NAME}.$type.mtd.tar ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.$type.mtd.tar
+  ln -sf ${IMAGE_NAME}.$type.mtd.min.tar ${IMGDEPLOYDIR}/${IMAGE_LINK_NAME}.$type.mtd.min.tar
 }
 
 do_generate_static_tar[depends] += " obmc-phosphor-image:do_generate_static"
@@ -142,10 +225,17 @@
     exit 1
   fi
 
-  make_signatures image-u-boot image-kernel image-rofs image-rwfs image-section MANIFEST publickey
+  if [ -f image-section2 ]
+  then
+    make_signatures image-u-boot image-kernel image-rofs image-rwfs image-section image-section2 MANIFEST publickey
+  else
+    make_signatures image-u-boot image-kernel image-rofs image-rwfs image-section MANIFEST publickey
+  fi
+
   make_tar_of_images static MANIFEST publickey ${signature_files}
 
   # Maintain non-standard legacy link.
   cd ${IMGDEPLOYDIR}
   ln -sf ${IMAGE_NAME}.static.mtd.tar ${IMGDEPLOYDIR}/${MACHINE}-${DATETIME}.tar
+  ln -sf ${IMAGE_NAME}.static.mtd.min.tar ${IMGDEPLOYDIR}/${MACHINE}-${DATETIME}.min.tar
 }
diff --git a/meta-hpe/meta-dl360poc/recipes-bsp/image/gxp-bootblock.bb b/meta-hpe/meta-dl360poc/recipes-bsp/image/gxp-bootblock.bbappend
similarity index 100%
rename from meta-hpe/meta-dl360poc/recipes-bsp/image/gxp-bootblock.bb
rename to meta-hpe/meta-dl360poc/recipes-bsp/image/gxp-bootblock.bbappend
diff --git a/meta-hpe/meta-gxp/classes/gxp-bootblock-n-poc.bbclass b/meta-hpe/meta-gxp/classes/gxp-bootblock-n-poc.bbclass
index 6e96ee2..8ced8e0 100644
--- a/meta-hpe/meta-gxp/classes/gxp-bootblock-n-poc.bbclass
+++ b/meta-hpe/meta-gxp/classes/gxp-bootblock-n-poc.bbclass
@@ -1,7 +1,3 @@
-LICENSE = "CLOSED"
-LIC_FILES_CHKSUM = ""
-
-
 BBRANCH = "master"
 SRC_URI = "git://github.com/HewlettPackard/gxp-bootblock.git;branch=${BBRANCH};protocol=https"
 SRCREV = "bab416f8ca8c8465d308cfeb7f8d5abc21ba343b"
@@ -15,5 +11,3 @@
 
 }
 
-addtask deploy before do_build after do_compile
-
diff --git a/meta-hpe/meta-gxp/classes/gxp-bootblock-n.bbclass b/meta-hpe/meta-gxp/classes/gxp-bootblock-n.bbclass
index bd69e16..e452545 100644
--- a/meta-hpe/meta-gxp/classes/gxp-bootblock-n.bbclass
+++ b/meta-hpe/meta-gxp/classes/gxp-bootblock-n.bbclass
@@ -1,6 +1,3 @@
-LICENSE = "CLOSED"
-LIC_FILES_CHKSUM = ""
-
 # TODO:  Manually copy the U-Boot signing key and customer-key-block here:
 HPE_GXP_KEY_FILES_DIR = "${COREBASE}/meta-hpe/meta-gxp/recipes-bsp/image/files"
 
@@ -21,6 +18,3 @@
   # Copy in the customer keyblock
   install -m 644 ${HPE_GXP_KEY_FILES_DIR}/customer-key-block ${DEPLOYDIR}/customer-key-block
 }
-
-addtask deploy before do_build after do_compile
-
diff --git a/meta-hpe/meta-gxp/classes/gxp-bootblock.bbclass b/meta-hpe/meta-gxp/classes/gxp-bootblock.bbclass
new file mode 100644
index 0000000..e5a8f2c
--- /dev/null
+++ b/meta-hpe/meta-gxp/classes/gxp-bootblock.bbclass
@@ -0,0 +1,5 @@
+LICENSE = "CLOSED"
+LIC_FILES_CHKSUM = ""
+
+addtask deploy before do_build after do_compile
+
diff --git a/meta-hpe/meta-gxp/classes/gxp2-bootblock-n.bbclass b/meta-hpe/meta-gxp/classes/gxp2-bootblock-n.bbclass
new file mode 100644
index 0000000..3ee93ff
--- /dev/null
+++ b/meta-hpe/meta-gxp/classes/gxp2-bootblock-n.bbclass
@@ -0,0 +1,21 @@
+# TODO:  Manually copy the U-Boot signing key and customer-key-block here:
+HPE_GXP_KEY_FILES_DIR = "${COREBASE}/meta-hpe/meta-gxp/recipes-bsp/image/files"
+
+inherit deploy
+
+do_deploy () {
+  install -d ${DEPLOYDIR}
+
+  # Copy in the bootblock
+  install -m 644 ${HPE_GXP_KEY_FILES_DIR}/gxp2-bootblock.bin ${DEPLOYDIR}/gxp-bootblock.bin
+
+  # Copy in files from the files subdirectory
+  install -m 644 ${HPE_GXP_KEY_FILES_DIR}/header.sig ${DEPLOYDIR}/hpe-uboot-header.section
+  install -m 644 ${HPE_GXP_KEY_FILES_DIR}/header-512.sig ${DEPLOYDIR}/hpe-uboot-header-512.section
+
+  # Copy in the U-Boot signing key
+  install -m 644 ${HPE_GXP_KEY_FILES_DIR}/customer_private_key.pem ${DEPLOYDIR}/hpe-uboot-signing-key.pem
+
+  # Copy in the customer keyblock
+  install -m 644 ${HPE_GXP_KEY_FILES_DIR}/customer-key-block ${DEPLOYDIR}/customer-key-block
+}
diff --git a/meta-hpe/meta-gxp/recipes-bsp/image/gxp-bootblock.bb b/meta-hpe/meta-gxp/recipes-bsp/image/gxp-bootblock.bb
index d8bcc54..4abe5c5 100644
--- a/meta-hpe/meta-gxp/recipes-bsp/image/gxp-bootblock.bb
+++ b/meta-hpe/meta-gxp/recipes-bsp/image/gxp-bootblock.bb
@@ -1 +1 @@
-inherit gxp-bootblock-n
+inherit gxp-bootblock
diff --git a/meta-hpe/meta-rl300-g11/conf/layer.conf b/meta-hpe/meta-rl300-g11/conf/layer.conf
new file mode 100644
index 0000000..9f4ea85
--- /dev/null
+++ b/meta-hpe/meta-rl300-g11/conf/layer.conf
@@ -0,0 +1,10 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have recipes-* directories, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+            ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "rl300-g11-layer"
+BBFILE_PATTERN_rl300-g11-layer := "^${LAYERDIR}/"
+LAYERSERIES_COMPAT_rl300-g11-layer := "mickledore"
diff --git a/meta-hpe/meta-rl300-g11/conf/machine/rl300-g11.conf b/meta-hpe/meta-rl300-g11/conf/machine/rl300-g11.conf
new file mode 100644
index 0000000..d451347
--- /dev/null
+++ b/meta-hpe/meta-rl300-g11/conf/machine/rl300-g11.conf
@@ -0,0 +1,6 @@
+KERNEL_DEVICETREE = "gxp.dtb"
+
+require conf/machine/include/gxp.inc
+require conf/machine/include/obmc-bsp-common.inc
+require conf/machine/include/hpe.inc
+
diff --git a/meta-hpe/meta-rl300-g11/conf/templates/default/bblayers.conf.sample b/meta-hpe/meta-rl300-g11/conf/templates/default/bblayers.conf.sample
new file mode 100644
index 0000000..8614156
--- /dev/null
+++ b/meta-hpe/meta-rl300-g11/conf/templates/default/bblayers.conf.sample
@@ -0,0 +1,20 @@
+# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf
+# changes incompatibly
+LCONF_VERSION = "8"
+
+BBPATH = "${TOPDIR}"
+BBFILES ?= ""
+
+BBLAYERS ?= " \
+  ##OEROOT##/meta \
+  ##OEROOT##/meta-openembedded/meta-oe \
+  ##OEROOT##/meta-openembedded/meta-networking \
+  ##OEROOT##/meta-openembedded/meta-perl \
+  ##OEROOT##/meta-openembedded/meta-python \
+  ##OEROOT##/meta-openembedded/meta-webserver \
+  ##OEROOT##/meta-phosphor \
+  ##OEROOT##/meta-hpe \
+  ##OEROOT##/meta-hpe/meta-common \
+  ##OEROOT##/meta-hpe/meta-gxp \
+  ##OEROOT##/meta-hpe/meta-rl300-g11 \
+  "
\ No newline at end of file
diff --git a/meta-hpe/meta-rl300-g11/conf/templates/default/local.conf.sample b/meta-hpe/meta-rl300-g11/conf/templates/default/local.conf.sample
new file mode 100644
index 0000000..8f21b38
--- /dev/null
+++ b/meta-hpe/meta-rl300-g11/conf/templates/default/local.conf.sample
@@ -0,0 +1,282 @@
+#
+# This file is your local configuration file and is where all local user settings
+# are placed. The comments in this file give some guide to the options a new user
+# to the system might want to change but pretty much any configuration option can
+# be set in this file. More adventurous users can look at
+# local.conf.sample.extended which contains other examples of configuration which
+# can be placed in this file but new users likely won't need any of them
+# initially. There's also site.conf.sample which contains examples of site specific
+# information such as proxy server addresses.
+#
+# Lines starting with the '#' character are commented out and in some cases the
+# default values are provided as comments to show people example syntax. Enabling
+# the option is a question of removing the # character and making any change to the
+# variable as required.
+
+#
+# Machine Selection
+#
+# You need to select a specific machine to target the build with. There are a selection
+# of emulated machines available which can boot and run in the QEMU emulator:
+#
+#MACHINE ?= "qemuarm"
+#MACHINE ?= "qemuarm64"
+#MACHINE ?= "qemumips"
+#MACHINE ?= "qemumips64"
+#MACHINE ?= "qemuppc"
+#MACHINE ?= "qemux86"
+#MACHINE ?= "qemux86-64"
+#
+# There are also the following hardware board target machines included for 
+# demonstration purposes:
+#
+#MACHINE ?= "beaglebone-yocto"
+#MACHINE ?= "genericx86"
+#MACHINE ?= "genericx86-64"
+#MACHINE ?= "edgerouter"
+#
+# This sets the default machine to be qemux86-64 if no other machine is selected:
+MACHINE ??= "rl300-g11"
+
+# These are some of the more commonly used values. Looking at the files in the
+# meta/conf/machine directory, or the conf/machine directory of any additional layers
+# you add in will show all the available machines.
+
+#
+# Where to place downloads
+#
+# During a first build the system will download many different source code tarballs
+# from various upstream projects. This can take a while, particularly if your network
+# connection is slow. These are all stored in DL_DIR. When wiping and rebuilding you
+# can preserve this directory to speed up this part of subsequent builds. This directory
+# is safe to share between multiple builds on the same machine too.
+#
+# The default is a downloads directory under TOPDIR which is the build directory.
+#
+#DL_DIR ?= "${TOPDIR}/downloads"
+
+#
+# Where to place shared-state files
+#
+# BitBake has the capability to accelerate builds based on previously built output.
+# This is done using "shared state" files which can be thought of as cache objects
+# and this option determines where those files are placed.
+#
+# You can wipe out TMPDIR leaving this directory intact and the build would regenerate
+# from these files if no changes were made to the configuration. If changes were made
+# to the configuration, only shared state files where the state was still valid would
+# be used (done using checksums).
+#
+# The default is a sstate-cache directory under TOPDIR.
+#
+#SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
+
+#
+# Where to place the build output
+#
+# This option specifies where the bulk of the building work should be done and
+# where BitBake should place its temporary files and output. Keep in mind that
+# this includes the extraction and compilation of many applications and the toolchain
+# which can use Gigabytes of hard disk space.
+#
+# The default is a tmp directory under TOPDIR.
+#
+#TMPDIR = "${TOPDIR}/tmp"
+
+#
+# Default policy config
+#
+# The distribution setting controls which policy settings are used as defaults.
+# The default value is fine for general Yocto project use, at least initially.
+# Ultimately when creating custom policy, people will likely end up subclassing 
+# these defaults.
+#
+DISTRO ?= "openbmc-phosphor"
+# As an example of a subclass there is a "bleeding" edge policy configuration
+# where many versions are set to the absolute latest code from the upstream 
+# source control systems. This is just mentioned here as an example, its not
+# useful to most new users.
+# DISTRO ?= "poky-bleeding"
+
+#
+# Package Management configuration
+#
+# This variable lists which packaging formats to enable. Multiple package backends
+# can be enabled at once and the first item listed in the variable will be used
+# to generate the root filesystems.
+# Options are:
+#  - 'package_deb' for debian style deb files
+#  - 'package_ipk' for ipk files are used by opkg (a debian style embedded package manager)
+#  - 'package_rpm' for rpm style packages
+# E.g.: PACKAGE_CLASSES ?= "package_rpm package_deb package_ipk"
+# OE-Core defaults to ipkg, whilst Poky defaults to rpm:
+# PACKAGE_CLASSES ?= "package_rpm"
+
+#
+# SDK target architecture
+#
+# This variable specifies the architecture to build SDK items for and means
+# you can build the SDK packages for architectures other than the machine you are
+# running the build on (i.e. building i686 packages on an x86_64 host).
+# Supported values are i686, x86_64, aarch64
+#SDKMACHINE ?= "i686"
+
+#
+# Extra image configuration defaults
+#
+# The EXTRA_IMAGE_FEATURES variable allows extra packages to be added to the generated
+# images. Some of these options are added to certain image types automatically. The
+# variable can contain the following options:
+#  "dbg-pkgs"       - add -dbg packages for all installed packages
+#                     (adds symbol information for debugging/profiling)
+#  "src-pkgs"       - add -src packages for all installed packages
+#                     (adds source code for debugging)
+#  "dev-pkgs"       - add -dev packages for all installed packages
+#                     (useful if you want to develop against libs in the image)
+#  "ptest-pkgs"     - add -ptest packages for all ptest-enabled packages
+#                     (useful if you want to run the package test suites)
+#  "tools-sdk"      - add development tools (gcc, make, pkgconfig etc.)
+#  "tools-debug"    - add debugging tools (gdb, strace)
+#  "eclipse-debug"  - add Eclipse remote debugging support
+#  "tools-profile"  - add profiling tools (oprofile, lttng, valgrind)
+#  "tools-testapps" - add useful testing tools (ts_print, aplay, arecord etc.)
+#  "debug-tweaks"   - make an image suitable for development
+#                     e.g. ssh root access has a blank password
+# There are other application targets that can be used here too, see
+# meta/classes-recipe/image.bbclass and
+# meta/classes-recipe/core-image.bbclass for more details.
+# We default to enabling the debugging tweaks.
+EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
+
+#
+# Additional image features
+#
+# The following is a list of additional classes to use when building images which
+# enable extra features. Some available options which can be included in this variable
+# are:
+#   - 'buildstats' collect build statistics
+USER_CLASSES ?= "buildstats"
+
+#
+# Runtime testing of images
+#
+# The build system can test booting virtual machine images under qemu (an emulator)
+# after any root filesystems are created and run tests against those images. It can also
+# run tests against any SDK that are built. To enable this uncomment these lines.
+# See meta/classes-recipe/test{image,sdk}.bbclass for further details.
+#IMAGE_CLASSES += "testimage testsdk"
+#TESTIMAGE_AUTO:qemuall = "1"
+
+#
+# Interactive shell configuration
+#
+# Under certain circumstances the system may need input from you and to do this it
+# can launch an interactive shell. It needs to do this since the build is
+# multithreaded and needs to be able to handle the case where more than one parallel
+# process may require the user's attention. The default is iterate over the available
+# terminal types to find one that works.
+#
+# Examples of the occasions this may happen are when resolving patches which cannot
+# be applied, to use the devshell or the kernel menuconfig
+#
+# Supported values are auto, gnome, xfce, rxvt, screen, konsole (KDE 3.x only), none
+# Note: currently, Konsole support only works for KDE 3.x due to the way
+# newer Konsole versions behave
+#OE_TERMINAL = "auto"
+# By default disable interactive patch resolution (tasks will just fail instead):
+PATCHRESOLVE = "noop"
+
+#
+# Disk Space Monitoring during the build
+#
+# Monitor the disk space during the build. If there is less that 1GB of space or less
+# than 100K inodes in any key build location (TMPDIR, DL_DIR, SSTATE_DIR), gracefully
+# shutdown the build. If there is less than 100MB or 1K inodes, perform a hard halt
+# of the build. The reason for this is that running completely out of space can corrupt
+# files and damages the build in ways which may not be easily recoverable.
+# It's necessary to monitor /tmp, if there is no space left the build will fail
+# with very exotic errors.
+BB_DISKMON_DIRS ??= "\
+    STOPTASKS,${TMPDIR},1G,100K \
+    STOPTASKS,${DL_DIR},1G,100K \
+    STOPTASKS,${SSTATE_DIR},1G,100K \
+    STOPTASKS,/tmp,100M,100K \
+    HALT,${TMPDIR},100M,1K \
+    HALT,${DL_DIR},100M,1K \
+    HALT,${SSTATE_DIR},100M,1K \
+    HALT,/tmp,10M,1K"
+
+#
+# Shared-state files from other locations
+#
+# As mentioned above, shared state files are prebuilt cache data objects which can be
+# used to accelerate build time. This variable can be used to configure the system
+# to search other mirror locations for these objects before it builds the data itself.
+#
+# This can be a filesystem directory, or a remote url such as https or ftp. These
+# would contain the sstate-cache results from previous builds (possibly from other
+# machines). This variable works like fetcher MIRRORS/PREMIRRORS and points to the
+# cache locations to check for the shared objects.
+# NOTE: if the mirror uses the same structure as SSTATE_DIR, you need to add PATH
+# at the end as shown in the examples below. This will be substituted with the
+# correct path within the directory structure.
+#SSTATE_MIRRORS ?= "\
+#file://.* https://someserver.tld/share/sstate/PATH;downloadfilename=PATH \
+#file://.* file:///some/local/dir/sstate/PATH"
+
+#
+# Yocto Project SState Mirror
+#
+# The Yocto Project has prebuilt artefacts available for its releases, you can enable
+# use of these by uncommenting the following lines. This will mean the build uses
+# the network to check for artefacts at the start of builds, which does slow it down
+# equally, it will also speed up the builds by not having to build things if they are
+# present in the cache. It assumes you can download something faster than you can build it
+# which will depend on your network.
+# Note: For this to work you also need hash-equivalence passthrough to the matching server
+#
+#BB_HASHSERVE_UPSTREAM = "hashserv.yocto.io:8687"
+#SSTATE_MIRRORS ?= "file://.* http://sstate.yoctoproject.org/all/PATH;downloadfilename=PATH"
+
+#
+# Qemu configuration
+#
+# By default native qemu will build with a builtin VNC server where graphical output can be
+# seen. The line below enables the SDL UI frontend too.
+PACKAGECONFIG:append:pn-qemu-system-native = " sdl"
+# By default libsdl2-native will be built, if you want to use your host's libSDL instead of 
+# the minimal libsdl built by libsdl2-native then uncomment the ASSUME_PROVIDED line below.
+#ASSUME_PROVIDED += "libsdl2-native"
+
+# You can also enable the Gtk UI frontend, which takes somewhat longer to build, but adds
+# a handy set of menus for controlling the emulator.
+#PACKAGECONFIG:append:pn-qemu-system-native = " gtk+"
+
+#
+# Hash Equivalence
+#
+# Enable support for automatically running a local hash equivalence server and
+# instruct bitbake to use a hash equivalence aware signature generator. Hash
+# equivalence improves reuse of sstate by detecting when a given sstate
+# artifact can be reused as equivalent, even if the current task hash doesn't
+# match the one that generated the artifact.
+#
+# A shared hash equivalent server can be set with "<HOSTNAME>:<PORT>" format
+#
+#BB_HASHSERVE = "auto"
+#BB_SIGNATURE_HANDLER = "OEEquivHash"
+
+#
+# Memory Resident Bitbake
+#
+# Bitbake's server component can stay in memory after the UI for the current command
+# has completed. This means subsequent commands can run faster since there is no need
+# for bitbake to reload cache files and so on. Number is in seconds, after which the
+# server will shut down.
+#
+#BB_SERVER_TIMEOUT = "60"
+
+# CONF_VERSION is increased each time build/conf/ changes incompatibly and is used to
+# track the version of this file when it was generated. This can safely be ignored if
+# this doesn't mean anything to you.
+CONF_VERSION = "2"
diff --git a/meta-hpe/meta-rl300-g11/recipes-bsp/image/gxp-bootblock.bbappend b/meta-hpe/meta-rl300-g11/recipes-bsp/image/gxp-bootblock.bbappend
new file mode 100644
index 0000000..f80f395
--- /dev/null
+++ b/meta-hpe/meta-rl300-g11/recipes-bsp/image/gxp-bootblock.bbappend
@@ -0,0 +1 @@
+inherit gxp2-bootblock-n
