Added debian-cd@. Karsten Merker <merker@debian.org> (2014-12-23): > On Thu, Dec 18, 2014 at 07:28:45PM +0100, Karsten Merker wrote: > > On Wed, Dec 03, 2014 at 03:10:37PM -0800, Vagrant Cascadian wrote: > > > On 2014-12-03, Karsten Merker wrote: > > > > several armhf systems do not have u-boot (or another firmware) in > > > > non-volatile (i.e. ROM/Flash) memory, but instead store their > > > > system firmware on a removable medium such as an SD card. > > > ... > > > > Debian provides appropriate u-boot images for several supported > > > > systems in the u-boot-{exynos,imx,omap,sunxi} packages, but those > > > > are not easily accessible to somebody who does not already run a > > > > Debian/armhf system (or at least Debian on another architecture), > > > > so I am wondering whether we should offer these u-boot images > > > > (in unpacked form) together with the d-i images, similar to what > > > > we do with the device-tree files extracted from the linux-image > > > > package. > > [snip] > > > For images such as hd-media, we'd ideally want to provide complete > > > u-boot + kernel + initrd ( + gtk initrd) images, which would grow each > > > image considerably. > > [snip] > > > I'd be happy to put a bit more time into it, especially if we can get > > > support in for Jessie's debian-installer. > [snip] > > just to avoid double work: I have recently started working on implementing > > image building support (both for "bare" u-boot images as well as for "full" > > images with u-boot + kernel + initrd) and I hope to find some time over > > Christmas to finish a working prototype. > > Attached is a set of patches to implement building bootable > d-i images for armhf systems. It offers various options: > > - provide binary "u-boot-only" images for people who want to > manually install u-boot and e.g. run the rest of the setup via > tftpboot > > - build "full" installer images in the variants netboot und > hd-media, which contain u-boot, kernel, initrd and dtbs. > > - build "concatenateable" installer images in the variants > netboot and hd-media. These have the same contents as the > "full" images but are split into a device-specific and a > device-independent part to save space and must be decompressed > and then concatenated together by the user. > > For testing purposes all options are enabled in the attached > patchset. In the end we should decide which ones we actually > want to enable for production use, as it does not make sense to > build both the "full" and "concatenateable" variants. > > If space and bandwidth are not much of an issue, I would propose > providing the "u-boot-only" and "full" image targets, as they are > the easiest for the end user and can also be handled on Windows > systems without problems. If space and bandwidth use is too high > for the "full" images, we could use the "concatenateable" > variant, although this makes installing the images more > complicated for the end user and is only possible if we can > manage to boot _all_ armhf platforms with a single boot script, > as this boot script is in the device-independent part. The > latter is a point that still needs checking and for which I need > testers who have access to the respective systems. > > I would like to commit the patches to the d-i git so that > testers can give images generated from the daily builds a try. > I would enable the "u-boot-only" and "full" targets for the daily > builds in this case. If the full targets work properly on all > platforms, we can then think about whether we would like to > replace the "full" variant by the "concatenateable" variant. > > @Kibi, is that ok for you? I'd be happy to have more feedback on this, notably from Steve on the debian-cd@ side, and from Ian for the arm side (just to make sure). Mraw, KiBi. > Regards, > Karsten > > P.S: I hope I have added all necessary dependencies to the > control file - checking them by building d-i in pbuilder > does not work as d-i requires network access during the > build. > -- > Gem. Par. 28 Abs. 4 Bundesdatenschutzgesetz widerspreche ich der Nutzung > sowie der Weitergabe meiner personenbezogenen Daten für Zwecke der > Werbung sowie der Markt- oder Meinungsforschung. > From 43bd59363968d603d44f72db7f854575f8699750 Mon Sep 17 00:00:00 2001 > From: Karsten Merker <merker@debian.org> > Date: Sun, 21 Dec 2014 19:22:56 +0100 > Subject: [PATCH 1/6] Add boot/arm/u-boot-image-config > > The file boot/arm/u-boot-image-config contains the information > which u-boot components must be written to which offsets on the > disk to create a bootable image for various arm-based systems. > --- > build/boot/arm/u-boot-image-config | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > create mode 100644 build/boot/arm/u-boot-image-config > > diff --git a/build/boot/arm/u-boot-image-config b/build/boot/arm/u-boot-image-config > new file mode 100644 > index 0000000..1d0208a > --- /dev/null > +++ b/build/boot/arm/u-boot-image-config > @@ -0,0 +1,21 @@ > +# U-Boot SPL/TPL files and offsets for various platforms > +# > +# Line format (offsets are given in blocks of 512 Bytes): > +# platform_name SPL_filename SPL_offset TPL_filename TPL_offset > +# > +# Images from u-boot-imx > +MX53LOCO /usr/lib/u-boot/mx53loco/u-boot.imx 2 > +MX6_Cubox-i /usr/lib/u-boot/mx6_cubox-i/SPL 2 /usr/lib/u-boot/mx6_cubox-i/u-boot.img 84 > +Wandboard_Quad /usr/lib/u-boot/wandboard_quad/u-boot.imx 2 > +# > +# Images from u-boot-omap > +BeagleBoneBlack /usr/lib/u-boot/am335x_boneblack/MLO 256 /usr/lib/u-boot/am335x_boneblack/u-boot.img 768 > +PandaBoard /usr/lib/u-boot/am335x_boneblack/MLO 256 /usr/lib/u-boot/omap4_panda/u-boot.bin 768 > +# > +# Images from u-boot-sunxi > +A10-OLinuXino-Lime /usr/lib/u-boot/A10-OLinuXino-Lime/u-boot-sunxi-with-spl.bin 16 > +A20-OLinuXino-Lime /usr/lib/u-boot/A20-OLinuXino-Lime/u-boot-sunxi-with-spl.bin 16 > +BananaPi /usr/lib/u-boot/Bananapi/u-boot-sunxi-with-spl.bin 16 > +Cubieboard /usr/lib/u-boot/Cubieboard/u-boot-sunxi-with-spl.bin 16 > +Cubieboard2 /usr/lib/u-boot/Cubieboard2/u-boot-sunxi-with-spl.bin 16 > +Cubietruck /usr/lib/u-boot/Cubietruck/u-boot-sunxi-with-spl.bin 16 > -- > 2.1.4 > > From 149956b9ebf254722fc20f3ad9a4f8db48fdef27 Mon Sep 17 00:00:00 2001 > From: Karsten Merker <merker@debian.org> > Date: Sun, 21 Dec 2014 21:46:18 +0100 > Subject: [PATCH 2/6] Provide u-boot binaries for armhf systems without u-boot > in flash. > > --- > build/config/armhf.cfg | 2 +- > build/config/armhf/u-boot.cfg | 26 ++++++++++++++++++++++++++ > 2 files changed, 27 insertions(+), 1 deletion(-) > create mode 100644 build/config/armhf/u-boot.cfg > > diff --git a/build/config/armhf.cfg b/build/config/armhf.cfg > index 1332c3a..73cdf39 100644 > --- a/build/config/armhf.cfg > +++ b/build/config/armhf.cfg > @@ -1,4 +1,4 @@ > -MEDIUM_SUPPORTED = hd-media netboot network-console netboot-gtk device-tree > +MEDIUM_SUPPORTED = hd-media netboot network-console netboot-gtk device-tree u-boot > > MKLIBS = mklibs --ldlib=/lib/ld-linux-armhf.so.3 > > diff --git a/build/config/armhf/u-boot.cfg b/build/config/armhf/u-boot.cfg > new file mode 100644 > index 0000000..cb5338a > --- /dev/null > +++ b/build/config/armhf/u-boot.cfg > @@ -0,0 +1,26 @@ > +MEDIA_TYPE = u-boot binaries > + > +TARGET = u-boot-binaries > +EXTRANAME = $(MEDIUM)/ > + > +.PHONY: u-boot-binaries > +u-boot-binaries: > + mkdir -p $(SOME_DEST)/$(EXTRANAME)/ > + while read LINE; \ > + do \ > + if [ -n "$${LINE}" ] && ! echo $${LINE}|grep -q -e "^#"; then \ > + set -- $${LINE}; \ > + mkdir -p "$(SOME_DEST)/$(EXTRANAME)/$$1"; \ > + if [ -n "$$2" ]; then \ > + cp "$$2" "$(SOME_DEST)/$(EXTRANAME)/$$1/"; \ > + dd if="$$2" of="$(SOME_DEST)/$(EXTRANAME)/$$1/$$1.sdcard.img" bs=512 seek="$$3"; \ > + gzip -9 "$(SOME_DEST)/$(EXTRANAME)/$$1/$$2"; \ > + fi; \ > + if [ -n "$$4" ]; then \ > + cp "$$4" "$(SOME_DEST)/$(EXTRANAME)/$$1/"; \ > + dd if="$$4" of="$(SOME_DEST)/$(EXTRANAME)/$$1/$$1.sdcard.img" bs=512 seek="$$5" conv=notrunc; \ > + gzip -9 "$(SOME_DEST)/$(EXTRANAME)/$$1/$$4"; \ > + fi; \ > + gzip -9 "$(SOME_DEST)/$(EXTRANAME)/$$1/$$1.sdcard.img"; \ > + fi ;\ > + done < boot/arm/u-boot-image-config > -- > 2.1.4 > > From 7efd17056a1a5b2363945e0efc10db7dadc86cb7 Mon Sep 17 00:00:00 2001 > From: Karsten Merker <merker@debian.org> > Date: Mon, 22 Dec 2014 19:04:15 +0100 > Subject: [PATCH 3/6] Add utils/gen-hd-image > > gen-hd-image creates partitioned harddisk images from a directory > tree and optionally installs a bootloader into the image. Supported > target filesystems are fat16, fat32 and ext2. > > Its main use is building bootable images for armhf/armel/arm64 > systems which use u-boot as their system firmware. U-boot > requires the boot device to have an MBR-style partition table, > therefore booting from "supperfloppy" style images (like they > are built by d-i for i386/amd64 systems) does not work there. > --- > build/util/gen-hd-image | 378 ++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 378 insertions(+) > create mode 100755 build/util/gen-hd-image > > diff --git a/build/util/gen-hd-image b/build/util/gen-hd-image > new file mode 100755 > index 0000000..29d2116 > --- /dev/null > +++ b/build/util/gen-hd-image > @@ -0,0 +1,378 @@ > +#!/bin/sh > +# > +# gen-hd-image V1.00 > +# Copyright 2014 by Karsten Merker <merker@debian.org> > +# > +# This file is dual-licensed. It is provided under (at your option) > +# either the terms of the GPL2+ or the terms of the X11 license as > +# described below. Note that this dual licensing only applies to this > +# file, and not this project as a whole. > +# > +# License options: > +# > +# - Option "GPL2+": > +# > +# This program is free software; you can redistribute it and/or > +# modify it under the terms of the GNU General Public License as > +# published by the Free Software Foundation; either version 2 of the > +# License, or (at your option) any later version. > +# > +# This program is distributed in the hope that it will be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +# GNU General Public License for more details. > +# > +# You should have received a copy of the GNU General Public > +# License along with this program; if not, write to the Free > +# Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, > +# MA 02110-1301 USA > +# > +# On Debian systems, the full text of the GPL version 2 is > +# available in the file /usr/share/common-licenses/GPL-2. > +# > +# - or, alternatively, option "X11": > +# > +# Permission is hereby granted, free of charge, to any person > +# obtaining a copy of this software and associated documentation > +# files (the "Software"), to deal in the Software without > +# restriction, including without limitation the rights to use, > +# copy, modify, merge, publish, distribute, sublicense, and/or > +# sell copies of the Software, and to permit persons to whom the > +# Software is furnished to do so, subject to the following > +# conditions: > +# > +# The above copyright notice and this permission notice shall be > +# included in all copies or substantial portions of the Software. > +# > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, > +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES > +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND > +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT > +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, > +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING > +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR > +# OTHER DEALINGS IN THE SOFTWARE. > + > +PATH="${PATH}:/bin:/sbin:/usr/bin:/usr/sbin" > +export PATH > + > +FSTYPE="fat32" > +PARTID="0x0c" > +FATSIZE="32" > +BUILDTYPE="complete" > +SOURCEDIR="." > +PARTOFFSET="2048" > +DEFAULT_IMAGESIZE="976560" # default d-i FLOPPY_SIZE for hd-media images > +IMAGESIZE="${DEFAULT_IMAGESIZE}" > +COMPRESS="none" > +VERBOSITY="0" > +PREREQUISITES="fmt sfdisk" > +PREREQUISITES_MISSING="" > + > +log() > +{ > + if [ "${VERBOSITY}" -gt 0 ]; then > + echo "$(basename $0): $1" > + fi > +} > + > +error() > +{ > + echo "$(basename $0): $1" 1>&2 > +} > + > +clean_tempfiles() > +{ > + [ -f "${TEMP_FS_IMAGEFILE}" ] && rm -f "${TEMP_FS_IMAGEFILE}" > + [ -f "${TEMP_HD_IMAGEFILE}" ] && rm -f "${TEMP_HD_IMAGEFILE}" > +} > + > +check_prerequisites() > +{ > + for TOOL in $1 > + do > + which >/dev/null ${TOOL} > + if [ ! "$?" -eq 0 ]; then > + PREREQUISITES_MISSING="${PREREQUISITES_MISSING}${TOOL} " > + fi > + done > + if [ -n "${PREREQUISITES_MISSING}" ]; then > + error "ERROR: The following programs are unavailable, but required" > + error "ERROR: for the selected options: ${PREREQUISITES_MISSING}" > + error "ERROR: Exiting." > + exit 1 > + fi > +} > + > +usage() > +{ > + fmt -w 75 -s <<EOF > + > +$(basename $0) - bootable harddisk image generator > + > +SYNOPSIS: > + > +$(basename $0) -o output_image_name [-s image_size] [-i sourcedir] [-t fstype] [-p partition_offset] [-b build_type] [-z|-j|-J] [-h] [[bootloader_image bootloader_offset] ...] > + > +DESCRIPTION: > + > +$(basename $0) generates harddisk images with a partition table and a > +single primary partition from a directory tree without requiring root > +priviledges. It optionally also installs firmware/bootloader > +binaries (usually u-boot) in the image area between the MBR and the > +first partition and allows to generate concatenateable partial images > +(only the MBR+firmware area or only the partition area). > + > +OPTIONS > + > + -b build_type > + > + Specify the type of image to build. Valid options are: > + > + - complete: complete harddisk image (MBR/firmware + partition) > + - firmware: only MBR/firmware/bootloader image > + - partition: only partition image > + > + The default is building a complete harddisk image. > + > + -h > + > + Display this help text and exit. > + > + -i sourcedir > + > + Specify the source directory from which the filesystem in > + the image should be generated. The default is the current > + directory. > + > + -j > + > + Compress the image with bzip2. > + > + -J > + > + Compress the image with xz. > + > + -o output_image_name > + > + Specify the name of the generated image. If one of the > + compression options (-z/-j/-J) is selected, the according > + suffix (.gz/.bz2/.xz) will be appended to the supplied > + file name. > + > + -p partition_offset > + > + Specify the partition offset from the beginning of the > + device in blocks of 512 Bytes. The default is 2048, i.e. > + the partition starts at an offset of 1 MB. > + > + -s image_size > + > + Specify the size of the complete harddisk image in kB. > + When building partial images, the size of the parts is > + calculated accordingly, so that the sum of the parts is > + the specified image size. The default image size is > + ${DEFAULT_IMAGESIZE} kB. > + > + -t fstype > + > + Type of the filesystem to create in the harddisk image. > + Available options are fat32 (default), fat16 and ext2. > + Generating large ext2 images can be very slow (ca. 5 > + minutes for a 1GB image on a 1GHz Cortex-A7). > + > + -v > + > + Verbose output. > + > + -z > + > + Compress the image with gzip. > + > +The bootloader_image and bootloader_offset parameters specify which > +bootloader image should be installed at which offset (in blocks of 512 > +Bytes) from the start of the harddisk image. This parameter set can be > +used multiple times to install multi-part bootloader images (e.g. to > +install u-boot versions with separate SPL images). > + > +EOF > +} > + > +# Parse parameters: > +# -h help > +# -i input directory > +# -o output filename > +# -s size of disk image > +# -t type of filesystem (fat16/fat32/ext2) > +# -p partition offset > +# -b build type (complete/firmware/partition) > +# -z/-j/-J gzip/bzip2/xz compression > +# -v verbose > + > +while getopts "hi:o:s:t:p:b:zjJv" option; do > + case ${option} in > + h) > + usage > + exit 0 > + ;; > + i) > + SOURCEDIR="${OPTARG}" > + ;; > + o) > + IMAGEFILE="${OPTARG}" > + ;; > + s) > + IMAGESIZE="${OPTARG}" > + ;; > + t) > + FSTYPE="${OPTARG}" > + case "${FSTYPE}" in > + fat16) > + PARTID="0x0e" > + FATSIZE="16" > + ;; > + fat32) > + PARTID="0x0c" > + FATSIZE="32" > + ;; > + ext2) > + PARTID="0x83" > + ;; > + *) > + echo "$(basename $0): Invalid filesystem type \"${FSTYPE}\". Use fat16, fat32 or ext2." > + exit 1 > + ;; > + esac > + ;; > + p) > + PARTOFFSET="${OPTARG}" > + ;; > + b) > + BUILDTYPE="${OPTARG}" > + case "${BUILDTYPE}" in > + complete|firmware|partition) > + ;; > + *) > + echo "$(basename $0): Invalid build type \"${BUILDTYPE}\". Use complete, firmware or partition." > + exit 1 > + ;; > + esac > + ;; > + z) > + COMPRESS="gzip" > + PREREQUISITES="${PREREQUISITES} gzip" > + ;; > + j) > + COMPRESS="bzip2" > + PREREQUISITES="${PREREQUISITES} bzip2" > + ;; > + J) > + COMPRESS="xz" > + PREREQUISITES="${PREREQUISITES} xz" > + ;; > + v) > + VERBOSITY="1" > + ;; > + esac > +done > + > +shift $((${OPTIND}-1)) > + > +case "${FSTYPE}" in > + fat16|fat32) > + PREREQUISITES="${PREREQUISITES} mkfs.msdos mcopy" > + ;; > + ext2) > + PREREQUISITES="${PREREQUISITES} genext2fs" > + ;; > +esac > + > +check_prerequisites "${PREREQUISITES}" > + > +FS_SIZE=$((${IMAGESIZE}-${PARTOFFSET}/2)) > +if [ ${FS_SIZE} -lt 34816 ] && [ "${FSTYPE}" = "fat32" ]; then > + error "INFO: Image size too small for FAT32, using FAT16." > + FSTYPE="fat16" > + PARTID="0x0e" > + FATSIZE="16" > +fi > +if [ ${FS_SIZE} -gt 2097152 ] && [ "${FSTYPE}" = "fat16" ]; then > + error "INFO: Image size too big for FAT16, using FAT32." > + FSTYPE="fat32" > + PARTID="0x0c" > + FATSIZE="32" > +fi > + > +log "Starting to generate image ${IMAGEFILE} ..." > + > +case "${BUILDTYPE}" in > + complete|firmware) > + log "Building partition table ..." > + TEMP_HD_IMAGEFILE=$(mktemp) > + dd 2>/dev/null if=/dev/zero bs=1k of="${TEMP_HD_IMAGEFILE}" seek=$((${IMAGESIZE}-1)) count=1 > + sfdisk --force -u S "${TEMP_HD_IMAGEFILE}" 1>/dev/null 2>/dev/null <<EOF > +${PARTOFFSET}, ,${PARTID},*, > +EOF > + while [ "$#" -ge "2" ] > + do > + if [ -n "$1" ]; then > + BOOTLOADER_IMAGE="$1" > + BOOTLOADER_OFFSET="$2" > + log "Installing ${BOOTLOADER_IMAGE} at sector ${BOOTLOADER_OFFSET} ..." > + dd 2>/dev/null if="${BOOTLOADER_IMAGE}" of="${TEMP_HD_IMAGEFILE}" bs=512 seek="${BOOTLOADER_OFFSET}" conv=notrunc > + fi > + shift 2 > + done > + if [ "$#" -eq 1 ]; then > + error "ERROR: Firmware/bootloader image name or offset missing. Exiting." > + clean_tempfiles > + exit 1 > + fi > + ;; > +esac > + > +case "${BUILDTYPE}" in > + complete|partition) > + log "Building filesystem ..." > + TEMP_FS_IMAGEFILE=$(mktemp) > + TEMP_FS_IMAGESIZE=$((${IMAGESIZE}-${PARTOFFSET}/2)) # fs size in kB > + dd 2>/dev/null if=/dev/zero bs=1k of="${TEMP_FS_IMAGEFILE}" seek=$((${TEMP_FS_IMAGESIZE}-1)) count=1 > + case "${FSTYPE}" in > + fat16|fat32) > + mkfs.msdos >/dev/null -F "${FATSIZE}" "${TEMP_FS_IMAGEFILE}" "${TEMP_FS_IMAGESIZE}" > + mcopy -s -i "${TEMP_FS_IMAGEFILE}" ${SOURCEDIR}// :: > + # The trailing // is necessary to make mcopy copy the contents > + # of ${SOURCEDIR} but not ${SOURCEDIR} itself. Using ${SOURCEDIR}/* > + # would omit dotfiles and ${SOURCEDIR}/. does not work with mcopy. > + ;; > + ext2) > + genext2fs -z -U -d "${SOURCEDIR}" -b "${TEMP_FS_IMAGESIZE}" "${TEMP_FS_IMAGEFILE}" > + ;; > + esac > + ;; > +esac > + > +case "${BUILDTYPE}" in > + firmware) > + dd 2>/dev/null if="${TEMP_HD_IMAGEFILE}" bs=512 count="${PARTOFFSET}" of="${IMAGEFILE}" > + ;; > + complete) > + dd 2>/dev/null if="${TEMP_HD_IMAGEFILE}" bs=512 count="${PARTOFFSET}" of="${IMAGEFILE}" > + cat "${TEMP_FS_IMAGEFILE}" >> "${IMAGEFILE}" > + ;; > + partition) > + mv "${TEMP_FS_IMAGEFILE}" "${IMAGEFILE}" > + ;; > +esac > + > +if [ ! "${COMPRESS}" = "none" ]; > +then > + log "Compressing image ..." > + "${COMPRESS}" -f "${IMAGEFILE}" > +fi > + > +clean_tempfiles > + > +log "Image finished." > + > +exit 0 > -- > 2.1.4 > > From 38a33a78c784e21bd2bd0f8b2c093037873332c8 Mon Sep 17 00:00:00 2001 > From: Karsten Merker <merker@debian.org> > Date: Mon, 22 Dec 2014 21:46:32 +0100 > Subject: [PATCH 4/6] Add SD-card image build support for hd-media builds on > armhf. > > --- > build/boot/README.concatenateable_images | 7 ++++++ > build/config/armhf/hd-media.cfg | 41 +++++++++++++++++++++++++++++++- > 2 files changed, 47 insertions(+), 1 deletion(-) > create mode 100644 build/boot/README.concatenateable_images > > diff --git a/build/boot/README.concatenateable_images b/build/boot/README.concatenateable_images > new file mode 100644 > index 0000000..662bb61 > --- /dev/null > +++ b/build/boot/README.concatenateable_images > @@ -0,0 +1,7 @@ > +This directory provides installer images in the form of a device-specific > +part (containing the partition table and the system firmware) and a > +device-indepent part (containing the actual installer), which can be > +unpacked and concatenated together to build a complete installer image. > + > +The device-specific part is named firmware.<board_name>.img(.gz|.bz2|.xz) > +and the device-independent part is named partition.img(.gz|.bz2|.xz). > diff --git a/build/config/armhf/hd-media.cfg b/build/config/armhf/hd-media.cfg > index ec119df..440cddd 100644 > --- a/build/config/armhf/hd-media.cfg > +++ b/build/config/armhf/hd-media.cfg > @@ -1,9 +1,10 @@ > FLAVOUR_SUPPORTED = "" > +FLOPPY_SIZE = 40000 > > GZIPPED = .gz > EXTRANAME = hd-media/ > > -TARGET = $(KERNEL) $(INITRD) hd-media_bootscript hd-media_tarball > +TARGET = $(KERNEL) $(INITRD) hd-media_bootscript hd-media_tarball hd-media-images-full hd-media-images-concatenateable > > MANIFEST-INITRD = "Initrd for use on USB memory sticks" > MANIFEST-KERNEL = "Kernel for use on USB memory sticks" > @@ -24,3 +25,41 @@ hd-media_tarball: $(KERNEL) $(INITRD) $(TEMP_DTBS) hd-media_bootscript > cp boot/README.device-tree $(TEMP)/hd-media/dtbs/README > tar -C $(TEMP)/hd-media -zcf $(TEMP)/hd-media.tar.gz boot.scr initrd.gz vmlinuz dtbs/ > mv $(TEMP)/hd-media.tar.gz $(SOME_DEST)/$(EXTRANAME) > + > +.PHONY: hd-media-images-full > +hd-media-images-full: $(KERNEL) $(INITRD) $(TEMP_DTBS) hd-media_bootscript > + -rm -rf $(TEMP)/hd-media > + mkdir $(TEMP)/hd-media > + cp $(KERNEL) $(TEMP)/hd-media/vmlinuz > + cp $(INITRD) $(TEMP)/hd-media/initrd.gz > + cp $(SOME_DEST)/$(EXTRANAME)boot.scr $(TEMP)/hd-media/boot.scr > + cp -r $(TEMP_DTBS) $(TEMP)/hd-media/dtbs/ > + cp boot/README.device-tree $(TEMP)/hd-media/dtbs/README > + mkdir -p $(SOME_DEST)/$(EXTRANAME)/SD-card-images/full > + while read LINE; \ > + do \ > + if [ -n "$${LINE}" ] && ! echo $${LINE}|grep -q -e "^#"; then \ > + set -- $${LINE} ;\ > + gen-hd-image -v -z -b complete -s "$(FLOPPY_SIZE)" -i "$(TEMP)/hd-media" -o "$(SOME_DEST)/$(EXTRANAME)/SD-card-images/full/$${1}.img" "$$2" "$$3" "$$4" "$$5" ;\ > + fi ;\ > + done < boot/arm/u-boot-image-config > + > +.PHONY: hd-media-images-concatenateable > +hd-media-images-concatenateable: $(KERNEL) $(INITRD) $(TEMP_DTBS) hd-media_bootscript > + -rm -rf $(TEMP)/hd-media > + mkdir $(TEMP)/hd-media > + cp $(KERNEL) $(TEMP)/hd-media/vmlinuz > + cp $(INITRD) $(TEMP)/hd-media/initrd.gz > + cp $(SOME_DEST)/$(EXTRANAME)boot.scr $(TEMP)/hd-media/boot.scr > + cp -r $(TEMP_DTBS) $(TEMP)/hd-media/dtbs/ > + cp boot/README.device-tree $(TEMP)/hd-media/dtbs/README > + mkdir -p $(SOME_DEST)/$(EXTRANAME)/SD-card-images/concatenateable > + while read LINE; \ > + do \ > + if [ -n "$${LINE}" ] && ! echo $${LINE}|grep -q -e "^#"; then \ > + set -- $${LINE} ;\ > + gen-hd-image -v -z -b firmware -s "$(FLOPPY_SIZE)" -o "$(SOME_DEST)/$(EXTRANAME)/SD-card-images/concatenateable/firmware.$${1}.img" "$$2" "$$3" "$$4" "$$5" ;\ > + fi ;\ > + done < boot/arm/u-boot-image-config > + gen-hd-image -v -z -b partition -s "$(FLOPPY_SIZE)" -i "$(TEMP)/hd-media" -o "$(SOME_DEST)/$(EXTRANAME)/SD-card-images/concatenateable/partition.img" > + cp boot/README.concatenateable_images "$(SOME_DEST)/$(EXTRANAME)/SD-card-images/concatenateable/" > -- > 2.1.4 > > From d37e6e6ed5e3e75f78adfdb15c870c4b17eea54e Mon Sep 17 00:00:00 2001 > From: Karsten Merker <merker@debian.org> > Date: Mon, 22 Dec 2014 21:48:25 +0100 > Subject: [PATCH 5/6] Add SD-card image build support for netboot builds on > armhf. > > --- > build/config/armhf/netboot.cfg | 50 +++++++++++++++++++++++++++++++++++++++++- > 1 file changed, 49 insertions(+), 1 deletion(-) > > diff --git a/build/config/armhf/netboot.cfg b/build/config/armhf/netboot.cfg > index ce912c8..f98f4cc 100644 > --- a/build/config/armhf/netboot.cfg > +++ b/build/config/armhf/netboot.cfg > @@ -1,7 +1,55 @@ > MEDIA_TYPE = netboot image > > -TARGET = $(INITRD) $(KERNEL) > +TARGET = $(KERNEL) $(INITRD) netboot_bootscript netboot-images-full netboot-images-concatenateable > + > EXTRANAME = $(MEDIUM)/ > > MANIFEST-INITRD = "netboot initrd" > MANIFEST-KERNEL = "kernel image to netboot" > + > +FLOPPY_SIZE = 40000 > + > +GZIPPED = .gz > + > +.PHONY: netboot_bootscript > +netboot_bootscript: > + mkimage -T script -A arm -d boot/arm/bootscr.mainline_common $(SOME_DEST)/$(EXTRANAME)boot.scr > + update-manifest $(SOME_DEST)/$(EXTRANAME)boot.scr "Universal boot script for mainline u-boot (>= v2014.10)" > + > +.PHONY: netboot-images-full > +netboot-images-full: $(KERNEL) $(INITRD) $(TEMP_DTBS) netboot_bootscript > + -rm -rf $(TEMP)/netboot > + mkdir $(TEMP)/netboot > + cp $(KERNEL) $(TEMP)/netboot/vmlinuz > + cp $(INITRD) $(TEMP)/netboot/initrd.gz > + cp $(SOME_DEST)/$(EXTRANAME)boot.scr $(TEMP)/netboot/boot.scr > + cp -r $(TEMP_DTBS) $(TEMP)/netboot/dtbs/ > + cp boot/README.device-tree $(TEMP)/netboot/dtbs/README > + mkdir -p $(SOME_DEST)/$(EXTRANAME)/SD-card-images/full > + while read LINE; \ > + do \ > + if [ -n "$${LINE}" ] && ! echo $${LINE}|grep -q -e "^#"; then \ > + set -- $${LINE} ;\ > + gen-hd-image -v -z -b complete -s "$(FLOPPY_SIZE)" -i "$(TEMP)/netboot" -o "$(SOME_DEST)/$(EXTRANAME)/SD-card-images/full/$${1}.img" "$$2" "$$3" "$$4" "$$5" ;\ > + fi ;\ > + done < boot/arm/u-boot-image-config > + > +.PHONY: netboot-images-concatenateable > +netboot-images-concatenateable: $(KERNEL) $(INITRD) $(TEMP_DTBS) netboot_bootscript > + -rm -rf $(TEMP)/netboot > + mkdir $(TEMP)/netboot > + cp $(KERNEL) $(TEMP)/netboot/vmlinuz > + cp $(INITRD) $(TEMP)/netboot/initrd.gz > + cp $(SOME_DEST)/$(EXTRANAME)boot.scr $(TEMP)/netboot/boot.scr > + cp -r $(TEMP_DTBS) $(TEMP)/netboot/dtbs/ > + cp boot/README.device-tree $(TEMP)/netboot/dtbs/README > + mkdir -p $(SOME_DEST)/$(EXTRANAME)/SD-card-images/concatenateable > + while read LINE; \ > + do \ > + if [ -n "$${LINE}" ] && ! echo $${LINE}|grep -q -e "^#"; then \ > + set -- $${LINE} ;\ > + gen-hd-image -v -z -b firmware -s "$(FLOPPY_SIZE)" -o "$(SOME_DEST)/$(EXTRANAME)/SD-card-images/concatenateable/firmware.$${1}.img" "$$2" "$$3" "$$4" "$$5" ;\ > + fi ;\ > + done < boot/arm/u-boot-image-config > + gen-hd-image -v -z -b partition -s "$(FLOPPY_SIZE)" -i "$(TEMP)/netboot" -o "$(SOME_DEST)/$(EXTRANAME)/SD-card-images/concatenateable/partition.img" > + cp boot/README.concatenateable_images "$(SOME_DEST)/$(EXTRANAME)/SD-card-images/concatenateable/" > -- > 2.1.4 > > From 59342969941f6b6a07570ddf4710d55b3b24bc6d Mon Sep 17 00:00:00 2001 > From: Karsten Merker <merker@debian.org> > Date: Mon, 22 Dec 2014 22:32:03 +0100 > Subject: [PATCH 6/6] Add additional dependencies (needed for building bootable > images on armhf) > > --- > debian/control | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/debian/control b/debian/control > index fbdb166..bf3a66d 100644 > --- a/debian/control > +++ b/debian/control > @@ -68,11 +68,12 @@ Build-Depends: > # default.) > hfsutils [powerpc], > # For making bootable HFS USB sticks for powerpc. > - dosfstools [i386 ia64 m68k amd64 arm64], > + dosfstools [i386 ia64 m68k amd64 armhf arm64], > # For creating FAT filesystems with mkfs.msdos. > # Of course i386/amd64 use this for floppies, CDs etc. > # ia64 uses it for floppies (?) > # m68k uses it for atari floppies > +# armhf uses it for building bootable SD card images > cpio, > # For creating initramfs images. > xz-utils, > @@ -133,12 +134,16 @@ Build-Depends: > # Used to make EFI bootable images > grub-ieee1275-bin [ppc64el], > # IEEE1275 bootloader support. > + u-boot-imx [armhf], > + u-boot-omap [armhf], > + u-boot-sunxi [armhf], > +# U-boot binaries, needed to build bootable SD card images. > # > # Architecture specific build dependencies: > tofrodos [i386 amd64 kfreebsd-i386 kfreebsd-amd64], > # For todos, used on files that need to be accessible from > # DOS. > - mtools [i386 ia64 m68k amd64 arm64 kfreebsd-i386 kfreebsd-amd64 hurd-i386], > + mtools [i386 ia64 m68k amd64 armhf arm64 kfreebsd-i386 kfreebsd-amd64 hurd-i386], > # mcopy is used to put files onto FAT filesystems w/o > # mounting them. > # > -- > 2.1.4 > Mraw, KiBi.
Attachment:
signature.asc
Description: Digital signature