mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-21 06:33:41 +00:00
5a5df62d95
Let the grub2 package take care of creating installable grub2 images, this will allow creating grub2 images without first calling x86 image generation recipe. Also as side effect, since those images are now shared, it'll reduce the number of calling grub-mkimage. Signed-off-by: Tomasz Maciej Nowak <tomek_n@o2.pl> [rebase, adjusted commit title] Signed-off-by: Paul Spooren <mail@aparcar.org>
171 lines
5.5 KiB
Makefile
171 lines
5.5 KiB
Makefile
#
|
|
# Copyright (C) 2006-2012 OpenWrt.org
|
|
#
|
|
# This is free software, licensed under the GNU General Public License v2.
|
|
# See /LICENSE for more information.
|
|
#
|
|
include $(TOPDIR)/rules.mk
|
|
include $(INCLUDE_DIR)/image.mk
|
|
|
|
export PATH=$(TARGET_PATH):/sbin
|
|
|
|
GRUB2_VARIANT =
|
|
GRUB_TERMINALS =
|
|
GRUB_SERIAL_CONFIG =
|
|
GRUB_TERMINAL_CONFIG =
|
|
GRUB_CONSOLE_CMDLINE =
|
|
|
|
USE_ATKBD = generic 64
|
|
|
|
ifneq ($(strip $(foreach subtarget,$(USE_ATKBD),$(CONFIG_TARGET_x86_$(subtarget)))),)
|
|
GRUB2_VARIANT := generic
|
|
else
|
|
GRUB2_VARIANT := legacy
|
|
endif
|
|
|
|
ifneq ($(CONFIG_GRUB_CONSOLE),)
|
|
GRUB_CONSOLE_CMDLINE += console=tty0
|
|
GRUB_TERMINALS += console
|
|
endif
|
|
|
|
GRUB_SERIAL:=$(call qstrip,$(CONFIG_GRUB_SERIAL))
|
|
|
|
ifneq ($(GRUB_SERIAL),)
|
|
GRUB_CONSOLE_CMDLINE += console=$(GRUB_SERIAL),$(CONFIG_GRUB_BAUDRATE)n8$(if $(CONFIG_GRUB_FLOWCONTROL),r,)
|
|
GRUB_SERIAL_CONFIG := serial --unit=0 --speed=$(CONFIG_GRUB_BAUDRATE) --word=8 --parity=no --stop=1 --rtscts=$(if $(CONFIG_GRUB_FLOWCONTROL),on,off)
|
|
GRUB_TERMINALS += serial
|
|
endif
|
|
|
|
ifneq ($(GRUB_TERMINALS),)
|
|
GRUB_TERMINAL_CONFIG := terminal_input $(GRUB_TERMINALS); terminal_output $(GRUB_TERMINALS)
|
|
endif
|
|
|
|
ROOTPART:=$(call qstrip,$(CONFIG_TARGET_ROOTFS_PARTNAME))
|
|
ROOTPART:=$(if $(ROOTPART),$(ROOTPART),PARTUUID=$(IMG_PART_SIGNATURE)-02)
|
|
|
|
GRUB_TIMEOUT:=$(call qstrip,$(CONFIG_GRUB_TIMEOUT))
|
|
GRUB_TITLE:=$(call qstrip,$(CONFIG_GRUB_TITLE))
|
|
|
|
ifneq ($(CONFIG_GRUB_IMAGES),)
|
|
|
|
BOOTOPTS:=$(call qstrip,$(CONFIG_GRUB_BOOTOPTS))
|
|
|
|
define Image/cmdline/ext4
|
|
root=$(ROOTPART) rootfstype=ext4 rootwait
|
|
endef
|
|
|
|
define Image/cmdline/squashfs
|
|
root=$(ROOTPART) rootfstype=squashfs rootwait
|
|
endef
|
|
|
|
define Image/Build/grub2
|
|
# left here because the image builder doesnt need these
|
|
rm -fR $(KDIR)/root.grub $(KDIR)/grub2
|
|
$(INSTALL_DIR) $(KDIR)/root.grub/boot/grub $(KDIR)/grub2
|
|
$(CP) $(KDIR)/bzImage $(KDIR)/root.grub/boot/vmlinuz
|
|
$(CP) $(STAGING_DIR_HOST)/lib/grub/i386-pc/*.img \
|
|
$(STAGING_DIR_HOST)/lib/grub/grub2-$(strip $(GRUB2_VARIANT))/core.img \
|
|
$(KDIR)/grub2/
|
|
echo '(hd0) $(BIN_DIR)/$(IMG_COMBINED)-$(1).img' > $(KDIR)/grub2/device.map
|
|
sed \
|
|
-e 's#@SERIAL_CONFIG@#$(strip $(GRUB_SERIAL_CONFIG))#g' \
|
|
-e 's#@TERMINAL_CONFIG@#$(strip $(GRUB_TERMINAL_CONFIG))#g' \
|
|
-e 's#@CMDLINE@#$(strip $(call Image/cmdline/$(1)) $(BOOTOPTS) $(GRUB_CONSOLE_CMDLINE))#g' \
|
|
-e 's#@TIMEOUT@#$(GRUB_TIMEOUT)#g' \
|
|
-e 's#@TITLE@#$(GRUB_TITLE)#g' \
|
|
./grub.cfg > $(KDIR)/root.grub/boot/grub/grub.cfg
|
|
-$(CP) $(STAGING_DIR_ROOT)/boot/. $(KDIR)/root.grub/boot/
|
|
grub-bios-setup -V | cut -d' ' -f3 > $(KDIR)/root.grub/boot/grub/version
|
|
PADDING="1" SIGNATURE="$(IMG_PART_SIGNATURE)" PATH="$(TARGET_PATH)" $(SCRIPT_DIR)/gen_image_generic.sh \
|
|
$(BIN_DIR)/$(IMG_COMBINED)-$(1).img \
|
|
$(CONFIG_TARGET_KERNEL_PARTSIZE) $(KDIR)/root.grub \
|
|
$(CONFIG_TARGET_ROOTFS_PARTSIZE) $(KDIR)/root.$(1) \
|
|
256
|
|
grub-bios-setup \
|
|
--device-map="$(KDIR)/grub2/device.map" \
|
|
-d "$(KDIR)/root.grub/boot/grub" \
|
|
-r "hd0,msdos1" \
|
|
"$(BIN_DIR)/$(IMG_COMBINED)-$(1).img"
|
|
endef
|
|
endif
|
|
|
|
define Image/Build/iso
|
|
rm -fR $(KDIR)/root.grub $(KDIR)/grub2
|
|
$(INSTALL_DIR) $(KDIR)/root.grub/boot/grub $(KDIR)/grub2
|
|
$(CP) $(KDIR)/bzImage $(KDIR)/root.grub/boot/vmlinuz
|
|
$(STAGING_DIR_HOST)/lib/grub/grub2-iso/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' \
|
|
-e 's#@TITLE@#$(GRUB_TITLE)#g' \
|
|
./grub-iso.cfg > $(KDIR)/root.grub/boot/grub/grub.cfg
|
|
-$(CP) $(STAGING_DIR_ROOT)/boot/. $(KDIR)/root.grub/boot/
|
|
mkisofs -R -b boot/grub/eltorito.img -no-emul-boot -boot-info-table \
|
|
-o $(KDIR)/root.iso $(KDIR)/root.grub $(TARGET_DIR)
|
|
endef
|
|
|
|
ifneq ($(CONFIG_VDI_IMAGES),)
|
|
define Image/Build/vdi
|
|
rm $(BIN_DIR)/$(IMG_COMBINED)-$(1).vdi || true
|
|
$(STAGING_DIR_HOST)/bin/qemu-img convert -f raw -O vdi \
|
|
$(BIN_DIR)/$(IMG_COMBINED)-$(1).img \
|
|
$(BIN_DIR)/$(IMG_COMBINED)-$(1).vdi
|
|
endef
|
|
endif
|
|
|
|
ifneq ($(CONFIG_VMDK_IMAGES),)
|
|
define Image/Build/vmdk
|
|
rm $(BIN_DIR)/$(IMG_COMBINED)-$(1).vmdk || true
|
|
$(STAGING_DIR_HOST)/bin/qemu-img convert -f raw -O vmdk \
|
|
$(BIN_DIR)/$(IMG_COMBINED)-$(1).img \
|
|
$(BIN_DIR)/$(IMG_COMBINED)-$(1).vmdk
|
|
#build the ESXI VMDK with
|
|
rm $(BIN_DIR)/$(IMG_COMBINED)-$(1)-esxi.vmdk || true
|
|
rm $(BIN_DIR)/$(IMG_COMBINED)-$(1)-esxi-flat.vmdk || true
|
|
$(STAGING_DIR_HOST)/bin/qemu-img convert -f raw -O vmdk -o adapter_type=lsilogic,subformat=monolithicFlat \
|
|
$(BIN_DIR)/$(IMG_COMBINED)-$(1).img \
|
|
$(BIN_DIR)/$(IMG_COMBINED)-$(1)-esxi.vmdk
|
|
endef
|
|
endif
|
|
|
|
define Image/Build/gzip
|
|
gzip -f9n $(BIN_DIR)/$(IMG_COMBINED)-$(1).img
|
|
gzip -f9n $(BIN_DIR)/$(IMG_ROOTFS)-$(1).img
|
|
endef
|
|
|
|
$(eval $(call Image/gzip-ext4-padded-squashfs))
|
|
|
|
define Image/BuildKernel
|
|
$(CP) $(KDIR)/bzImage $(BIN_DIR)/$(IMG_PREFIX)-vmlinuz
|
|
endef
|
|
|
|
define Image/Prepare
|
|
$(call Image/Prepare/grub2)
|
|
endef
|
|
|
|
define Image/Build/Initramfs
|
|
$(CP) $(KDIR)/bzImage-initramfs $(BIN_DIR)/$(IMG_PREFIX)-ramfs.bzImage
|
|
endef
|
|
|
|
define Image/Build
|
|
$(call Image/Build/$(1))
|
|
ifneq ($(1),iso)
|
|
$(call Image/Build/grub2,$(1))
|
|
$(call Image/Build/vdi,$(1))
|
|
$(call Image/Build/vmdk,$(1))
|
|
$(CP) $(KDIR)/root.$(1) $(BIN_DIR)/$(IMG_ROOTFS)-$(1).img
|
|
else
|
|
$(CP) $(KDIR)/root.iso $(BIN_DIR)/$(IMG_PREFIX).iso
|
|
endif
|
|
$(CP) $(KDIR)/bzImage $(BIN_DIR)/$(IMG_PREFIX)-vmlinuz
|
|
$(call Image/Build/gzip/$(1))
|
|
ifeq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),y)
|
|
$(call Image/Build/Initramfs)
|
|
endif
|
|
endef
|
|
|
|
$(eval $(call BuildImage))
|