ec623990b3
Since it is quite cumbersome to manually create a combined kernel with initrd image for network booting, we now support loading via pxelinux configuration files, too. In these files, the kernel, initrd and command line parameters can be specified seperately, and the firmware then takes care of glueing everything together in memory after the files have been downloaded. See this URL for details about the config file layout: https://www.syslinux.org/wiki/index.php?title=PXELINUX The user can either specify a config file directly as bootfile via DHCP (but in this case, the file has to start either with "default" or a "#" comment so we can distinguish it from binary kernels), or a folder (i.e. the bootfile name must end with "/") where the firmware should look for the typical pxelinux.cfg file names, e.g. based on MAC or IP address. We also support the pxelinux.cfg DHCP options 209 and 210 from RFC 5071. Acked-by: Christian Borntraeger <borntraeger@de.ibm.com> Tested-by: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
62 lines
2.2 KiB
Makefile
62 lines
2.2 KiB
Makefile
|
|
SLOF_DIR := $(SRC_PATH)/roms/SLOF
|
|
|
|
NETOBJS := start.o sclp.o virtio.o virtio-net.o jump2ipl.o netmain.o \
|
|
libnet.a libc.a
|
|
|
|
LIBC_INC := -nostdinc -I$(SLOF_DIR)/lib/libc/include
|
|
LIBNET_INC := -I$(SLOF_DIR)/lib/libnet
|
|
|
|
NETLDFLAGS := $(LDFLAGS) -Ttext=0x7800000
|
|
|
|
$(NETOBJS): QEMU_CFLAGS += $(LIBC_INC) $(LIBNET_INC)
|
|
|
|
s390-netboot.elf: $(NETOBJS)
|
|
$(call quiet-command,$(CC) $(NETLDFLAGS) -o $@ $(NETOBJS),"BUILD","$(TARGET_DIR)$@")
|
|
|
|
s390-netboot.img: s390-netboot.elf
|
|
$(call quiet-command,$(STRIP) --strip-unneeded $< -o $@,"STRIP","$(TARGET_DIR)$@")
|
|
|
|
# libc files:
|
|
|
|
LIBC_CFLAGS := $(QEMU_CFLAGS) $(LIBC_INC) $(LIBNET_INC)
|
|
|
|
CTYPE_OBJS = isdigit.o isxdigit.o toupper.o
|
|
%.o : $(SLOF_DIR)/lib/libc/ctype/%.c
|
|
$(call quiet-command,$(CC) $(LIBC_CFLAGS) -c -o $@ $<,"CC","$(TARGET_DIR)$@")
|
|
|
|
STRING_OBJS = strcat.o strchr.o strrchr.o strcpy.o strlen.o strncpy.o \
|
|
strcmp.o strncmp.o strcasecmp.o strncasecmp.o strstr.o \
|
|
memset.o memcpy.o memmove.o memcmp.o
|
|
%.o : $(SLOF_DIR)/lib/libc/string/%.c
|
|
$(call quiet-command,$(CC) $(LIBC_CFLAGS) -c -o $@ $<,"CC","$(TARGET_DIR)$@")
|
|
|
|
STDLIB_OBJS = atoi.o atol.o strtoul.o strtol.o rand.o malloc.o free.o
|
|
%.o : $(SLOF_DIR)/lib/libc/stdlib/%.c
|
|
$(call quiet-command,$(CC) $(LIBC_CFLAGS) -c -o $@ $<,"CC","$(TARGET_DIR)$@")
|
|
|
|
STDIO_OBJS = sprintf.o snprintf.o vfprintf.o vsnprintf.o vsprintf.o fprintf.o \
|
|
printf.o putc.o puts.o putchar.o stdchnls.o fileno.o
|
|
%.o : $(SLOF_DIR)/lib/libc/stdio/%.c
|
|
$(call quiet-command,$(CC) $(LIBC_CFLAGS) -c -o $@ $<,"CC","$(TARGET_DIR)$@")
|
|
|
|
sbrk.o: $(SLOF_DIR)/slof/sbrk.c
|
|
$(call quiet-command,$(CC) $(LIBC_CFLAGS) -c -o $@ $<,"CC","$(TARGET_DIR)$@")
|
|
|
|
LIBCOBJS := $(STRING_OBJS) $(CTYPE_OBJS) $(STDLIB_OBJS) $(STDIO_OBJS) sbrk.o
|
|
|
|
libc.a: $(LIBCOBJS)
|
|
$(call quiet-command,$(AR) -rc $@ $^,"AR","$(TARGET_DIR)$@")
|
|
|
|
# libnet files:
|
|
|
|
LIBNETOBJS := args.o dhcp.o dns.o icmpv6.o ipv6.o tcp.o udp.o bootp.o \
|
|
dhcpv6.o ethernet.o ipv4.o ndp.o tftp.o pxelinux.o
|
|
LIBNETCFLAGS := $(QEMU_CFLAGS) -DDHCPARCH=0x1F $(LIBC_INC) $(LIBNET_INC)
|
|
|
|
%.o : $(SLOF_DIR)/lib/libnet/%.c
|
|
$(call quiet-command,$(CC) $(LIBNETCFLAGS) -c -o $@ $<,"CC","$(TARGET_DIR)$@")
|
|
|
|
libnet.a: $(LIBNETOBJS)
|
|
$(call quiet-command,$(AR) -rc $@ $^,"AR","$(TARGET_DIR)$@")
|