From a5a1c6c55aeb9db352d116806ab01477e6dec344 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Sat, 7 Oct 2023 15:49:43 +0200 Subject: x86_64: add support for bootable image generation --- source/kernel/arch/x86_64/CMakeLists.txt | 29 +++++++++++++++++++++++++++ source/kernel/arch/x86_64/support/grub.cfg.in | 7 +++++++ 2 files changed, 36 insertions(+) create mode 100644 source/kernel/arch/x86_64/support/grub.cfg.in (limited to 'source/kernel/arch') diff --git a/source/kernel/arch/x86_64/CMakeLists.txt b/source/kernel/arch/x86_64/CMakeLists.txt index fe067ef..303ae1f 100644 --- a/source/kernel/arch/x86_64/CMakeLists.txt +++ b/source/kernel/arch/x86_64/CMakeLists.txt @@ -26,3 +26,32 @@ target_link_libraries("kernel" PRIVATE set_target_properties("kernel" PROPERTIES LINK_DEPENDS "${TEACHOS_KERNEL_LINKER_SCRIPT}" ) + +#[============================================================================[ +# Bootable ISO image generation +#]============================================================================] + +find_package("grub-mkrescue") + +if(grub-mkrescue_FOUND) + set(ISO_FILE "${PROJECT_BINARY_DIR}/teachos-${PROJECT_VERSION}.iso") + + file(GENERATE + OUTPUT "isofs/boot/grub/grub.cfg" + INPUT "support/grub.cfg.in" + ) + + add_custom_target("bootable-iso" + COMMAND "${GRUB_MKRESCUE_EXE}" + "-o" + "${ISO_FILE}" + "${CMAKE_CURRENT_BINARY_DIR}/isofs" + "$" + "2>/dev/null" + SOURCES + "$" + "isofs/boot/grub/grub.cfg" + BYPRODUCTS "${ISO_FILE}" + COMMENT "Creating bootable ISO image" + ) +endif() \ No newline at end of file diff --git a/source/kernel/arch/x86_64/support/grub.cfg.in b/source/kernel/arch/x86_64/support/grub.cfg.in new file mode 100644 index 0000000..49f19ce --- /dev/null +++ b/source/kernel/arch/x86_64/support/grub.cfg.in @@ -0,0 +1,7 @@ +timeout=2 +default=0 + +menuentry "TeachOS" { + multiboot2 /$ + boot +} \ No newline at end of file -- cgit v1.2.3