summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Config.in7
-rw-r--r--include/image.mk8
-rw-r--r--target/linux/x86/Makefile4
-rw-r--r--target/linux/x86/image/Config.in2
-rw-r--r--target/linux/x86/image/Makefile15
5 files changed, 34 insertions, 2 deletions
diff --git a/Config.in b/Config.in
index 34d82492e..df331fc2b 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 68ce0480d..fea7d1ce6 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 27987a41b..ddb50e640 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 a60249685..4a36f6312 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 f19e6b3f3..d470fe1c5 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))
+