From 308181458ba61a9f3b93500e01f84c43d5ba2512 Mon Sep 17 00:00:00 2001
From: Bensong Liu <bensl@microsoft.com>
Date: Sun, 22 Nov 2020 18:01:59 +0800
Subject: [PATCH] add_efi

---
 Makefile                                      | 23 ++++++----
 {bootloader => bootloader-legacy}/Makefile    |  0
 {bootloader => bootloader-legacy}/boot.asm    |  0
 {bootloader => bootloader-legacy}/mbr_end.inc |  0
 {bootloader => bootloader-legacy}/str.16.inc  |  0
 {bootloader => bootloader-legacy}/str.32.inc  |  0
 {bootloader => bootloader-legacy}/test.asm    |  0
 .../scripts/assemble-hdd-image.fish           | 43 +++++++++++++++++++
 efi/efi-to-hdd-image.fish                     | 29 -------------
 9 files changed, 57 insertions(+), 38 deletions(-)
 rename {bootloader => bootloader-legacy}/Makefile (100%)
 rename {bootloader => bootloader-legacy}/boot.asm (100%)
 rename {bootloader => bootloader-legacy}/mbr_end.inc (100%)
 rename {bootloader => bootloader-legacy}/str.16.inc (100%)
 rename {bootloader => bootloader-legacy}/str.32.inc (100%)
 rename {bootloader => bootloader-legacy}/test.asm (100%)
 create mode 100755 bootloader-uefi/scripts/assemble-hdd-image.fish
 delete mode 100755 efi/efi-to-hdd-image.fish

diff --git a/Makefile b/Makefile
index b5bd258..22091c6 100644
--- a/Makefile
+++ b/Makefile
@@ -1,20 +1,25 @@
 
-default: assemble
+default: assemble-legacy
 
-bootloader:
-	$(MAKE) -C bootloader
+bootloader-legacy:
+	$(MAKE) -C bootloader-legacy
+
+bootloader-uefi:
+	$(MAKE) -C bootloader-legacy
 
 kernel:
 	$(MAKE) -C kernel
 
-.PHONY: bootloader kernel
+.PHONY: bootloader-legacy bootloader-uefi kernel
+
+build: bootloader-legacy bootloader-uefi kernel
 
-build: bootloader kernel
+assemble-legacy: build
+	cat bootloader-legacy/boot.img kernel/kernel.img > legacy.img
 
-assemble: build
-	cat bootloader/boot.img kernel/kernel.img > disk.img
+assemble-uefi: build
 
-run: assemble
-	qemu-system-x86_64 disk.img
+run-legacy: assemble-legacy
+	qemu-system-x86_64 legacy.img
 
 
diff --git a/bootloader/Makefile b/bootloader-legacy/Makefile
similarity index 100%
rename from bootloader/Makefile
rename to bootloader-legacy/Makefile
diff --git a/bootloader/boot.asm b/bootloader-legacy/boot.asm
similarity index 100%
rename from bootloader/boot.asm
rename to bootloader-legacy/boot.asm
diff --git a/bootloader/mbr_end.inc b/bootloader-legacy/mbr_end.inc
similarity index 100%
rename from bootloader/mbr_end.inc
rename to bootloader-legacy/mbr_end.inc
diff --git a/bootloader/str.16.inc b/bootloader-legacy/str.16.inc
similarity index 100%
rename from bootloader/str.16.inc
rename to bootloader-legacy/str.16.inc
diff --git a/bootloader/str.32.inc b/bootloader-legacy/str.32.inc
similarity index 100%
rename from bootloader/str.32.inc
rename to bootloader-legacy/str.32.inc
diff --git a/bootloader/test.asm b/bootloader-legacy/test.asm
similarity index 100%
rename from bootloader/test.asm
rename to bootloader-legacy/test.asm
diff --git a/bootloader-uefi/scripts/assemble-hdd-image.fish b/bootloader-uefi/scripts/assemble-hdd-image.fish
new file mode 100755
index 0000000..ee233d1
--- /dev/null
+++ b/bootloader-uefi/scripts/assemble-hdd-image.fish
@@ -0,0 +1,43 @@
+#!/usr/bin/fish
+
+set efi_file $argv[1]
+set kernel_file $argv[2]
+if test (count $argv) -lt 2
+    echo "Usage: $argv[0] <efi_file> <kernel_file>"
+    exit 1
+end
+
+set output_file ./disk.img
+set mountp ./tmp.mount.point
+set disk_size 256M
+
+# Create disk image
+dd if=/dev/zero of=$output_file bs=$disk_size count=1 status=progress
+and sgdisk -n 1:0:+128M $output_file # EFI system partition
+
+# Format partitions
+and sudo losetup /dev/loop5 $output_file --partscan
+and sudo mkfs.fat -s2 -F32 /dev/loop5p1
+
+# Mount EFI partition
+and rm -rf $mountp ; and mkdir $mountp
+and sudo mount /dev/loop5p1 $mountp
+and sudo mkdir -p $mountp/efi/boot
+
+# load files
+and sudo cp $efi_file $mountp/efi/boot/BOOTX64.efi
+and sudo cp $kernel_file $mountp/kernel.efi
+
+# Cleanup
+and sudo umount $mountp
+and sudo sync
+and sudo losetup -d /dev/loop5
+and rmdir $mountp
+
+and echo "Success"
+or echo "Failed."
+
+
+
+
+
diff --git a/efi/efi-to-hdd-image.fish b/efi/efi-to-hdd-image.fish
deleted file mode 100755
index 190e69d..0000000
--- a/efi/efi-to-hdd-image.fish
+++ /dev/null
@@ -1,29 +0,0 @@
-#!/usr/bin/fish
-
-set efi_file $argv[1]
-set output_file ./output.img
-set mountp ./tmp.mount.point
-
-dd if=/dev/zero of=$output_file bs=560M count=1 status=progress
-and sgdisk -n 1:0:0 $output_file
-
-and sudo losetup /dev/loop5 $output_file --partscan
-and sudo mkfs.vfat -F32 /dev/loop5p1
-
-and rm -rf $mountp ; and mkdir $mountp
-and sudo mount /dev/loop5p1 $mountp
-and sudo mkdir -p $mountp/efi/boot
-
-and sudo cp $efi_file $mountp/efi/boot/BOOTX64.efi
-
-and sudo umount $mountp
-and sudo sync
-and sudo losetup -d /dev/loop5
-
-and echo "Success"
-or echo "Failed."
-
-
-
-
-
-- 
GitLab