123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- From: nbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
- Date: Sun, 7 Oct 2012 23:01:52 +0000
- Subject: x86: add grub2 iso support
- diff --git a/Config.in b/Config.in
- index 5b4522e..54df7c8 100644
- --- a/Config.in
- +++ b/Config.in
- @@ -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 0000000..beff6eb
- --- /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 13da511..8f0debd 100644
- --- a/target/linux/x86/image/Makefile
- +++ b/target/linux/x86/image/Makefile
- @@ -9,7 +9,8 @@ include $(INCLUDE_DIR)/image.mk
-
- export PATH=$(TARGET_PATH):/sbin
-
- -GRUB2_MODULES = biosdisk boot chain configfile ext2 linux ls part_msdos reboot serial vga
- +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 =
- @@ -51,7 +52,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
- @@ -165,7 +166,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 \
- @@ -179,7 +204,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 0000000..4d5d697
- --- /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
- +}
|