@ -1,5 +1,5 @@
#
# Copyright (C) 2006-20 1 2 OpenWrt.org
#
# Copyright (C) 2006-20 20 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
@ -7,16 +7,12 @@
i n c l u d e $( TOPDIR ) / r u l e s . m k
i n c l u d e $( INCLUDE_DIR ) / i m a g e . m k
export PATH = $( TARGET_PATH) :/sbin
GRUB2_VARIANT =
GRUB_TERMINALS =
GRUB_SERIAL_CONFIG =
GRUB_TERMINAL_CONFIG =
GRUB_CONSOLE_CMDLINE =
USE_ATKBD = generic 64
i f n e q ( $( strip $ ( foreach subtarget ,$ ( USE_ATKBD ) ,$ ( CONFIG_TARGET_x 86_ $ ( subtarget ) ) ) ) , )
GRUB2_VARIANT := generic
e l s e
@ -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) )
i f n e q ( $( CONFIG_GRUB_IMAGES ) , )
BOOTOPTS:= $( call qstrip,$( CONFIG_GRUB_BOOTOPTS) )
define Image/cmdline/ext4
root = $( ROOTPART) rootfstype = ext4 rootwait
endef
BOOTOPTS := $( call qstrip,$( CONFIG_GRUB_BOOTOPTS) )
define Image/cmdline/squashfs
root = $( ROOTPART) rootfstype = squashfs rootwait
endef
d e f i n e B u i l d / c o m b i n e d
$( 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
e n d e f
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
d e f i n e B u i l d / g r u b - c o n f i g
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#@CMDLINE@#$(strip $(call Image/cmdline/$(1)) $(BOOTOPTS) $(GRUB_CONSOLE_CMDLINE))#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.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 " \
./grub-$( 1) .cfg > $@ .boot/boot/grub/grub.cfg
e n d e f
d e f i n e B u i l d / g r u b - i n s t a l l
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" \
" $( BIN_DIR) / $( IMG_COMBINED) - $( 1) .img "
endef
e n d i f
$@
e n d e f
d e f i n e Im a g e / Bu i l d / i s o
rm -fR $( KDIR) /root.grub $( KDIR) /grub2
$( INSTALL_DIR) $( KDIR) /root.grub/boot/grub $( KDIR) /grub2
$( CP) $( KDIR) /bzImage $( KDIR) /root.grub/boot/vmlinuz
d e f i n e Bu i l d / i s o
$( 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 \
> $( 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/
> $@ .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 $( KDIR) /root.iso $( KDIR) /root.grub $( TARGET_DIR)
-o $@ $@ .boot $( TARGET_DIR)
e n d e f
i f n e q ( $( 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
e n d i f
d e f i n e B u i l d / v d i
qemu-img convert -f raw -O vdi $@ $@ .new
@mv $@ .new $@
e n d e f
i f n e q ( $( 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
e n d i f
d e f i n e B u i l d / v m d k
qemu-img convert -f raw -O vmdk $@ $@ .new
@mv $@ .new $@
e n d e f
d e f i n e I m a g e / B u i l d / g z i p
gzip -f9n $( BIN_DIR) /$( IMG_COMBINED) -$( 1) .img
gzip -f9n $( BIN_DIR) /$( IMG_ROOTFS) -$( 1) .img
DEVICE_VARS += GRUB2_VARIANT
d e f i n e D e v i c e / D e f a u l t
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
e n d e f
$( eval $ ( call Image /gzip -ext 4-padded -squashfs ) )
d e f i n e I m a g e / B u i l d K e r n e l
$( CP) $( KDIR) /bzImage $( BIN_DIR) /$( IMG_PREFIX) -vmlinuz
e n d e f
d e f i n e I m a g e / P r e p a r e
$( call Image/Prepare/grub2)
e n d e f
i f e q ( $( SUBTARGET ) , 6 4 )
include 64.mk
e n d i f
d e f i n e I m a g e / B u i l d / I n i t r a m f s
$( CP) $( KDIR) /bzImage-initramfs $( BIN_DIR) /$( IMG_PREFIX) -ramfs.bzImage
e n d e f
i f e q ( $( SUBTARGET ) , g e n e r i c )
include generic.mk
e n d i f
d e f i n e I m a g e / B u i l d
$( 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) )
i f e q ( $( CONFIG_TARGET_ROOTFS_INITRAMFS ) , y )
$( call Image/Build/Initramfs)
i f e q ( $( SUBTARGET ) , l e g a c y )
include legacy.mk
e n d i f
e n d e f
$( eval $ ( call BuildImage ) )