From 215fa7eb8b055e580c30a9851fbcacdc5fef15a6 Mon Sep 17 00:00:00 2001
From: John Crispin <john@openwrt.org>
Date: Mon, 8 Oct 2007 18:53:19 +0000
Subject: [PATCH] added generation of x86 livecds, from #2391

SVN-Revision: 9191
---
 Config.in                        |  7 +++++++
 include/image.mk                 |  8 ++++++++
 target/linux/x86/Makefile        |  4 +++-
 target/linux/x86/image/Config.in |  2 +-
 target/linux/x86/image/Makefile  | 15 +++++++++++++++
 5 files changed, 34 insertions(+), 2 deletions(-)

diff --git a/Config.in b/Config.in
index 34d82492e7..df331fc2bf 100644
--- a/Config.in
+++ b/Config.in
@@ -48,6 +48,13 @@ menu "Target Images"
 		help
 		  Ext2 file system with some free space for uml images
 
+	config TARGET_ROOTFS_ISO 
+		bool "iso" 
+		default n 
+		depends TARGET_ROOTFS_INITRAMFS && TARGET_x86 
+		help 
+		  Create some bootable ISO image 
+
 comment "Image Options"
 
 source "target/linux/*/image/Config.in"
diff --git a/include/image.mk b/include/image.mk
index 68ce0480d1..fea7d1ce6f 100644
--- a/include/image.mk
+++ b/include/image.mk
@@ -81,6 +81,12 @@ ifeq ($(CONFIG_TARGET_ROOTFS_EXT2FS),y)
   endef
 endif
 
+ifeq ($(CONFIG_TARGET_ROOTFS_ISO),y) 
+  define Image/mkfs/iso 
+		$(call Image/Build,iso) 
+  endef 
+endif 
+
 
 define Image/mkfs/prepare/default
 	find $(TARGET_DIR) -type f -not -perm +0100 -not -name 'ssh_host*' | $(XARGS) chmod 0644
@@ -113,6 +119,7 @@ ifneq ($(IB),1)
 	$(call Image/mkfs/squashfs)
 	$(call Image/mkfs/tgz)
 	$(call Image/mkfs/ext2)
+	$(call Image/mkfs/iso)
 else
   install: compile install-targets
 	$(call Image/BuildKernel)
@@ -120,6 +127,7 @@ else
 	$(call Image/mkfs/squashfs)
 	$(call Image/mkfs/tgz)
 	$(call Image/mkfs/ext2)
+	$(call Image/mkfs/iso)
 endif
 	
 ifneq ($(IB),1)
diff --git a/target/linux/x86/Makefile b/target/linux/x86/Makefile
index 27987a41bf..ddb50e6404 100644
--- a/target/linux/x86/Makefile
+++ b/target/linux/x86/Makefile
@@ -19,4 +19,6 @@ DEFAULT_PACKAGES += kmod-natsemi kmod-ne2k-pci
 $(eval $(call Target,generic))
 $(eval $(call Target,mediacenter))
 $(eval $(call BuildTarget))
-
+$(eval $(call RequireCommand,mkisofs, \
+   	Please install mkisofs. \
+))
diff --git a/target/linux/x86/image/Config.in b/target/linux/x86/image/Config.in
index a602496856..4a36f63128 100644
--- a/target/linux/x86/image/Config.in
+++ b/target/linux/x86/image/Config.in
@@ -1,7 +1,7 @@
 config X86_GRUB_IMAGES
     bool "Build GRUB images (Linux x86 or x86_64 host only)"
     depends TARGET_x86
-    depends TARGET_ROOTFS_EXT2FS || TARGET_ROOTFS_JFFS2 || TARGET_ROOTFS_SQUASHFS
+    depends TARGET_ROOTFS_EXT2FS || TARGET_ROOTFS_JFFS2 || TARGET_ROOTFS_SQUASHFS || TARGET_ROOTFS_ISO
     default y
 
 config X86_GRUB_IMAGES_PAD
diff --git a/target/linux/x86/image/Makefile b/target/linux/x86/image/Makefile
index f19e6b3f38..d470fe1c5f 100644
--- a/target/linux/x86/image/Makefile
+++ b/target/linux/x86/image/Makefile
@@ -74,6 +74,20 @@ define Image/Build/squashfs
     $(call prepare_generic_squashfs,$(KDIR)/root.squashfs)
 endef
 
+define Image/Build/iso 
+	$(CP) \
+		$(STAGING_DIR_HOST)/usr/lib/grub/i386-pc/stage2_eltorito \
+		$(KDIR)/root.grub/boot/grub/stage2_eltorito 
+	sed -i \
+		-e 's#@CMDLINE@#$(strip $(call Image/cmdline/$(1))) $(BOOTOPTS)#g' \
+		-e 's#@BAUDRATE@#$(CONFIG_X86_GRUB_BAUDRATE)#g' \
+		-e 's#(hd0,0)#(cd)#g' \
+		 $(KDIR)/root.grub/boot/grub/menu.lst 
+	$(CP) $(KDIR)/bzImage $(KDIR)/root.grub/boot/vmlinuz 
+	mkisofs -R -b boot/grub/stage2_eltorito -no-emul-boot -boot-load-size 4 -boot-info-table \
+		-o $(KDIR)/root.iso $(KDIR)/root.grub 
+endef 
+
 define Image/BuildKernel
 	$(CP) $(KDIR)/bzImage $(BIN_DIR)/openwrt-$(BOARD)-$(KERNEL)-vmlinuz
 endef
@@ -86,3 +100,4 @@ define Image/Build
 endef
 
 $(eval $(call BuildImage))
+
-- 
GitLab