diff --git a/Makefile.am b/Makefile.am
index 8c779f8..78aeffa 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -14,8 +14,10 @@
 mboxd_CFLAGS = $(LIBSYSTEMD_CFLAGS)
 
 if VIRTUAL_PNOR_ENABLED
-mboxd_SOURCES += pnor_partition_table.cpp mboxd_pnor_partition_table.cpp
+mboxd_SOURCES += pnor_partition_table.cpp mboxd_pnor_partition_table.cpp mboxd_flash_virtual.cpp
 mboxd_LDFLAGS += -lstdc++fs
+else
+mboxd_SOURCES += mboxd_flash_physical.c
 endif
 
 mboxctl_SOURCES = mboxctl.c
@@ -31,13 +33,13 @@
 
 test_sanity_SOURCES = test/sanity.c
 
-test_copy_flash_SOURCES = test/copy_flash.c mboxd_flash.c common.c mtd.c test/tmpf.c
+test_copy_flash_SOURCES = test/copy_flash.c mboxd_flash.c mboxd_flash_physical.c common.c mtd.c test/tmpf.c
 
 test_erase_flash_SOURCES = test/erase_flash.c mboxd_flash.c common.c test/tmpf.c
 
 test_write_flash_SOURCES = test/write_flash.c mboxd_flash.c common.c test/tmpf.c
 
-TEST_MBOX_SRCS = mboxd_msg.c mboxd_windows.c mboxd_lpc.c mboxd_flash.c common.c
+TEST_MBOX_SRCS = mboxd_msg.c mboxd_windows.c mboxd_lpc.c mboxd_flash.c common.c mboxd_flash_physical.c
 TEST_MOCK_SRCS = test/tmpf.c test/mbox.c test/system.c
 
 test_get_mbox_info_v2_SOURCES = test/get_mbox_info_v2.c \
diff --git a/mboxd.c b/mboxd.c
index 5f851df..c418543 100644
--- a/mboxd.c
+++ b/mboxd.c
@@ -51,6 +51,7 @@
 #include "mboxd_lpc.h"
 #include "mboxd_msg.h"
 #include "mboxd_windows.h"
+#include "mboxd_pnor_partition_table.h"
 
 #define USAGE \
 "\nUsage: %s [-V | --version] [-h | --help] [-v[v] | --verbose] [-s | --syslog]\n" \
@@ -311,6 +312,10 @@
 
 	MSG_INFO("Starting Daemon\n");
 
+#ifdef VIRTUAL_PNOR_ENABLED
+	vpnor_create_partition_table(context);
+#endif
+
 	rc = init_signals(context, &set);
 	if (rc) {
 		goto finish;
@@ -367,6 +372,9 @@
 	free_lpc_dev(context);
 	free_mbox_dev(context);
 	free_windows(context);
+#ifdef VIRTUAL_PNOR_ENABLED
+	vpnor_destroy_partition_table(context);
+#endif
 	free(context);
 
 	return rc;
diff --git a/mboxd_flash.c b/mboxd_flash.c
index 1e1b7a0..240c660 100644
--- a/mboxd_flash.c
+++ b/mboxd_flash.c
@@ -120,46 +120,6 @@
 
 /* Flash Functions */
 
-#define CHUNKSIZE (64 * 1024)
-
-/*
- * copy_flash() - Copy data from the flash device into a provided buffer
- * @context:	The mbox context pointer
- * @offset:	The flash offset to copy from (bytes)
- * @mem:	The buffer to copy into (must be of atleast size)
- * @size:	The number of bytes to copy
- *
- * Return:	0 on success otherwise negative error code
- */
-int copy_flash(struct mbox_context *context, uint32_t offset, void *mem,
-	       uint32_t size)
-{
-	int32_t size_read;
-
-	MSG_DBG("Copy flash to %p for size 0x%.8x from offset 0x%.8x\n",
-		mem, size, offset);
-	if (lseek(context->fds[MTD_FD].fd, offset, SEEK_SET) != offset) {
-		MSG_ERR("Couldn't seek flash at pos: %u %s\n", offset,
-			strerror(errno));
-		return -MBOX_R_SYSTEM_ERROR;
-	}
-
-	do {
-		size_read = read(context->fds[MTD_FD].fd, mem,
-					  min_u32(CHUNKSIZE, size));
-		if (size_read < 0) {
-			MSG_ERR("Couldn't copy mtd into ram: %s\n",
-				strerror(errno));
-			return -MBOX_R_SYSTEM_ERROR;
-		}
-
-		size -= size_read;
-		mem += size_read;
-	} while (size && size_read);
-
-	return size ? -MBOX_R_SYSTEM_ERROR : 0;
-}
-
 /*
  * flash_is_erased() - Check if an offset into flash is erased
  * @context:	The mbox context pointer
diff --git a/mboxd_flash.h b/mboxd_flash.h
index af9757b..d8b0d0d 100644
--- a/mboxd_flash.h
+++ b/mboxd_flash.h
@@ -23,6 +23,10 @@
 
 #include "mbox.h"
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 int init_flash_dev(struct mbox_context *context);
 void free_flash_dev(struct mbox_context *context);
 int copy_flash(struct mbox_context *context, uint32_t offset, void *mem,
@@ -33,4 +37,7 @@
 int write_flash(struct mbox_context *context, uint32_t offset, void *buf,
 		uint32_t count);
 
+#ifdef __cplusplus
+}
+#endif
 #endif /* MBOXD_FLASH_H */
diff --git a/mboxd_flash_physical.c b/mboxd_flash_physical.c
new file mode 100644
index 0000000..92c70e7
--- /dev/null
+++ b/mboxd_flash_physical.c
@@ -0,0 +1,71 @@
+/*
+ * Mailbox Daemon Flash Helpers
+ *
+ * Copyright 2017 IBM
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#define _GNU_SOURCE
+#include <stdint.h>
+#include <stdlib.h>
+#include <syslog.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <errno.h>
+#include <mtd/mtd-abi.h>
+
+#include "mbox.h"
+#include "common.h"
+#include "mboxd_flash.h"
+
+#define CHUNKSIZE (64 * 1024)
+
+/*
+ * copy_flash() - Copy data from the flash device into a provided buffer
+ * @context:	The mbox context pointer
+ * @offset:	The flash offset to copy from (bytes)
+ * @mem:	The buffer to copy into (must be of atleast 'size' bytes)
+ * @size:	The number of bytes to copy
+ *
+ * Return:	0 on success otherwise negative error code
+ */
+int copy_flash(struct mbox_context *context, uint32_t offset, void *mem,
+	       uint32_t size)
+{
+	int32_t size_read;
+
+	MSG_DBG("Copy flash to %p for size 0x%.8x from offset 0x%.8x\n",
+		mem, size, offset);
+	if (lseek(context->fds[MTD_FD].fd, offset, SEEK_SET) != offset) {
+		MSG_ERR("Couldn't seek flash at pos: %u %s\n", offset,
+			strerror(errno));
+		return -MBOX_R_SYSTEM_ERROR;
+	}
+
+	do {
+		size_read = read(context->fds[MTD_FD].fd, mem,
+					  min_u32(CHUNKSIZE, size));
+		if (size_read < 0) {
+			MSG_ERR("Couldn't copy mtd into ram: %s\n",
+				strerror(errno));
+			return -MBOX_R_SYSTEM_ERROR;
+		}
+
+		size -= size_read;
+		mem += size_read;
+	} while (size && size_read);
+
+	return size ? -MBOX_R_SYSTEM_ERROR : 0;
+}
diff --git a/mboxd_flash_virtual.cpp b/mboxd_flash_virtual.cpp
new file mode 100644
index 0000000..9aed5fd
--- /dev/null
+++ b/mboxd_flash_virtual.cpp
@@ -0,0 +1,64 @@
+/*
+ * Mailbox Daemon Window Helpers
+ *
+ * Copyright 2017 IBM
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <syslog.h>
+
+extern "C" {
+#include "common.h"
+}
+
+#include "mboxd_flash.h"
+#include "mboxd_pnor_partition_table.h"
+
+/*
+ * copy_flash() - Copy data from the virtual pnor into a provided buffer
+ * @context:    The mbox context pointer
+ * @offset:     The pnor offset to copy from (bytes)
+ * @mem:        The buffer to copy into (must be of atleast 'size' bytes)
+ * @size:       The number of bytes to copy
+ *
+ * Return:      0 on success otherwise negative error code
+ */
+int copy_flash(struct mbox_context* context, uint32_t offset, void* mem,
+               uint32_t size)
+{
+    int rc = 0;
+
+    MSG_DBG("Copy virtual pnor to %p for size 0x%.8x from offset 0x%.8x\n",
+            mem, size, offset);
+
+    /* The virtual PNOR partition table starts at offset 0 in the virtual
+     * pnor image. Check if host asked for an offset that lies within the
+     * partition table.
+     */
+    size_t sz =
+        vpnor_get_partition_table_size(context) << context->block_size_shift;
+    if (offset < sz)
+    {
+        const struct pnor_partition_table* table =
+            vpnor_get_partition_table(context);
+        memcpy(mem,
+               ((uint8_t*)table) + offset,
+               min_u32(sz - offset, size));
+    }
+
+    return rc;
+}
