809373e29a
When building on x86, the final image building step always emits stats to stderr, even though this information is neither a warning nor an error: BUILD arch/x86/boot/bzImage Setup is 16188 bytes (padded to 16384 bytes). System is 6368 kB CRC cbe50c61 Validating automated builds would be cleaner if stderr did not have to filter out these lines. Instead, change how tools/build is called, and make the zoffset header unconditional, and write to a specified file instead of to stdout, which can then be used for statistics, leaving stderr open for legitimate warnings and errors, like the output from die(). Signed-off-by: Kees Cook <keescook@chromium.org> Link: http://lkml.kernel.org/r/20130906181532.GA31260@www.outflux.net Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
197 lines
6.7 KiB
Makefile
197 lines
6.7 KiB
Makefile
#
|
|
# arch/x86/boot/Makefile
|
|
#
|
|
# This file is subject to the terms and conditions of the GNU General Public
|
|
# License. See the file "COPYING" in the main directory of this archive
|
|
# for more details.
|
|
#
|
|
# Copyright (C) 1994 by Linus Torvalds
|
|
# Changed by many, many contributors over the years.
|
|
#
|
|
|
|
# If you want to preset the SVGA mode, uncomment the next line and
|
|
# set SVGA_MODE to whatever number you want.
|
|
# Set it to -DSVGA_MODE=NORMAL_VGA if you just want the EGA/VGA mode.
|
|
# The number is the same as you would ordinarily press at bootup.
|
|
|
|
SVGA_MODE := -DSVGA_MODE=NORMAL_VGA
|
|
|
|
targets := vmlinux.bin setup.bin setup.elf bzImage
|
|
targets += fdimage fdimage144 fdimage288 image.iso mtools.conf
|
|
subdir- := compressed
|
|
|
|
setup-y += a20.o bioscall.o cmdline.o copy.o cpu.o cpucheck.o
|
|
setup-y += early_serial_console.o edd.o header.o main.o mca.o memory.o
|
|
setup-y += pm.o pmjump.o printf.o regs.o string.o tty.o video.o
|
|
setup-y += video-mode.o version.o
|
|
setup-$(CONFIG_X86_APM_BOOT) += apm.o
|
|
|
|
# The link order of the video-*.o modules can matter. In particular,
|
|
# video-vga.o *must* be listed first, followed by video-vesa.o.
|
|
# Hardware-specific drivers should follow in the order they should be
|
|
# probed, and video-bios.o should typically be last.
|
|
setup-y += video-vga.o
|
|
setup-y += video-vesa.o
|
|
setup-y += video-bios.o
|
|
|
|
targets += $(setup-y)
|
|
hostprogs-y := mkcpustr tools/build
|
|
|
|
HOST_EXTRACFLAGS += -I$(srctree)/tools/include \
|
|
-include include/generated/autoconf.h \
|
|
-D__EXPORTED_HEADERS__
|
|
|
|
$(obj)/cpu.o: $(obj)/cpustr.h
|
|
|
|
quiet_cmd_cpustr = CPUSTR $@
|
|
cmd_cpustr = $(obj)/mkcpustr > $@
|
|
targets += cpustr.h
|
|
$(obj)/cpustr.h: $(obj)/mkcpustr FORCE
|
|
$(call if_changed,cpustr)
|
|
|
|
# ---------------------------------------------------------------------------
|
|
|
|
# How to compile the 16-bit code. Note we always compile for -march=i386,
|
|
# that way we can complain to the user if the CPU is insufficient.
|
|
KBUILD_CFLAGS := $(USERINCLUDE) -g -Os -D_SETUP -D__KERNEL__ \
|
|
-DDISABLE_BRANCH_PROFILING \
|
|
-Wall -Wstrict-prototypes \
|
|
-march=i386 -mregparm=3 \
|
|
-include $(srctree)/$(src)/code16gcc.h \
|
|
-fno-strict-aliasing -fomit-frame-pointer -fno-pic \
|
|
$(call cc-option, -ffreestanding) \
|
|
$(call cc-option, -fno-toplevel-reorder,\
|
|
$(call cc-option, -fno-unit-at-a-time)) \
|
|
$(call cc-option, -fno-stack-protector) \
|
|
$(call cc-option, -mpreferred-stack-boundary=2)
|
|
KBUILD_CFLAGS += $(call cc-option, -m32)
|
|
KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
|
|
GCOV_PROFILE := n
|
|
|
|
$(obj)/bzImage: asflags-y := $(SVGA_MODE)
|
|
|
|
quiet_cmd_image = BUILD $@
|
|
cmd_image = $(obj)/tools/build $(obj)/setup.bin $(obj)/vmlinux.bin \
|
|
$(obj)/zoffset.h $@
|
|
|
|
$(obj)/bzImage: $(obj)/setup.bin $(obj)/vmlinux.bin $(obj)/tools/build FORCE
|
|
$(call if_changed,image)
|
|
@echo 'Kernel: $@ is ready' ' (#'`cat .version`')'
|
|
|
|
OBJCOPYFLAGS_vmlinux.bin := -O binary -R .note -R .comment -S
|
|
$(obj)/vmlinux.bin: $(obj)/compressed/vmlinux FORCE
|
|
$(call if_changed,objcopy)
|
|
|
|
SETUP_OBJS = $(addprefix $(obj)/,$(setup-y))
|
|
|
|
sed-voffset := -e 's/^\([0-9a-fA-F]*\) . \(_text\|_end\)$$/\#define VO_\2 0x\1/p'
|
|
|
|
quiet_cmd_voffset = VOFFSET $@
|
|
cmd_voffset = $(NM) $< | sed -n $(sed-voffset) > $@
|
|
|
|
targets += voffset.h
|
|
$(obj)/voffset.h: vmlinux FORCE
|
|
$(call if_changed,voffset)
|
|
|
|
sed-zoffset := -e 's/^\([0-9a-fA-F]*\) . \(startup_32\|startup_64\|efi_pe_entry\|efi_stub_entry\|input_data\|_end\|z_.*\)$$/\#define ZO_\2 0x\1/p'
|
|
|
|
quiet_cmd_zoffset = ZOFFSET $@
|
|
cmd_zoffset = $(NM) $< | sed -n $(sed-zoffset) > $@
|
|
|
|
targets += zoffset.h
|
|
$(obj)/zoffset.h: $(obj)/compressed/vmlinux FORCE
|
|
$(call if_changed,zoffset)
|
|
|
|
|
|
AFLAGS_header.o += -I$(obj)
|
|
$(obj)/header.o: $(obj)/voffset.h $(obj)/zoffset.h
|
|
|
|
LDFLAGS_setup.elf := -T
|
|
$(obj)/setup.elf: $(src)/setup.ld $(SETUP_OBJS) FORCE
|
|
$(call if_changed,ld)
|
|
|
|
OBJCOPYFLAGS_setup.bin := -O binary
|
|
$(obj)/setup.bin: $(obj)/setup.elf FORCE
|
|
$(call if_changed,objcopy)
|
|
|
|
$(obj)/compressed/vmlinux: FORCE
|
|
$(Q)$(MAKE) $(build)=$(obj)/compressed $@
|
|
|
|
# Set this if you want to pass append arguments to the
|
|
# bzdisk/fdimage/isoimage kernel
|
|
FDARGS =
|
|
# Set this if you want an initrd included with the
|
|
# bzdisk/fdimage/isoimage kernel
|
|
FDINITRD =
|
|
|
|
image_cmdline = default linux $(FDARGS) $(if $(FDINITRD),initrd=initrd.img,)
|
|
|
|
$(obj)/mtools.conf: $(src)/mtools.conf.in
|
|
sed -e 's|@OBJ@|$(obj)|g' < $< > $@
|
|
|
|
# This requires write access to /dev/fd0
|
|
bzdisk: $(obj)/bzImage $(obj)/mtools.conf
|
|
MTOOLSRC=$(obj)/mtools.conf mformat a: ; sync
|
|
syslinux /dev/fd0 ; sync
|
|
echo '$(image_cmdline)' | \
|
|
MTOOLSRC=$(src)/mtools.conf mcopy - a:syslinux.cfg
|
|
if [ -f '$(FDINITRD)' ] ; then \
|
|
MTOOLSRC=$(obj)/mtools.conf mcopy '$(FDINITRD)' a:initrd.img ; \
|
|
fi
|
|
MTOOLSRC=$(obj)/mtools.conf mcopy $(obj)/bzImage a:linux ; sync
|
|
|
|
# These require being root or having syslinux 2.02 or higher installed
|
|
fdimage fdimage144: $(obj)/bzImage $(obj)/mtools.conf
|
|
dd if=/dev/zero of=$(obj)/fdimage bs=1024 count=1440
|
|
MTOOLSRC=$(obj)/mtools.conf mformat v: ; sync
|
|
syslinux $(obj)/fdimage ; sync
|
|
echo '$(image_cmdline)' | \
|
|
MTOOLSRC=$(obj)/mtools.conf mcopy - v:syslinux.cfg
|
|
if [ -f '$(FDINITRD)' ] ; then \
|
|
MTOOLSRC=$(obj)/mtools.conf mcopy '$(FDINITRD)' v:initrd.img ; \
|
|
fi
|
|
MTOOLSRC=$(obj)/mtools.conf mcopy $(obj)/bzImage v:linux ; sync
|
|
|
|
fdimage288: $(obj)/bzImage $(obj)/mtools.conf
|
|
dd if=/dev/zero of=$(obj)/fdimage bs=1024 count=2880
|
|
MTOOLSRC=$(obj)/mtools.conf mformat w: ; sync
|
|
syslinux $(obj)/fdimage ; sync
|
|
echo '$(image_cmdline)' | \
|
|
MTOOLSRC=$(obj)/mtools.conf mcopy - w:syslinux.cfg
|
|
if [ -f '$(FDINITRD)' ] ; then \
|
|
MTOOLSRC=$(obj)/mtools.conf mcopy '$(FDINITRD)' w:initrd.img ; \
|
|
fi
|
|
MTOOLSRC=$(obj)/mtools.conf mcopy $(obj)/bzImage w:linux ; sync
|
|
|
|
isoimage: $(obj)/bzImage
|
|
-rm -rf $(obj)/isoimage
|
|
mkdir $(obj)/isoimage
|
|
for i in lib lib64 share end ; do \
|
|
if [ -f /usr/$$i/syslinux/isolinux.bin ] ; then \
|
|
cp /usr/$$i/syslinux/isolinux.bin $(obj)/isoimage ; \
|
|
break ; \
|
|
fi ; \
|
|
if [ $$i = end ] ; then exit 1 ; fi ; \
|
|
done
|
|
cp $(obj)/bzImage $(obj)/isoimage/linux
|
|
echo '$(image_cmdline)' > $(obj)/isoimage/isolinux.cfg
|
|
if [ -f '$(FDINITRD)' ] ; then \
|
|
cp '$(FDINITRD)' $(obj)/isoimage/initrd.img ; \
|
|
fi
|
|
mkisofs -J -r -o $(obj)/image.iso -b isolinux.bin -c boot.cat \
|
|
-no-emul-boot -boot-load-size 4 -boot-info-table \
|
|
$(obj)/isoimage
|
|
isohybrid $(obj)/image.iso 2>/dev/null || true
|
|
rm -rf $(obj)/isoimage
|
|
|
|
bzlilo: $(obj)/bzImage
|
|
if [ -f $(INSTALL_PATH)/vmlinuz ]; then mv $(INSTALL_PATH)/vmlinuz $(INSTALL_PATH)/vmlinuz.old; fi
|
|
if [ -f $(INSTALL_PATH)/System.map ]; then mv $(INSTALL_PATH)/System.map $(INSTALL_PATH)/System.old; fi
|
|
cat $(obj)/bzImage > $(INSTALL_PATH)/vmlinuz
|
|
cp System.map $(INSTALL_PATH)/
|
|
if [ -x /sbin/lilo ]; then /sbin/lilo; else /etc/lilo/install; fi
|
|
|
|
install:
|
|
sh $(srctree)/$(src)/install.sh $(KERNELRELEASE) $(obj)/bzImage \
|
|
System.map "$(INSTALL_PATH)"
|