x86: switch image generation to new code
This commit introduces few related changes which need to be done in single commit to keep images buildable between git revisions. In result it retains all previous image creation possibilities with slight name change of generated images. Brief summary of the commit: * Split up image generation recipe to smaller chunks to make it more generic and reusable. * Make iso images x86 specific and drop their definition as root filesystem. * Convert image creation process to generic code specified in image.mk. * Make geode subtarget inherit features from the main target instead of redefining them. * For subtargets create device definitions with basic packages set. Signed-off-by: Tomasz Maciej Nowak <tomek_n@o2.pl> [rebased] Signed-off-by: Paul Spooren <mail@aparcar.org>
This commit is contained in:
parent
5a5df62d95
commit
cb007a7bf6
|
@ -120,13 +120,6 @@ menu "Target Images"
|
|||
help
|
||||
Create an ext4 filesystem with a journal.
|
||||
|
||||
config TARGET_ROOTFS_ISO
|
||||
bool "iso"
|
||||
default n
|
||||
depends on TARGET_x86_generic
|
||||
help
|
||||
Create a bootable ISO image.
|
||||
|
||||
config TARGET_ROOTFS_JFFS2
|
||||
bool "jffs2"
|
||||
depends on USES_JFFS2
|
||||
|
@ -191,7 +184,7 @@ menu "Target Images"
|
|||
config GRUB_IMAGES
|
||||
bool "Build GRUB images (Linux x86 or x86_64 host only)"
|
||||
depends on TARGET_x86
|
||||
depends on TARGET_ROOTFS_EXT4FS || TARGET_ROOTFS_ISO || TARGET_ROOTFS_JFFS2 || TARGET_ROOTFS_SQUASHFS
|
||||
depends on TARGET_ROOTFS_EXT4FS || TARGET_ROOTFS_JFFS2 || TARGET_ROOTFS_SQUASHFS
|
||||
select PACKAGE_grub2
|
||||
default y
|
||||
|
||||
|
@ -237,6 +230,11 @@ menu "Target Images"
|
|||
This is the title of the GRUB menu entry.
|
||||
If unspecified, it defaults to OpenWrt.
|
||||
|
||||
config ISO_IMAGES
|
||||
bool "Build LiveCD image (ISO)"
|
||||
depends on TARGET_x86
|
||||
select GRUB_IMAGES
|
||||
|
||||
config VDI_IMAGES
|
||||
bool "Build VirtualBox image files (VDI)"
|
||||
depends on TARGET_x86
|
||||
|
@ -260,14 +258,14 @@ menu "Target Images"
|
|||
|
||||
config TARGET_KERNEL_PARTSIZE
|
||||
int "Kernel partition size (in MB)"
|
||||
depends on GRUB_IMAGES || USES_BOOT_PART
|
||||
depends on USES_BOOT_PART
|
||||
default 8 if TARGET_apm821xx_sata
|
||||
default 64 if TARGET_bcm27xx
|
||||
default 16
|
||||
|
||||
config TARGET_ROOTFS_PARTSIZE
|
||||
int "Root filesystem partition size (in MB)"
|
||||
depends on GRUB_IMAGES || USES_ROOTFS_PART || TARGET_ROOTFS_EXT4FS || TARGET_omap || TARGET_rb532 || TARGET_sunxi || TARGET_uml
|
||||
depends on USES_ROOTFS_PART || TARGET_ROOTFS_EXT4FS || TARGET_omap || TARGET_rb532 || TARGET_sunxi || TARGET_uml
|
||||
default 104
|
||||
help
|
||||
Select the root filesystem partition size.
|
||||
|
|
|
@ -93,7 +93,6 @@ fs-types-$(CONFIG_TARGET_ROOTFS_SQUASHFS) += squashfs
|
|||
fs-types-$(CONFIG_TARGET_ROOTFS_JFFS2) += $(addprefix jffs2-,$(JFFS2_BLOCKSIZE))
|
||||
fs-types-$(CONFIG_TARGET_ROOTFS_JFFS2_NAND) += $(addprefix jffs2-nand-,$(NAND_BLOCKSIZE))
|
||||
fs-types-$(CONFIG_TARGET_ROOTFS_EXT4FS) += ext4
|
||||
fs-types-$(CONFIG_TARGET_ROOTFS_ISO) += iso
|
||||
fs-types-$(CONFIG_TARGET_ROOTFS_UBIFS) += ubifs
|
||||
fs-subtypes-$(CONFIG_TARGET_ROOTFS_JFFS2) += $(addsuffix -raw,$(addprefix jffs2-,$(JFFS2_BLOCKSIZE)))
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
|
|||
ARCH:=i386
|
||||
BOARD:=x86
|
||||
BOARDNAME:=x86
|
||||
FEATURES:=squashfs ext4 vdi vmdk pcmcia targz fpu
|
||||
FEATURES:=squashfs ext4 vdi vmdk pcmcia targz fpu boot-part rootfs-part
|
||||
SUBTARGETS:=generic legacy geode 64
|
||||
|
||||
KERNEL_PATCHVER:=5.4
|
||||
|
@ -23,6 +23,6 @@ DEFAULT_PACKAGES += partx-utils mkf2fs e2fsprogs
|
|||
|
||||
$(eval $(call BuildTarget))
|
||||
|
||||
$(eval $(call $(if $(CONFIG_TARGET_ROOTFS_ISO),RequireCommand,Ignore),mkisofs, \
|
||||
$(eval $(call $(if $(CONFIG_ISO_IMAGES),RequireCommand,Ignore),mkisofs, \
|
||||
Please install mkisofs. \
|
||||
))
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
BOARDNAME:=AMD Geode based systems
|
||||
FEATURES:=squashfs ext4 pci usb gpio
|
||||
FEATURES:=pci usb gpio
|
||||
DEFAULT_PACKAGES += \
|
||||
kmod-crypto-hw-geode kmod-crypto-cbc \
|
||||
kmod-ath5k kmod-ath9k \
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
define Device/generic
|
||||
DEVICE_TITLE := Generic x86/64
|
||||
GRUB2_VARIANT := generic
|
||||
endef
|
||||
TARGET_DEVICES += generic
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (C) 2006-2012 OpenWrt.org
|
||||
#
|
||||
# Copyright (C) 2006-2020 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
|
@ -7,16 +7,12 @@
|
|||
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
|
||||
|
@ -46,125 +42,100 @@ 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))
|
||||
|
||||
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) \
|
||||
define Build/combined
|
||||
$(CP) $(KDIR)/$(KERNEL_NAME) $@.boot/boot/vmlinuz
|
||||
-$(CP) $(STAGING_DIR_ROOT)/boot/. $@.boot/boot/
|
||||
PADDING="$(CONFIG_TARGET_IMAGES_PAD)" SIGNATURE="$(IMG_PART_SIGNATURE)" $(SCRIPT_DIR)/gen_image_generic.sh \
|
||||
$@ \
|
||||
$(CONFIG_TARGET_KERNEL_PARTSIZE) $@.boot \
|
||||
$(CONFIG_TARGET_ROOTFS_PARTSIZE) $(IMAGE_ROOTFS) \
|
||||
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
|
||||
define Build/grub-config
|
||||
rm -fR $@.boot
|
||||
$(INSTALL_DIR) $@.boot/boot/grub
|
||||
sed \
|
||||
-e 's#@SERIAL_CONFIG@#$(strip $(GRUB_SERIAL_CONFIG))#g' \
|
||||
-e 's#@TERMINAL_CONFIG@#$(strip $(GRUB_TERMINAL_CONFIG))#g' \
|
||||
-e 's#@ROOTPART@#root=$(ROOTPART) rootwait#g' \
|
||||
-e 's#@CMDLINE@#$(BOOTOPTS) $(GRUB_CONSOLE_CMDLINE)#g' \
|
||||
-e 's#@TIMEOUT@#$(GRUB_TIMEOUT)#g' \
|
||||
-e 's#@TITLE@#$(GRUB_TITLE)#g' \
|
||||
./grub-$(1).cfg > $@.boot/boot/grub/grub.cfg
|
||||
endef
|
||||
|
||||
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 Build/grub-install
|
||||
rm -fR $@.grub2
|
||||
$(INSTALL_DIR) $@.grub2
|
||||
$(CP) $(STAGING_DIR_HOST)/lib/grub/i386-pc/*.img \
|
||||
$(STAGING_DIR_HOST)/lib/grub/grub2-$(GRUB2_VARIANT)/core.img \
|
||||
$@.grub2/
|
||||
echo '(hd0) $@' > $@.grub2/device.map
|
||||
$(STAGING_DIR_HOST)/bin/grub-bios-setup \
|
||||
-m "$@.grub2/device.map" \
|
||||
-d "$@.grub2" \
|
||||
-r "hd0,msdos1" \
|
||||
$@
|
||||
endef
|
||||
|
||||
define Image/Build/gzip
|
||||
gzip -f9n $(BIN_DIR)/$(IMG_COMBINED)-$(1).img
|
||||
gzip -f9n $(BIN_DIR)/$(IMG_ROOTFS)-$(1).img
|
||||
define Build/iso
|
||||
$(CP) $(KDIR)/$(KERNEL_NAME) $@.boot/boot/vmlinuz
|
||||
cat \
|
||||
$(STAGING_DIR_HOST)/lib/grub/i386-pc/cdboot.img \
|
||||
$(STAGING_DIR_HOST)/lib/grub/grub2-iso/eltorito.img \
|
||||
> $@.boot/boot/grub/eltorito.img
|
||||
-$(CP) $(STAGING_DIR_ROOT)/boot/. $@.boot/boot/
|
||||
mkisofs -R -b boot/grub/eltorito.img -no-emul-boot -boot-info-table \
|
||||
-o $@ $@.boot $(TARGET_DIR)
|
||||
endef
|
||||
|
||||
define Build/vdi
|
||||
qemu-img convert -f raw -O vdi $@ $@.new
|
||||
@mv $@.new $@
|
||||
endef
|
||||
|
||||
define Build/vmdk
|
||||
qemu-img convert -f raw -O vmdk $@ $@.new
|
||||
@mv $@.new $@
|
||||
endef
|
||||
|
||||
DEVICE_VARS += GRUB2_VARIANT
|
||||
define Device/Default
|
||||
ARTIFACT/image.iso := grub-config iso | iso
|
||||
IMAGES := combined.img.gz
|
||||
IMAGE/combined.img.gz := append-rootfs | pad-extra 128k | grub-config pc | combined | grub-install | gzip
|
||||
IMAGE/combined.vdi := append-rootfs | pad-extra 128k | grub-config pc | combined | grub-install | vdi
|
||||
IMAGE/combined.vmdk := append-rootfs | pad-extra 128k | grub-config pc | combined | grub-install | vmdk
|
||||
KERNEL := kernel-bin
|
||||
KERNEL_INSTALL := 1
|
||||
KERNEL_NAME := bzImage
|
||||
ifeq ($(CONFIG_ISO_IMAGES),y)
|
||||
ARTIFACTS := image.iso
|
||||
endif
|
||||
ifeq ($(CONFIG_VDI_IMAGES),y)
|
||||
IMAGES += combined.vdi
|
||||
endif
|
||||
ifeq ($(CONFIG_VMDK_IMAGES),y)
|
||||
IMAGES += combined.vmdk
|
||||
endif
|
||||
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)
|
||||
ifeq ($(SUBTARGET),64)
|
||||
include 64.mk
|
||||
endif
|
||||
|
||||
ifeq ($(SUBTARGET),generic)
|
||||
include generic.mk
|
||||
endif
|
||||
|
||||
ifeq ($(SUBTARGET),legacy)
|
||||
include legacy.mk
|
||||
endif
|
||||
endef
|
||||
|
||||
$(eval $(call BuildImage))
|
||||
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
define Device/generic
|
||||
DEVICE_TITLE := Generic x86
|
||||
DEVICE_PACKAGES += kmod-3c59x kmod-8139too kmod-e100 kmod-e1000 kmod-natsemi \
|
||||
kmod-ne2k-pci kmod-pcnet32 kmod-r8169 kmod-sis900 kmod-tg3 \
|
||||
kmod-via-rhine kmod-via-velocity
|
||||
GRUB2_VARIANT := generic
|
||||
endef
|
||||
TARGET_DEVICES += generic
|
|
@ -0,0 +1,16 @@
|
|||
define Device/generic
|
||||
DEVICE_TITLE := Generic x86/Geode
|
||||
DEVICE_PACKAGES += kmod-crypto-cbc kmod-crypto-hw-geode kmod-ledtrig-gpio \
|
||||
kmod-ledtrig-heartbeat kmod-ledtrig-netdev kmod-via-rhine
|
||||
GRUB2_VARIANT := legacy
|
||||
endef
|
||||
TARGET_DEVICES += generic
|
||||
|
||||
define Device/geos
|
||||
$(call Device/generic)
|
||||
DEVICE_TITLE := Traverse Technologies Geos
|
||||
DEVICE_PACKAGES += br2684ctl flashrom kmod-8139cp kmod-hwmon-lm90 kmod-mppe \
|
||||
kmod-pppoa kmod-usb-ohci-pci linux-atm ppp-mod-pppoa pppdump pppstats \
|
||||
soloscli tc
|
||||
endef
|
||||
TARGET_DEVICES += geos
|
|
@ -6,5 +6,5 @@ set timeout="@TIMEOUT@"
|
|||
set root='(cd)'
|
||||
|
||||
menuentry "@TITLE@" {
|
||||
linux /boot/vmlinuz @CMDLINE@ noinitrd
|
||||
linux /boot/vmlinuz root=/dev/sr0 rootfstype=iso9660 rootwait @CMDLINE@ noinitrd
|
||||
}
|
||||
|
|
|
@ -6,8 +6,8 @@ set timeout="@TIMEOUT@"
|
|||
set root='(hd0,msdos1)'
|
||||
|
||||
menuentry "@TITLE@" {
|
||||
linux /boot/vmlinuz @CMDLINE@ noinitrd
|
||||
linux /boot/vmlinuz @ROOTPART@ @CMDLINE@ noinitrd
|
||||
}
|
||||
menuentry "@TITLE@ (failsafe)" {
|
||||
linux /boot/vmlinuz failsafe=true @CMDLINE@ noinitrd
|
||||
linux /boot/vmlinuz failsafe=true @ROOTPART@ @CMDLINE@ noinitrd
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
define Device/generic
|
||||
DEVICE_TITLE := Generic x86/legacy
|
||||
DEVICE_PACKAGES += kmod-3c59x kmod-8139too kmod-e100 kmod-e1000 \
|
||||
kmod-natsemi kmod-ne2k-pci kmod-pcnet32 kmod-r8169 kmod-sis900 \
|
||||
kmod-tg3 kmod-via-rhine kmod-via-velocity
|
||||
GRUB2_VARIANT := legacy
|
||||
endef
|
||||
TARGET_DEVICES += generic
|
Loading…
Reference in New Issue