diff --git a/patches/openwrt/0022-x86-add-grub2-iso-support.patch b/patches/openwrt/0022-x86-add-grub2-iso-support.patch new file mode 100644 index 00000000..274127c5 --- /dev/null +++ b/patches/openwrt/0022-x86-add-grub2-iso-support.patch @@ -0,0 +1,110 @@ +From: nbd +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 ++} diff --git a/patches/openwrt/0023-x86-explicitely-pass-staging-directory-to-grub-mkimage-instead-of-relying-on-build-time-defaults-12821.patch b/patches/openwrt/0023-x86-explicitely-pass-staging-directory-to-grub-mkimage-instead-of-relying-on-build-time-defaults-12821.patch new file mode 100644 index 00000000..2701ca97 --- /dev/null +++ b/patches/openwrt/0023-x86-explicitely-pass-staging-directory-to-grub-mkimage-instead-of-relying-on-build-time-defaults-12821.patch @@ -0,0 +1,24 @@ +From: jow +Date: Thu, 17 Jan 2013 15:46:26 +0000 +Subject: x86: explicitely pass staging directory to grub-mkimage instead of relying on build time defaults (#12821) + +diff --git a/target/linux/x86/image/Makefile b/target/linux/x86/image/Makefile +index 8f0debd..6e2bd54 100644 +--- a/target/linux/x86/image/Makefile ++++ b/target/linux/x86/image/Makefile +@@ -102,6 +102,7 @@ ifneq ($(CONFIG_X86_GRUB_IMAGES),) + $(INSTALL_DIR) $(KDIR)/root.grub/boot/grub $(KDIR)/grub2 + $(CP) $(KDIR)/bzImage $(KDIR)/root.grub/boot/vmlinuz + grub-mkimage \ ++ -d $(STAGING_DIR_HOST)/lib/grub/i386-pc \ + -o $(KDIR)/grub2/core.img \ + -O i386-pc \ + -c ./grub-early.cfg \ +@@ -171,6 +172,7 @@ ifdef CONFIG_X86_USE_GRUB2 + $(INSTALL_DIR) $(KDIR)/root.grub/boot/grub $(KDIR)/grub2 + $(CP) $(KDIR)/bzImage $(KDIR)/root.grub/boot/vmlinuz + grub-mkimage \ ++ -d $(STAGING_DIR_HOST)/lib/grub/i386-pc \ + -o $(KDIR)/grub2/eltorito.img \ + -O i386-pc \ + -c ./grub-early.cfg \ diff --git a/patches/openwrt/0024-grub2-Add-sub-package-grub-editenv-for-target-installation.patch b/patches/openwrt/0024-grub2-Add-sub-package-grub-editenv-for-target-installation.patch new file mode 100644 index 00000000..1029c37a --- /dev/null +++ b/patches/openwrt/0024-grub2-Add-sub-package-grub-editenv-for-target-installation.patch @@ -0,0 +1,57 @@ +From: blogic +Date: Tue, 7 May 2013 12:35:07 +0000 +Subject: grub2: Add sub package grub-editenv for target installation + +grub-editenv allows to modify grub2 environment files. Add a new package +that build grub2 for the target and packs up grub-editenv. + +Signed-off-by: Helmut Schaa + +diff --git a/package/grub2/Makefile b/package/grub2/Makefile +index b606f54..dd490ff 100644 +--- a/package/grub2/Makefile ++++ b/package/grub2/Makefile +@@ -16,7 +16,6 @@ PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz + PKG_SOURCE_URL:=@GNU/grub + PKG_MD5SUM:=e927540b6eda8b024fb0391eeaa4091c + +-PKG_HOST_ONLY:=1 + HOST_BUILD_PARALLEL:=1 + PKG_BUILD_DEPENDS:=grub2/host + +@@ -32,6 +31,23 @@ define Package/grub2 + DEPENDS:=@TARGET_x86 + endef + ++define Package/grub2-editenv ++ CATEGORY:=Utilities ++ SECTION:=utils ++ TITLE:=Grub2 Environment editor ++ URL:=http://www.gnu.org/software/grub/ ++ DEPENDS:=@TARGET_x86 ++endef ++ ++define Package/grub2-editenv/description ++ Edit grub2 environment files. ++endef ++ ++CONFIGURE_ARGS += \ ++ --target=$(REAL_GNU_TARGET_NAME) \ ++ --disable-werror \ ++ --disable-nls ++ + HOST_CONFIGURE_ARGS += \ + --target=$(REAL_GNU_TARGET_NAME) \ + --sbindir="$(STAGING_DIR_HOST)/bin" \ +@@ -47,5 +63,11 @@ define Host/Configure + $(Host/Configure/Default) + endef + ++define Package/grub2-editenv/install ++ $(INSTALL_DIR) $(1)/usr/sbin ++ $(INSTALL_BIN) $(PKG_BUILD_DIR)/grub-editenv $(1)/usr/sbin/ ++endef ++ + $(eval $(call HostBuild)) + $(eval $(call BuildPackage,grub2)) ++$(eval $(call BuildPackage,grub2-editenv)) diff --git a/patches/openwrt/0025-x86-Fix-CONFIG_X86_GRUB_SERIAL.patch b/patches/openwrt/0025-x86-Fix-CONFIG_X86_GRUB_SERIAL.patch new file mode 100644 index 00000000..286fd163 --- /dev/null +++ b/patches/openwrt/0025-x86-Fix-CONFIG_X86_GRUB_SERIAL.patch @@ -0,0 +1,37 @@ +From: nbd +Date: Sat, 10 Aug 2013 18:35:29 +0000 +Subject: x86: Fix CONFIG_X86_GRUB_SERIAL="" + +With + + .config:CONFIG_X86_GRUB_SERIAL="" + +which (AFAICT) is the way to tell GRUB not to use a serial console, in + + target/linux/x86/image/Makefile:ifneq ($(CONFIG_X86_GRUB_SERIAL),) + +$(CONFIG_X86_GRUB_SERIAL) expands to `""' (a literal double double-quote), +making the condition unconditionally false. + +This patch fixes the situation by passing CONFIG_X86_GRUB_SERIAL through +qstrip before testing. + +Signed-off-by: Tamas TEVESZ + +diff --git a/target/linux/x86/image/Makefile b/target/linux/x86/image/Makefile +index 6e2bd54..2e73519 100644 +--- a/target/linux/x86/image/Makefile ++++ b/target/linux/x86/image/Makefile +@@ -27,8 +27,10 @@ ifneq ($(strip $(foreach subtarget,$(USE_ATKBD),$(CONFIG_TARGET_x86_$(subtarget) + GRUB2_MODULES += at_keyboard + endif + +-ifneq ($(CONFIG_X86_GRUB_SERIAL),) +- GRUB_CONSOLE_CMDLINE += console=$(call qstrip,$(CONFIG_X86_GRUB_SERIAL)),$(CONFIG_X86_GRUB_BAUDRATE)n8 ++GRUB_SERIAL:=$(call qstrip,$(CONFIG_X86_GRUB_SERIAL)) ++ ++ifneq ($(GRUB_SERIAL),) ++ GRUB_CONSOLE_CMDLINE += console=$(GRUB_SERIAL),$(CONFIG_X86_GRUB_BAUDRATE)n8 + GRUB_SERIAL_CONFIG := serial --unit=0 --speed=$(CONFIG_X86_GRUB_BAUDRATE) --word=8 --parity=no --stop=1 + GRUB_TERMINALS += serial + endif diff --git a/patches/openwrt/0026-grub2-update-to-2.02-beta2-fixes-mac-os-x-10.9-support-and-many-other-things.patch b/patches/openwrt/0026-grub2-update-to-2.02-beta2-fixes-mac-os-x-10.9-support-and-many-other-things.patch new file mode 100644 index 00000000..f7b763cc --- /dev/null +++ b/patches/openwrt/0026-grub2-update-to-2.02-beta2-fixes-mac-os-x-10.9-support-and-many-other-things.patch @@ -0,0 +1,218 @@ +From: nbd +Date: Wed, 12 Mar 2014 11:21:16 +0000 +Subject: grub2: update to 2.02-beta2, fixes mac os x 10.9 support (and many other things) + +Signed-off-by: Felix Fietkau + +diff --git a/package/grub2/Makefile b/package/grub2/Makefile +index dd490ff..4edd92b 100644 +--- a/package/grub2/Makefile ++++ b/package/grub2/Makefile +@@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk + include $(INCLUDE_DIR)/kernel.mk + + PKG_NAME:=grub +-PKG_VERSION:=2.00 ++PKG_VERSION:=2.02~beta2 + PKG_RELEASE:=1 + +-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +-PKG_SOURCE_URL:=@GNU/grub +-PKG_MD5SUM:=e927540b6eda8b024fb0391eeaa4091c ++PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz ++PKG_SOURCE_URL:=http://alpha.gnu.org/gnu/grub ++PKG_MD5SUM:=be62932eade308a364ea4bbc91295930 + + HOST_BUILD_PARALLEL:=1 + PKG_BUILD_DEPENDS:=grub2/host +diff --git a/package/grub2/patches/100-grub_setup_root.patch b/package/grub2/patches/100-grub_setup_root.patch +index 7775b2a..9619c41 100644 +--- a/package/grub2/patches/100-grub_setup_root.patch ++++ b/package/grub2/patches/100-grub_setup_root.patch +@@ -1,41 +1,6 @@ + --- a/util/grub-setup.c + +++ b/util/grub-setup.c +-@@ -141,12 +141,11 @@ write_rootdev (char *core_img, grub_devi +- static void +- setup (const char *dir, +- const char *boot_file, const char *core_file, +-- const char *dest, int force, +-+ const char *root, const char *dest, int force, +- int fs_probe, int allow_floppy) +- { +- char *boot_path, *core_path, *core_path_dev, *core_path_dev_full; +- char *boot_img, *core_img; +-- char *root = 0; +- size_t boot_size, core_size; +- grub_uint16_t core_sectors; +- grub_device_t root_dev = 0, dest_dev, core_dev; +-@@ -253,7 +252,10 @@ setup (const char *dir, +- +- core_dev = dest_dev; +- +-- { +-+ if (root) +-+ root_dev = grub_device_open(root); +-+ +-+ if (!root_dev) { +- char **root_devices = grub_guess_root_devices (dir); +- char **cur; +- int found = 0; +-@@ -263,6 +265,8 @@ setup (const char *dir, +- char *drive; +- grub_device_t try_dev; +- +-+ if (root_dev) +-+ break; +- drive = grub_util_get_grub_dev (*cur); +- if (!drive) +- continue; +-@@ -956,6 +960,8 @@ static struct argp_option options[] = { ++@@ -87,6 +87,8 @@ static struct argp_option options[] = { + N_("install even if problems are detected"), 0}, + {"skip-fs-probe",'s',0, 0, + N_("do not probe for filesystems in DEVICE"), 0}, +@@ -44,7 +9,7 @@ + {"verbose", 'v', 0, 0, N_("print verbose messages."), 0}, + {"allow-floppy", 'a', 0, 0, + /* TRANSLATORS: The potential breakage isn't limited to floppies but it's +-@@ -993,6 +999,7 @@ struct arguments ++@@ -130,6 +132,7 @@ struct arguments + char *core_file; + char *dir; + char *dev_map; +@@ -52,7 +17,7 @@ + int force; + int fs_probe; + int allow_floppy; +-@@ -1040,6 +1047,13 @@ argp_parser (int key, char *arg, struct ++@@ -178,6 +181,13 @@ argp_parser (int key, char *arg, struct + arguments->dev_map = xstrdup (arg); + break; + +@@ -66,12 +31,88 @@ + case 'f': + arguments->force = 1; + break; +-@@ -1172,7 +1186,7 @@ main (int argc, char *argv[]) +- setup (arguments.dir ? : DEFAULT_DIRECTORY, +- arguments.boot_file ? : DEFAULT_BOOT_FILE, +- arguments.core_file ? : DEFAULT_CORE_FILE, +-- dest_dev, arguments.force, +-+ arguments.root_dev, dest_dev, arguments.force, +- arguments.fs_probe, arguments.allow_floppy); ++@@ -313,7 +323,7 @@ main (int argc, char *argv[]) ++ GRUB_SETUP_FUNC (arguments.dir ? : DEFAULT_DIRECTORY, ++ arguments.boot_file ? : DEFAULT_BOOT_FILE, ++ arguments.core_file ? : DEFAULT_CORE_FILE, ++- dest_dev, arguments.force, +++ arguments.root_dev, dest_dev, arguments.force, ++ arguments.fs_probe, arguments.allow_floppy, ++ arguments.add_rs_codes); ++ ++--- a/util/setup.c +++++ b/util/setup.c ++@@ -247,13 +247,12 @@ identify_partmap (grub_disk_t disk __att ++ void ++ SETUP (const char *dir, ++ const char *boot_file, const char *core_file, ++- const char *dest, int force, +++ const char *root, const char *dest, int force, ++ int fs_probe, int allow_floppy, ++ int add_rs_codes __attribute__ ((unused))) /* unused on sparc64 */ ++ { ++ char *core_path; ++ char *boot_img, *core_img, *boot_path; ++- char *root = 0; ++ size_t boot_size, core_size; ++ #ifdef GRUB_SETUP_BIOS ++ grub_uint16_t core_sectors; ++@@ -307,7 +306,10 @@ SETUP (const char *dir, ++ ++ core_dev = dest_dev; ++ ++- { +++ if (root) +++ root_dev = grub_device_open(root); +++ +++ if (!root_dev) { ++ char **root_devices = grub_guess_root_devices (dir); ++ char **cur; ++ int found = 0; ++@@ -317,6 +319,8 @@ SETUP (const char *dir, ++ char *drive; ++ grub_device_t try_dev; ++ +++ if (root_dev) +++ break; ++ drive = grub_util_get_grub_dev (*cur); ++ if (!drive) ++ continue; ++--- a/include/grub/util/install.h +++++ b/include/grub/util/install.h ++@@ -182,13 +182,13 @@ grub_install_get_image_target (const cha ++ void ++ grub_util_bios_setup (const char *dir, ++ const char *boot_file, const char *core_file, ++- const char *dest, int force, +++ const char *root, const char *dest, int force, ++ int fs_probe, int allow_floppy, ++ int add_rs_codes); ++ void ++ grub_util_sparc_setup (const char *dir, ++ const char *boot_file, const char *core_file, ++- const char *dest, int force, +++ const char *root, const char *dest, int force, ++ int fs_probe, int allow_floppy, ++ int add_rs_codes); + +- /* Free resources. */ ++--- a/util/grub-install.c +++++ b/util/grub-install.c ++@@ -1660,7 +1660,7 @@ main (int argc, char *argv[]) ++ /* Now perform the installation. */ ++ if (install_bootsector) ++ grub_util_bios_setup (platdir, "boot.img", "core.img", ++- install_drive, force, +++ NULL, install_drive, force, ++ fs_probe, allow_floppy, add_rs_codes); ++ break; ++ } ++@@ -1686,7 +1686,7 @@ main (int argc, char *argv[]) ++ /* Now perform the installation. */ ++ if (install_bootsector) ++ grub_util_sparc_setup (platdir, "boot.img", "core.img", ++- install_device, force, +++ NULL, install_device, force, ++ fs_probe, allow_floppy, ++ 0 /* unused */ ); ++ break; +diff --git a/package/grub2/patches/200-fix-gets-removal.patch b/package/grub2/patches/200-fix-gets-removal.patch +index 4370fb5..737fb97 100644 +--- a/package/grub2/patches/200-fix-gets-removal.patch ++++ b/package/grub2/patches/200-fix-gets-removal.patch +@@ -1,15 +1,16 @@ + --- a/grub-core/gnulib/stdio.in.h + +++ b/grub-core/gnulib/stdio.in.h +-@@ -137,12 +137,6 @@ +- "use gnulib module fflush for portable POSIX compliance"); ++@@ -695,13 +695,6 @@ _GL_WARN_ON_USE (getline, "getline is un ++ # endif + #endif + + -/* It is very rare that the developer ever has full control of stdin, +-- so any use of gets warrants an unconditional warning. Assume it is +-- always declared, since it is required by C89. */ ++- so any use of gets warrants an unconditional warning; besides, C11 ++- removed it. */ + -#undef gets +--_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead"); ++-#if HAVE_RAW_DECL_GETS ++-#endif + - +- #if @GNULIB_FOPEN@ +- # if @REPLACE_FOPEN@ +- # if !(defined __cplusplus && defined GNULIB_NAMESPACE) ++ ++ #if @GNULIB_OBSTACK_PRINTF@ || @GNULIB_OBSTACK_PRINTF_POSIX@ ++ struct obstack; diff --git a/patches/openwrt/0027-grub2-disable-libdevmapper-fix-build-when-it-s-available.patch b/patches/openwrt/0027-grub2-disable-libdevmapper-fix-build-when-it-s-available.patch new file mode 100644 index 00000000..d758d24a --- /dev/null +++ b/patches/openwrt/0027-grub2-disable-libdevmapper-fix-build-when-it-s-available.patch @@ -0,0 +1,20 @@ +From: nbd +Date: Sun, 30 Mar 2014 19:55:39 +0000 +Subject: grub2: disable libdevmapper - fix build when it's available + +Signed-off-by: Alexander Couzens + +diff --git a/package/grub2/Makefile b/package/grub2/Makefile +index 4edd92b..ed86fff 100644 +--- a/package/grub2/Makefile ++++ b/package/grub2/Makefile +@@ -46,7 +46,8 @@ endef + CONFIGURE_ARGS += \ + --target=$(REAL_GNU_TARGET_NAME) \ + --disable-werror \ +- --disable-nls ++ --disable-nls \ ++ --disable-device-mapper + + HOST_CONFIGURE_ARGS += \ + --target=$(REAL_GNU_TARGET_NAME) \ diff --git a/patches/openwrt/0028-grub2-disable-mkfont-fix-build-on-Archlinux.patch b/patches/openwrt/0028-grub2-disable-mkfont-fix-build-on-Archlinux.patch new file mode 100644 index 00000000..e2026c08 --- /dev/null +++ b/patches/openwrt/0028-grub2-disable-mkfont-fix-build-on-Archlinux.patch @@ -0,0 +1,20 @@ +From: nbd +Date: Sun, 30 Mar 2014 19:55:43 +0000 +Subject: grub2: disable mkfont - fix build on Archlinux + +Signed-off-by: Alexander Couzens + +diff --git a/package/grub2/Makefile b/package/grub2/Makefile +index ed86fff..509fb60 100644 +--- a/package/grub2/Makefile ++++ b/package/grub2/Makefile +@@ -47,7 +47,8 @@ CONFIGURE_ARGS += \ + --target=$(REAL_GNU_TARGET_NAME) \ + --disable-werror \ + --disable-nls \ +- --disable-device-mapper ++ --disable-device-mapper \ ++ --disable-grub-mkfont + + HOST_CONFIGURE_ARGS += \ + --target=$(REAL_GNU_TARGET_NAME) \