^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) #!/bin/sh
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) # This file is subject to the terms and conditions of the GNU General Public
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) # License. See the file "COPYING" in the main directory of this archive
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) # for more details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) # Copyright (C) 2017 by Changbin Du <changbin.du@intel.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) # Adapted from code in arch/x86/boot/Makefile by H. Peter Anvin and others
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) # "make fdimage/fdimage144/fdimage288/isoimage" script for x86 architecture
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) # Arguments:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) # $1 - fdimage format
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) # $2 - target image file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) # $3 - kernel bzImage file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) # $4 - mtool configuration file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) # $5 - kernel cmdline
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) # $6 - inird image file
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) # Use "make V=1" to debug this script
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) case "${KBUILD_VERBOSE}" in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) *1*)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) set -x
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) ;;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) esac
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) verify () {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) if [ ! -f "$1" ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) echo "" 1>&2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) echo " *** Missing file: $1" 1>&2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) echo "" 1>&2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) exit 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) export MTOOLSRC=$4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) FIMAGE=$2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) FBZIMAGE=$3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) KCMDLINE=$5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) FDINITRD=$6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) # Make sure the files actually exist
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) verify "$FBZIMAGE"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) genbzdisk() {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) verify "$MTOOLSRC"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) mformat a:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) syslinux $FIMAGE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) echo "$KCMDLINE" | mcopy - a:syslinux.cfg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) if [ -f "$FDINITRD" ] ; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) mcopy "$FDINITRD" a:initrd.img
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) mcopy $FBZIMAGE a:linux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) genfdimage144() {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) verify "$MTOOLSRC"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) dd if=/dev/zero of=$FIMAGE bs=1024 count=1440 2> /dev/null
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) mformat v:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) syslinux $FIMAGE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) echo "$KCMDLINE" | mcopy - v:syslinux.cfg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) if [ -f "$FDINITRD" ] ; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) mcopy "$FDINITRD" v:initrd.img
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) mcopy $FBZIMAGE v:linux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) genfdimage288() {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) verify "$MTOOLSRC"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) dd if=/dev/zero of=$FIMAGE bs=1024 count=2880 2> /dev/null
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) mformat w:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) syslinux $FIMAGE
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) echo "$KCMDLINE" | mcopy - W:syslinux.cfg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) if [ -f "$FDINITRD" ] ; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) mcopy "$FDINITRD" w:initrd.img
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) mcopy $FBZIMAGE w:linux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) geniso() {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) tmp_dir=`dirname $FIMAGE`/isoimage
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) rm -rf $tmp_dir
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) mkdir $tmp_dir
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) for i in lib lib64 share ; do
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) for j in syslinux ISOLINUX ; do
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) if [ -f /usr/$i/$j/isolinux.bin ] ; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) isolinux=/usr/$i/$j/isolinux.bin
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) done
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) for j in syslinux syslinux/modules/bios ; do
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) if [ -f /usr/$i/$j/ldlinux.c32 ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) ldlinux=/usr/$i/$j/ldlinux.c32
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97) done
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) if [ -n "$isolinux" -a -n "$ldlinux" ] ; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) break
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) done
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) if [ -z "$isolinux" ] ; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) echo 'Need an isolinux.bin file, please install syslinux/isolinux.'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) exit 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) if [ -z "$ldlinux" ] ; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) echo 'Need an ldlinux.c32 file, please install syslinux/isolinux.'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) exit 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) cp $isolinux $tmp_dir
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) cp $ldlinux $tmp_dir
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) cp $FBZIMAGE $tmp_dir/linux
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) echo "$KCMDLINE" > $tmp_dir/isolinux.cfg
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) if [ -f "$FDINITRD" ] ; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) cp "$FDINITRD" $tmp_dir/initrd.img
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) genisoimage -J -r -input-charset=utf-8 -quiet -o $FIMAGE \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 \
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) -boot-info-table $tmp_dir
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) isohybrid $FIMAGE 2>/dev/null || true
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) rm -rf $tmp_dir
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) case $1 in
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) bzdisk) genbzdisk;;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) fdimage144) genfdimage144;;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) fdimage288) genfdimage288;;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) isoimage) geniso;;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) *) echo 'Unknown image format'; exit 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) esac