2 # Copyright (C) 2006-2020 OpenWrt.org
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
7 include $(TOPDIR
)/rules.mk
8 include $(INCLUDE_DIR
)/image.mk
13 GRUB_TERMINAL_CONFIG
=
14 GRUB_CONSOLE_CMDLINE
=
16 ifneq ($(strip $(foreach subtarget
,$(USE_ATKBD
),$(CONFIG_TARGET_x86_
$(subtarget
)))),)
17 GRUB2_VARIANT
:= generic
19 GRUB2_VARIANT
:= legacy
22 ifneq ($(CONFIG_GRUB_CONSOLE
),)
23 GRUB_CONSOLE_CMDLINE
+= console
=tty0
24 GRUB_TERMINALS
+= console
27 GRUB_SERIAL
:=$(call qstrip
,$(CONFIG_GRUB_SERIAL
))
29 ifneq ($(GRUB_SERIAL
),)
30 GRUB_CONSOLE_CMDLINE
+= console
=$(GRUB_SERIAL
),$(CONFIG_GRUB_BAUDRATE
)n8
$(if
$(CONFIG_GRUB_FLOWCONTROL
),r
,)
31 GRUB_SERIAL_CONFIG
:= serial
--unit
=0 --speed
=$(CONFIG_GRUB_BAUDRATE
) --word=8 --parity
=no
--stop
=1 --rtscts
=$(if
$(CONFIG_GRUB_FLOWCONTROL
),on
,off
)
32 GRUB_TERMINALS
+= serial
35 ifneq ($(GRUB_TERMINALS
),)
36 GRUB_TERMINAL_CONFIG
:= terminal_input
$(GRUB_TERMINALS
); terminal_output
$(GRUB_TERMINALS
)
39 ROOTPART
:=$(call qstrip
,$(CONFIG_TARGET_ROOTFS_PARTNAME
))
40 ROOTPART
:=$(if
$(ROOTPART
),$(ROOTPART
),PARTUUID
=$(IMG_PART_SIGNATURE
)-02)
42 GRUB_TIMEOUT
:=$(call qstrip
,$(CONFIG_GRUB_TIMEOUT
))
43 GRUB_TITLE
:=$(call qstrip
,$(CONFIG_GRUB_TITLE
))
45 BOOTOPTS
:=$(call qstrip
,$(CONFIG_GRUB_BOOTOPTS
))
48 $(CP
) $(KDIR
)/$(KERNEL_NAME
) $@.boot
/boot
/vmlinuz
49 -$(CP
) $(STAGING_DIR_ROOT
)/boot
/.
$@.boot
/boot
/
50 PADDING
="1" SIGNATURE
="$(IMG_PART_SIGNATURE)" $(SCRIPT_DIR
)/gen_image_generic.sh \
52 $(CONFIG_TARGET_KERNEL_PARTSIZE
) $@.boot \
53 $(CONFIG_TARGET_ROOTFS_PARTSIZE
) $(IMAGE_ROOTFS
) \
57 define Build
/grub-config
59 $(INSTALL_DIR
) $@.boot
/boot
/grub
61 -e
's#@SERIAL_CONFIG@#$(strip $(GRUB_SERIAL_CONFIG))#g' \
62 -e
's#@TERMINAL_CONFIG@#$(strip $(GRUB_TERMINAL_CONFIG))#g' \
63 -e
's#@ROOTPART@#root=$(ROOTPART) rootwait#g' \
64 -e
's#@CMDLINE@#$(BOOTOPTS) $(GRUB_CONSOLE_CMDLINE)#g' \
65 -e
's#@TIMEOUT@#$(GRUB_TIMEOUT)#g' \
66 -e
's#@TITLE@#$(GRUB_TITLE)#g' \
67 .
/grub-
$(1).cfg
> $@.boot
/boot
/grub
/grub.cfg
70 define Build
/grub-install
72 $(INSTALL_DIR
) $@.grub2
73 $(CP
) $(STAGING_DIR_HOST
)/lib
/grub
/i386-pc
/*.img \
74 $(STAGING_DIR_HOST
)/lib
/grub
/grub2-
$(GRUB2_VARIANT
)/core.img \
76 echo
'(hd0) $@' > $@.grub2
/device.map
77 $(STAGING_DIR_HOST
)/bin
/grub-bios-setup \
78 -m
"$@.grub2/device.map" \
85 $(CP
) $(KDIR
)/$(KERNEL_NAME
) $@.boot
/boot
/vmlinuz
87 $(STAGING_DIR_HOST
)/lib
/grub
/i386-pc
/cdboot.img \
88 $(STAGING_DIR_HOST
)/lib
/grub
/grub2-iso
/eltorito.img \
89 > $@.boot
/boot
/grub
/eltorito.img
90 -$(CP
) $(STAGING_DIR_ROOT
)/boot
/.
$@.boot
/boot
/
91 mkisofs
-R
-b boot
/grub
/eltorito.img
-no-emul-boot
-boot-info-table \
92 -o
$@
$@.boot
$(TARGET_DIR
)
95 DEVICE_VARS
+= GRUB2_VARIANT
97 ARTIFACT
/image.iso
:= grub-config iso | iso
98 IMAGE
/combined.img
:= grub-config
pc | combined | grub-install
99 IMAGE
/combined.img.gz
:= grub-config
pc | combined | grub-install | gzip
100 IMAGE
/combined.vdi
:= grub-config
pc | combined | grub-install | qemu-image vdi
101 IMAGE
/combined.vmdk
:= grub-config
pc | combined | grub-install | qemu-image vmdk
102 ifeq ($(CONFIG_TARGET_IMAGES_GZIP
),y
)
103 IMAGES
:= combined.img.gz
105 IMAGES
:= combined.img
109 KERNEL_NAME
:= bzImage
110 ifeq ($(CONFIG_ISO_IMAGES
),y
)
111 ARTIFACTS
:= image.iso
113 ifeq ($(CONFIG_VDI_IMAGES
),y
)
114 IMAGES
+= combined.vdi
116 ifeq ($(CONFIG_VMDK_IMAGES
),y
)
117 IMAGES
+= combined.vmdk
121 $(eval
$(call Image
/gzip-ext4-padded-squashfs
))
123 ifeq ($(SUBTARGET
),64)
127 ifeq ($(SUBTARGET
),generic
)
131 ifeq ($(SUBTARGET
),geode
)
135 ifeq ($(SUBTARGET
),legacy
)
139 $(eval
$(call BuildImage
))