diff options
| -rw-r--r-- | Config.in | 2 | ||||
| -rw-r--r-- | target/linux/x86/base-files/lib/preinit/20_check_iso | 5 | ||||
| -rw-r--r-- | target/linux/x86/image/Makefile | 32 | ||||
| -rw-r--r-- | target/linux/x86/image/grub-iso.cfg | 10 | 
4 files changed, 45 insertions, 4 deletions
| @@ -81,7 +81,7 @@ menu "Target Images"  	config TARGET_ROOTFS_ISO  		bool "iso"  		default n -		depends TARGET_ROOTFS_INITRAMFS && TARGET_x86 +		depends on TARGET_x86_generic  		help  		  Create some bootable ISO image diff --git a/target/linux/x86/base-files/lib/preinit/20_check_iso b/target/linux/x86/base-files/lib/preinit/20_check_iso new file mode 100644 index 000000000..beff6eba0 --- /dev/null +++ b/target/linux/x86/base-files/lib/preinit/20_check_iso @@ -0,0 +1,5 @@ +check_for_iso() { +	grep -qE '/dev/root.*iso9660' /proc/mounts && ramoverlay +} + +boot_hook_add preinit_mount_root check_for_iso diff --git a/target/linux/x86/image/Makefile b/target/linux/x86/image/Makefile index 547f0839f..17e300d50 100644 --- a/target/linux/x86/image/Makefile +++ b/target/linux/x86/image/Makefile @@ -10,6 +10,7 @@ include $(INCLUDE_DIR)/image.mk  export PATH=$(TARGET_PATH):/sbin  GRUB2_MODULES = at_keyboard biosdisk boot chain configfile ext2 linux ls part_msdos reboot serial vga +GRUB2_MODULES_ISO = at_keyboard biosdisk boot chain configfile iso9660 linux ls part_msdos reboot serial vga  GRUB_TERMINALS =  GRUB_SERIAL_CONFIG =  GRUB_TERMINAL_CONFIG = @@ -45,7 +46,7 @@ ifneq ($(CONFIG_X86_GRUB_IMAGES),)    define Image/cmdline/ext4      root=$(ROOTPART) rootfstype=ext4 rootwait    endef -   +    define Image/cmdline/jffs2-64k      block2mtd.block2mtd=$(ROOTPART),65536,rootfs root=/dev/mtdblock0 rootfstype=jffs2 rootwait    endef @@ -159,7 +160,31 @@ define Image/Build/squashfs  	$(call prepare_generic_squashfs,$(KDIR)/root.squashfs)  endef -define Image/Build/iso  +ifdef CONFIG_X86_USE_GRUB2 +  define Image/Build/iso +	$(INSTALL_DIR) $(KDIR)/root.grub/boot/grub $(KDIR)/grub2 +	$(CP) $(KDIR)/bzImage $(KDIR)/root.grub/boot/vmlinuz +	grub-mkimage \ +		-o $(KDIR)/grub2/eltorito.img \ +		-O i386-pc \ +		-c ./grub-early.cfg \ +		$(GRUB2_MODULES_ISO) +	cat \ +		$(STAGING_DIR_HOST)/lib/grub/i386-pc/cdboot.img \ +		$(KDIR)/grub2/eltorito.img \ +		> $(KDIR)/root.grub/boot/grub/eltorito.img +	sed \ +		-e 's#@SERIAL_CONFIG@#$(strip $(GRUB_SERIAL_CONFIG))#g' \ +		-e 's#@TERMINAL_CONFIG@#$(strip $(GRUB_TERMINAL_CONFIG))#g' \ +		-e 's#@CMDLINE@#root=/dev/sr0 rootfstype=iso9660 rootwait $(strip $(call Image/cmdline/$(1)) $(BOOTOPTS) $(GRUB_CONSOLE_CMDLINE))#g' \ +		-e 's#@TIMEOUT@#$(GRUB_TIMEOUT)#g' \ +		./grub-iso.cfg > $(KDIR)/root.grub/boot/grub/grub.cfg +	$(CP) $(KDIR)/bzImage $(KDIR)/root.grub/boot/vmlinuz +	mkisofs -R -b boot/grub/eltorito.img -no-emul-boot -boot-info-table \ +		-o $(KDIR)/root.iso $(KDIR)/root.grub $(TARGET_DIR) +  endef +else +  define Image/Build/iso  	$(INSTALL_DIR) $(KDIR)/root.grub/boot/grub  	$(CP) \  		$(KDIR)/stage2_eltorito \ @@ -173,7 +198,8 @@ define Image/Build/iso  	$(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  +  endef +endif  ifneq ($(CONFIG_X86_VDI_IMAGES),)    define Image/Build/vdi diff --git a/target/linux/x86/image/grub-iso.cfg b/target/linux/x86/image/grub-iso.cfg new file mode 100644 index 000000000..4d5d697ab --- /dev/null +++ b/target/linux/x86/image/grub-iso.cfg @@ -0,0 +1,10 @@ +@SERIAL_CONFIG@ +@TERMINAL_CONFIG@ + +set default="0" +set timeout="@TIMEOUT@" +set root='(cd)' + +menuentry "OpenWrt" { +	linux /boot/vmlinuz @CMDLINE@ noinitrd reboot=bios +} | 
