diff --git a/src/module/uefi/netboot.c b/src/module/uefi/netboot.c
index a897b6c..52f6580 100644
--- a/src/module/uefi/netboot.c
+++ b/src/module/uefi/netboot.c
@@ -27,9 +27,70 @@
 #include "drivers/timer/timer.h"
 #include "module/module.h"
 #include "module/uefi/fwdb.h"
+#include "net/gigaboot/gigaboot.h"
 #include "net/netboot/netboot.h"
 #include "net/netboot/params.h"
 
+
+static GigabootBuffer *resize_gigaboot_buffer(GigabootBuffer *buf, size_t size)
+{
+	EFI_SYSTEM_TABLE *st = uefi_system_table_ptr();
+	if (!st)
+		return NULL;
+	EFI_BOOT_SERVICES *bs = st->BootServices;
+
+	if (buf->size < size) {
+		EFI_PHYSICAL_ADDRESS data = (EFI_PHYSICAL_ADDRESS)(buf->data);
+		if (bs->FreePages(data, buf->size / 4096)) {
+			printf("Could not free previous gigaboot buffer.\n");
+			buf->size = 0;
+			return NULL;
+		}
+		buf->size = 0;
+
+		data = 0xffffffff;
+		if (bs->AllocatePages(AllocateMaxAddress, EfiLoaderData,
+				      size / 4096, &data)) {
+			printf("Failed to allocate gigaboot buffer.\n");
+			return NULL;
+		}
+		buf->data = (void *)data;
+		buf->size = size;
+	}
+	return buf;
+}
+
+GigabootBuffer *gigaboot_get_buffer(const char *name, size_t size)
+{
+	static GigabootBuffer kernel = {
+		.data = (void *)(uintptr_t)CONFIG_KERNEL_START,
+		.size = CONFIG_KERNEL_SIZE,
+	};
+
+	static char cmdline_buf[4096];
+	static GigabootBuffer cmdline = {
+		.data = cmdline_buf,
+		.size = sizeof(cmdline_buf),
+	};
+
+	static GigabootBuffer ramdisk;
+
+	if (!strcmp(name, gigaboot_buffer_kernel))
+		return &kernel;
+	if (!strcmp(name, gigaboot_buffer_cmdline))
+		return &cmdline;
+	if (!strcmp(name, gigaboot_buffer_ramdisk)) {
+		if (ramdisk.size != 0 && size == 0)
+			return &ramdisk;
+
+		size_t buf_size =
+			size > 0 ? (size + 4095) & ~4095 : 512 * 1024 * 1024;
+
+		return resize_gigaboot_buffer(&ramdisk, buf_size);
+	}
+	return NULL;
+}
+
 void module_main(void)
 {
 	static char cmd_line[4096];
@@ -43,5 +104,8 @@
 		halt();
 	}
 
-	netboot(cmd_line, sizeof(cmd_line));
+	if (CONFIG_GIGABOOT)
+		gigaboot();
+	else
+		netboot(cmd_line, sizeof(cmd_line));
 }
