x86/build: Factor out fdimage/isoimage generation commands to standalone script
The build messages for fdimage/isoimage generation are pretty unstructured, just the raw shell command blocks are printed. Emit shortened messages similar to existing kbuild messages, and move the Makefile commands into a separate shell script - which is much easier to handle. This patch factors out the commands used for fdimage/isoimage generation from arch/x86/boot/Makefile to a new script arch/x86/boot/genimage.sh. Then it adds the new kbuild command 'genimage' which invokes the new script. All fdimages/isoimage files are now generated by a call to 'genimage' with different parameters. Now 'make isoimage' becomes: ... Kernel: arch/x86/boot/bzImage is ready (#30) GENIMAGE arch/x86/boot/image.iso Size of boot image is 4 sectors -> No emulation 15.37% done, estimate finish Sun Nov 5 23:36:57 2017 30.68% done, estimate finish Sun Nov 5 23:36:57 2017 46.04% done, estimate finish Sun Nov 5 23:36:57 2017 61.35% done, estimate finish Sun Nov 5 23:36:57 2017 76.69% done, estimate finish Sun Nov 5 23:36:57 2017 92.00% done, estimate finish Sun Nov 5 23:36:57 2017 Total translation table size: 2048 Total rockridge attributes bytes: 659 Total directory bytes: 0 Path table size(bytes): 10 Max brk space used 0 32608 extents written (63 MB) Kernel: arch/x86/boot/image.iso is ready Before: Kernel: arch/x86/boot/bzImage is ready (#63) rm -rf arch/x86/boot/isoimage mkdir arch/x86/boot/isoimage for i in lib lib64 share end ; do \ if [ -f /usr/$i/syslinux/isolinux.bin ] ; then \ cp /usr/$i/syslinux/isolinux.bin arch/x86/boot/isoimage ; \ if [ -f /usr/$i/syslinux/ldlinux.c32 ]; then \ cp /usr/$i/syslinux/ldlinux.c32 arch/x86/boot/isoimage ; \ fi ; \ break ; \ fi ; \ if [ $i = end ] ; then exit 1 ; fi ; \ done ... Suggested-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Changbin Du <changbin.du@intel.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Masahiro Yamada <yamada.masahiro@socionext.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/1509939179-7556-2-git-send-email-changbin.du@intel.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
This commit is contained in:
parent
fec8f5ae17
commit
4366d57af1
@ -123,63 +123,26 @@ image_cmdline = default linux $(FDARGS) $(if $(FDINITRD),initrd=initrd.img,)
|
|||||||
$(obj)/mtools.conf: $(src)/mtools.conf.in
|
$(obj)/mtools.conf: $(src)/mtools.conf.in
|
||||||
sed -e 's|@OBJ@|$(obj)|g' < $< > $@
|
sed -e 's|@OBJ@|$(obj)|g' < $< > $@
|
||||||
|
|
||||||
|
quiet_cmd_genimage = GENIMAGE $3
|
||||||
|
cmd_genimage = sh $(srctree)/$(src)/genimage.sh $2 $3 $(obj)/bzImage \
|
||||||
|
$(obj)/mtools.conf '$(image_cmdline)' $(FDINITRD)
|
||||||
|
|
||||||
# This requires write access to /dev/fd0
|
# This requires write access to /dev/fd0
|
||||||
bzdisk: $(obj)/bzImage $(obj)/mtools.conf
|
bzdisk: $(obj)/bzImage $(obj)/mtools.conf
|
||||||
MTOOLSRC=$(obj)/mtools.conf mformat a: ; sync
|
$(call cmd,genimage,bzdisk,/dev/fd0)
|
||||||
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
|
# These require being root or having syslinux 2.02 or higher installed
|
||||||
fdimage fdimage144: $(obj)/bzImage $(obj)/mtools.conf
|
fdimage fdimage144: $(obj)/bzImage $(obj)/mtools.conf
|
||||||
dd if=/dev/zero of=$(obj)/fdimage bs=1024 count=1440
|
$(call cmd,genimage,fdimage144,$(obj)/fdimage)
|
||||||
MTOOLSRC=$(obj)/mtools.conf mformat v: ; sync
|
@$(kecho) 'Kernel: $(obj)/fdimage is ready'
|
||||||
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
|
fdimage288: $(obj)/bzImage $(obj)/mtools.conf
|
||||||
dd if=/dev/zero of=$(obj)/fdimage bs=1024 count=2880
|
$(call cmd,genimage,fdimage288,$(obj)/fdimage)
|
||||||
MTOOLSRC=$(obj)/mtools.conf mformat w: ; sync
|
@$(kecho) 'Kernel: $(obj)/fdimage is ready'
|
||||||
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
|
isoimage: $(obj)/bzImage
|
||||||
-rm -rf $(obj)/isoimage
|
$(call cmd,genimage,isoimage,$(obj)/image.iso)
|
||||||
mkdir $(obj)/isoimage
|
@$(kecho) 'Kernel: $(obj)/image.iso is ready'
|
||||||
for i in lib lib64 share end ; do \
|
|
||||||
if [ -f /usr/$$i/syslinux/isolinux.bin ] ; then \
|
|
||||||
cp /usr/$$i/syslinux/isolinux.bin $(obj)/isoimage ; \
|
|
||||||
if [ -f /usr/$$i/syslinux/ldlinux.c32 ]; then \
|
|
||||||
cp /usr/$$i/syslinux/ldlinux.c32 $(obj)/isoimage ; \
|
|
||||||
fi ; \
|
|
||||||
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
|
bzlilo: $(obj)/bzImage
|
||||||
if [ -f $(INSTALL_PATH)/vmlinuz ]; then mv $(INSTALL_PATH)/vmlinuz $(INSTALL_PATH)/vmlinuz.old; fi
|
if [ -f $(INSTALL_PATH)/vmlinuz ]; then mv $(INSTALL_PATH)/vmlinuz $(INSTALL_PATH)/vmlinuz.old; fi
|
||||||
|
105
arch/x86/boot/genimage.sh
Normal file
105
arch/x86/boot/genimage.sh
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# 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) 2017 by Changbin Du <changbin.du@intel.com>
|
||||||
|
#
|
||||||
|
# Adapted from code in arch/x86/boot/Makefile by H. Peter Anvin and others
|
||||||
|
#
|
||||||
|
# "make fdimage/fdimage144/fdimage288/isoimage" script for x86 architecture
|
||||||
|
#
|
||||||
|
# Arguments:
|
||||||
|
# $1 - fdimage format
|
||||||
|
# $2 - target image file
|
||||||
|
# $3 - kernel bzImage file
|
||||||
|
# $4 - mtool configuration file
|
||||||
|
# $5 - kernel cmdline
|
||||||
|
# $6 - inird image file
|
||||||
|
#
|
||||||
|
|
||||||
|
verify () {
|
||||||
|
if [ ! -f "$1" ]; then
|
||||||
|
echo "" 1>&2
|
||||||
|
echo " *** Missing file: $1" 1>&2
|
||||||
|
echo "" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export MTOOLSRC=$4
|
||||||
|
FIMAGE=$2
|
||||||
|
FBZIMAGE=$3
|
||||||
|
KCMDLINE=$5
|
||||||
|
FDINITRD=$6
|
||||||
|
|
||||||
|
# Make sure the files actually exist
|
||||||
|
verify "$FBZIMAGE"
|
||||||
|
verify "$MTOOLSRC"
|
||||||
|
|
||||||
|
genbzdisk() {
|
||||||
|
mformat a:
|
||||||
|
syslinux $FIMAGE
|
||||||
|
echo "$KCMDLINE" | mcopy - a:syslinux.cfg
|
||||||
|
if [ -f "$FDINITRD" ] ; then
|
||||||
|
mcopy "$FDINITRD" a:initrd.img
|
||||||
|
fi
|
||||||
|
mcopy $FBZIMAGE a:linux
|
||||||
|
}
|
||||||
|
|
||||||
|
genfdimage144() {
|
||||||
|
dd if=/dev/zero of=$FIMAGE bs=1024 count=1440
|
||||||
|
mformat v:
|
||||||
|
syslinux $FIMAGE
|
||||||
|
echo "$KCMDLINE" | mcopy - v:syslinux.cfg
|
||||||
|
if [ -f "$FDINITRD" ] ; then
|
||||||
|
mcopy "$FDINITRD" v:initrd.img
|
||||||
|
fi
|
||||||
|
mcopy $FBZIMAGE v:linux
|
||||||
|
}
|
||||||
|
|
||||||
|
genfdimage288() {
|
||||||
|
dd if=/dev/zero of=$FIMAGE bs=1024 count=2880
|
||||||
|
mformat w:
|
||||||
|
syslinux $FIMAGE
|
||||||
|
echo "$KCMDLINE" | mcopy - W:syslinux.cfg
|
||||||
|
if [ -f "$FDINITRD" ] ; then
|
||||||
|
mcopy "$FDINITRD" w:initrd.img
|
||||||
|
fi
|
||||||
|
mcopy $FBZIMAGE w:linux
|
||||||
|
}
|
||||||
|
|
||||||
|
genisoimage() {
|
||||||
|
tmp_dir=`dirname $FIMAGE`/isoimage
|
||||||
|
rm -rf $tmp_dir
|
||||||
|
mkdir $tmp_dir
|
||||||
|
for i in lib lib64 share end ; do
|
||||||
|
if [ -f /usr/$i/syslinux/isolinux.bin ] ; then
|
||||||
|
cp /usr/$i/syslinux/isolinux.bin $tmp_dir
|
||||||
|
if [ -f /usr/$i/syslinux/ldlinux.c32 ]; then
|
||||||
|
cp /usr/$i/syslinux/ldlinux.c32 $tmp_dir
|
||||||
|
fi
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if [ $i = end ] ; then exit 1 ; fi ;
|
||||||
|
done
|
||||||
|
cp $FBZIMAGE $tmp_dir/linux
|
||||||
|
echo "$KCMDLINE" > $tmp_dir/isolinux.cfg
|
||||||
|
if [ -f "$FDINITRD" ] ; then
|
||||||
|
cp "$FDINITRD" $tmp_dir/initrd.img
|
||||||
|
fi
|
||||||
|
mkisofs -J -r -o $FIMAGE -b isolinux.bin -c boot.cat \
|
||||||
|
-no-emul-boot -boot-load-size 4 -boot-info-table $tmp_dir
|
||||||
|
isohybrid $FIMAGE 2>/dev/null || true
|
||||||
|
rm -rf $tmp_dir
|
||||||
|
}
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
bzdisk) genbzdisk;;
|
||||||
|
fdimage144) genfdimage144;;
|
||||||
|
fdimage288) genfdimage288;;
|
||||||
|
isoimage) genisoimage;;
|
||||||
|
*) echo 'Unknown image format'; exit 1;
|
||||||
|
esac
|
Loading…
Reference in New Issue
Block a user