mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-30 10:39:04 +00:00
48873ace4e
There can be some leftovers from other image recipes, if the same directory names are used and multiply image types are selected. Therefore remove directories used in the recipe, before contents for the image are prepared. Signed-off-by: Tomasz Maciej Nowak <tomek_n@o2.pl>
184 lines
5.9 KiB
Makefile
184 lines
5.9 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_MODULES = biosdisk boot chain configfile ext2 linux ls part_msdos reboot serial test vga
|
|
GRUB2_MODULES_ISO = biosdisk boot chain configfile iso9660 linux ls part_msdos reboot serial test vga
|
|
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_MODULES += at_keyboard
|
|
GRUB2_MODULES_ISO += at_keyboard
|
|
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
|
|
grub-mkimage \
|
|
-p /boot/grub \
|
|
-d $(STAGING_DIR_HOST)/lib/grub/i386-pc \
|
|
-o $(KDIR)/grub2/core.img \
|
|
-O i386-pc \
|
|
-c ./grub-early.cfg \
|
|
$(GRUB2_MODULES)
|
|
$(CP) $(STAGING_DIR_HOST)/lib/grub/i386-pc/*.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/
|
|
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)/grub2" \
|
|
-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
|
|
grub-mkimage \
|
|
-p /boot/grub \
|
|
-d $(STAGING_DIR_HOST)/lib/grub/i386-pc \
|
|
-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' \
|
|
-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))
|