[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#612376: marked as done (flash-kernel: please include efikamx support)



Your message dated Wed, 24 Aug 2011 12:32:16 +0000
with message-id <E1QwCcy-0002PG-7M@franck.debian.org>
and subject line Bug#612376: fixed in flash-kernel 3.0~rc.1
has caused the Debian Bug report #612376,
regarding flash-kernel: please include efikamx support
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
612376: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=612376
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: flash-kernel
Version: 2.37

The attached file is part of the flash-kernel 2.28ubuntu10genesi1
distributed by Genesi.

Please incorporate the efikamx_flash_kernel function.
I would change the boot.scr generation to include
console=${console} as part of bootargs.
#!/bin/sh

# Copyright (C) 2006  Joey Hess  <joeyh@debian.org>
# Copyright (C) 2006, 2007, 2008, 2009  Martin Michlmayr <tbm@cyrius.com>
# Copyright (C) 2009, 2010 Canonical Ltd
# Copyright (C) 2010 Genesi USA, Inc.

# 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.

set -e

error() {
	echo "$@" >&2
	exit 1
}

check_mtd() {
	if [ ! -e /proc/mtd ]; then
		error "/proc/mtd doesn't exist"
	fi
}

mtdblock() {
	grep "\"$1\"" /proc/mtd | cut -d: -f 1 | sed 's/mtd/\/dev\/mtdblock/'
}

check_dev_mtdblock() {
	if [ ! -b "$1" ]; then
		error "$1 is not a block device"
	fi
}

mtdsize() {
	size=$(grep "\"$1\"" /proc/mtd | cut -d " " -f 2)
	printf "%d" 0x$size
}

check_subarch() {
	if [ -n "$subarch" ] && [ "$subarch" != "$1" ]; then
		echo "Kernel $kfile does not match your subarchitecture" >&2
		echo "$1, therefore not writing it to flash." >&2
		exit 0
	fi
}

check_size() {
	if [ $2 -gt $3 ]; then
		error "The $1 doesn't fit in flash."
	fi
}

check_fis() {
	if ! fis -d "$1" -o "$2" -s "$3" list >/dev/null; then
		error "fis list failed on device $1 at offset $2 with size $3"
	fi
}

# returns addr, size, and entry in hex, space separated; e.g. for the kernel
# partition, when fis list would return:
#          kernel: addr = 0x00060000, size = 0x00400000, entry = 0x00100000, \
#          length = 0x002144c0, cksum = 0xe9909335
# this function outputs:
# 00060000 00400000 00100000
fis_info() {
	LC_ALL=C fis -d "$1" -o "$2" -s "$3" list | sed -rn "s/^[[:space:]]*$4: addr = 0x([0-9a-f]{8}), size = 0x([0-9a-f]{8}), entry = 0x([0-9a-f]{8}), length = 0x[0-9a-f]{8}, cksum = 0x[0-9a-f]{8}\$/\1 \2 \3/p"
}

# pass fis_info output in args and outputs the decimal offset
fis_offset() {
	printf %d 0x$1
}

# pass fis_info output in args and outputs the decimal size
fis_size() {
	printf %d 0x$2
}

# pass fis_info output in args and outputs the decimal entry point
fis_entry() {
	printf %d 0x$3
}


# See http://www.nslu2-linux.org/wiki/Info/BootFlash -- the NSLU2 uses a
# 16 byte MTD header, the first four bytes (big endian) give the length of
# the remainder of the image, and the remaining bytes are zero.  Generate
# this header.
sercomm_header() {
	perl -e 'print pack("N4", shift)' "$1"
}

nslu2_swap() {
	if [ "$little_endian" ]; then
		devio "<<$1" "xp $,4"
	else
		cat "$1"
	fi
}

# list of functions to call on cleanup
cleanup_funcs=""
cleanup() {
	for f in $cleanup_funcs; do
		$f
	done
}

# generic flash-kernel routines for specific subarchs
omap_flash_kernel() {
	if [ -n "${UBOOT_PART}" ]; then
		echo "Using u-boot partition: ${UBOOT_PART}" >&2
		TMPMOUNT=$(mktemp -d)
		mount $UBOOT_PART $TMPMOUNT
		printf "Creating backups of uImage and uInitrd... " >&2
		if [ -e $TMPMOUNT/uImage ]; then
			cp $TMPMOUNT/uImage $TMPMOUNT/uImage.bak
		fi
		if [ -e $TMPMOUNT/uInitrd ]; then
			cp $TMPMOUNT/uInitrd $TMPMOUNT/uInitrd.bak
		fi
		echo "done." >&2
		printf "Generating kernel u-boot image... " >&2
		mkimage -A arm -O linux -T kernel -C none -a 0x80008000 \
			-e 0x80008000 -n "Ubuntu Kernel" -d $kfile $TMPMOUNT/uImage >&2 1>/dev/null
		echo "done." >&2
		printf "Generating Initramfs u-boot image... " >&2
		mkimage -A arm -O linux -T ramdisk -C none -a 0x0 -e 0x0 \
			-n "Ubuntu Initrd" -d $ifile $TMPMOUNT/uInitrd >&2 1>/dev/null
			echo "done." >&2
		if [ -e /boot/boot.script ];then
			printf "Generating u-boot configuration from /boot/boot.script... " >&2
			cp $TMPMOUNT/boot.scr $TMPMOUNT/boot.scr.bak
			mkimage -A arm -T script -C none -n "Ubuntu boot script" -d /boot/boot.script \
				$TMPMOUNT/boot.scr >&2 1>/dev/null
			echo "done." >&2
		fi
		umount $TMPMOUNT
		rm -rf $TMPMOUNT
	else
		initrd_nand_size="16777216"
		check_mtd
		kmtd=$(mtdblock "Kernel")
		if [ -z "$kmtd" ]; then
			error "Cannot find mtd partition 'Kernel'"
		fi
		check_dev_mtdblock "$kmtd"
		kmtdsize=$(mtdsize "Kernel")
		check_size "Kernel" $(($kfilesize + 8 + 64)) $kmtdsize

		printf "Generating kernel u-boot image... " >&2
		tmp=$(tempfile) 
		cat $kfile >> $tmp
		mkimage -A arm -O linux -T kernel -C none -a 0x80008000 \
			-e 0x80008000 -n "Ubuntu Kernel" -d $tmp $tmp.uboot >&2 1>/dev/null
		echo "done." >&2

		printf "Erasing Kernel NAND space... " >&2 
		dd if=/dev/zero of=$kmtd bs=$kmtdsize count=1 2>/dev/null
		echo "done." >&2

		printf "Flashing kernel... " >&2
		cat $tmp.uboot > $kmtd || error "failed."
		echo "done." >&2
		rm -f $tmp.uboot $tmp

		imtd=$(mtdblock "File System")
		if [ -z "$imtd" ]; then
			error "Cannot find mtd partition for Initramfs"
		fi
		check_dev_mtdblock "$imtd"
		check_size "Initramfs" $ifilesize $initrd_nand_size

		printf "Generating Initramfs u-boot image... " >&2
		tmp=$(tempfile) 
		cat $ifile >> $tmp
		mkimage -A arm -O linux -T ramdisk -C none -a 0x0 -e 0x0 \
			-n "Ubuntu Initrd" -d $tmp $tmp.uboot >&2 1>/dev/null
		echo "done." >&2

		printf "Erasing Initramfs NAND space... " >&2
		dd if=/dev/zero of=$imtd bs=$initrd_nand_size count=1 2>/dev/null
			echo "done." >&2

		printf "Flashing Initramfs... " >&2
		cat $tmp.uboot > $imtd || error "failed."
		echo "done." >&2 
		rm -f $tmp.uboot $tmp
	fi
}

dove_flash_kernel() {
	tmp=$(tempfile)
	uboot_kernel_load_addr=0x00200000
	uboot_initramfs_load_addr=0x01100000
	script_load_addr=0x1000

	printf "Generating kernel u-boot image... " >&2
	cat $kfile >> $tmp
	mkimage -A arm -O linux -T kernel -C none -n "$desc" -a 0x00008000 \
		-e 0x00008000 -d $tmp $tmp.uboot >&2 1>/dev/null
	echo "done." >&2
	if [ -e /boot/uImage ]; then
		echo "Creating backup of /boot/uImage." >&2
		mv /boot/uImage /boot/uImage.bak
	fi
	echo "Creating new /boot/uImage." >&2
	mv $tmp.uboot /boot/uImage
	rm -f $tmp
	printf "Generating initrd u-boot image... " >&2
	mkimage -A arm -O linux -T ramdisk -C gzip -a 0x0 \
		-e 0x0 -n "$idesc" -d "$ifile" "$tmp.uboot" >&2 1>/dev/null
	echo "done." >&2
	if [ -e /boot/uInitrd ]; then
		echo "Creating backup of /boot/uInitrd." >&2
		mv /boot/uInitrd /boot/uInitrd.bak
	fi
	echo "Creating new /boot/uInitrd." >&2
	mv "$tmp.uboot" /boot/uInitrd
	rm -f "$tmp.uboot"
	printf "Generating new u-boot boot script..." >&2
	# The UUID will come from the flash-kernel config file
	cat >"$tmp.boot.script" <<EOF
echo Starting Ubuntu...
if test -n \${fs} && test -n \${interface} && test -n \${device} && test -n \${prefix}; then
	\${fs}load \${interface} \${device} $uboot_kernel_load_addr \${prefix}uImage
	\${fs}load \${interface} \${device} $uboot_initramfs_load_addr \${prefix}uInitrd
	setenv bootargs $rootfs ro quiet splash
	bootm $uboot_kernel_load_addr $uboot_initramfs_load_addr
fi

echo boot information not recieved from u-boot, scanning for startup device

if test -e \${reinitalize_devices}; then
	usb start;
	ide reset;
fi

for i in usb ide; do 
	for j in 0 1; do
		for l in / /boot/; do
			for m in fat ext2; do
				setenv interface \$i;
				setenv device \$j;
				setenv prefix \$l;
				setenv fs \$m;

				echo Scanning \${fs} \${interface} \${device} on prefix \${prefix} ...;

				# This "if" avoids loading an old image but
				# doesn't work in stock u-boot 1.3.4 and is
				# only fixed in Canonical u-boot from October
				# 1st or later

				if \${fs}load \${interface} \${device} $script_load_addr \${prefix}boot.scr; then
					if imi $script_load_addr; then
						echo boot.scr found! Executing ...;
						autoscr $script_load_addr;
					fi;
				fi
			done;
		done;
	done;
done
echo No boot device found.;
EOF
	mkimage -A arm -T script -C none -n "Ubuntu boot script" -d "$tmp.boot.script" \
		"$tmp.boot.scr" >&2 1>/dev/null
	echo "done." >&2
	if [ -e /boot/boot.scr ]; then
		echo "Creating backup of /boot/boot.scr." >&2
		mv /boot/boot.scr /boot/boot.scr.bak
	fi
	echo "Creating new /boot/boot.scr." >&2
	mv "$tmp.boot.scr" /boot/boot.scr
	rm -f "$tmp.boot.script" "$tmp.boot.scr"
}

efikamx_flash_kernel() {
        root=$(readlink -f /dev/root)
        echo "Root filesystem is $root" >&2

        loadaddr=0x90008000
        tmp=$(tempfile)

        printf "Generating kernel u-boot image... " >&2
        cat $kfile >> $tmp
        mkimage -A arm -O linux -T kernel -C none -n "$desc" -a $loadaddr \
            -e $loadaddr -d $tmp $tmp.uboot >&2 1>/dev/null
        echo "done." >&2

        if [ -e /boot/uImage-$kvers ]; then
                echo "Creating backup of /boot/uImage-$kvers." >&2
                mv /boot/uImage-$kvers /boot/uImage-$kvers.bak
        fi

        echo "Creating new /boot/uImage." >&2
        mv $tmp.uboot /boot/uImage-$kvers
        rm -f $tmp.uboot

        printf "Generating initrd u-boot image... " >&2
        mkimage -A arm -O linux -T ramdisk -C gzip -a 0x0 \
                -e 0x0 -n "$idesc" -d "$ifile" "$tmp.uboot" >&2 1>/dev/null
        echo "done." >&2
        if [ -e /boot/uInitrd-$kvers ]; then
                echo "Creating backup of /boot/uInitrd." >&2
                mv /boot/uInitrd-$kvers /boot/uInitrd-$kvers.bak
        fi
        echo "Creating new /boot/uInitrd." >&2
        mv "$tmp.uboot" /boot/uInitrd-$kvers
        rm -f "$tmp.uboot"
        printf "Generating new u-boot boot script..." >&2
        # The UUID will come from the flash-kernel config file

#	if [ -f /boot/boot.cmdline ]; then
#		echo -n "Loading extra commandline arguments... "
#		cmdline=`head -n1 -q /boot/boot.cmdline`
#		# check for root= arg here or custom args will break boot
#		echo "'${cmdline}'"
#	else
#		cmdline="console=tty1 root=$root rootwait rw"
#	fi

        printf "Generating boot.scr... " >&2
        cat >$tmp.boot.script <<EOF
setenv ramdisk uInitrd-$kvers;
setenv kernel uImage-$kvers;
setenv bootargs console=tty1 root=$root rootwait rw quiet splash;
\${loadcmd} \${ramdiskaddr} \${ramdisk};
if imi \${ramdiskaddr}; then; else
  setenv bootargs \${bootargs} noinitrd;
  setenv ramdiskaddr "";
fi;
\${loadcmd} \${kerneladdr} \${kernel}
if imi \${kerneladdr}; then
  bootm \${kerneladdr} \${ramdiskaddr}
fi;
EOF
        mkimage -A arm -T script -C none -n "Ubuntu boot script" -d "$tmp.boot.script" \
                "$tmp.boot.scr" >&2 1>/dev/null
        echo "done." >&2
        if [ -e /boot/boot.scr ]; then
                echo "Creating backup of /boot/boot.scr." >&2
                mv /boot/boot.scr /boot/boot.scr.bak
        fi
        echo "Creating new /boot/boot.scr." >&2
        mv "$tmp.boot.scr" /boot/boot.scr
        rm -f "$tmp.boot.script" "$tmp.boot.scr"
        rm -f $tmp*
}

trap "cleanup" 0 HUP INT QUIT KILL SEGV PIPE TERM

config="/etc/flash-kernel.conf"
if [ -r "$config" ]; then
    . "$config"
fi

if [ "x$1" = "x--machine" ]; then
	machine=$2
	shift 2
else
	machine=$(grep "^Hardware" /proc/cpuinfo | sed 's/Hardware\s*:\s*//')
fi

running_subarch=$(uname -r | sed -e 's/.*-//')

if [ "x$1" = "x--supported" ]; then
	# if FLASH_KERNEL_SKIP is set, its always unsupported
	if [ -n "$FLASH_KERNEL_SKIP" ]; then
		exit 1
	fi

	case "$machine" in
		"ARM-Versatile Express CA9x4")		exit 0 ;;
		"Buffalo Linkstation Pro/Live")		exit 0 ;;
		"Buffalo/Revogear Kurobox Pro")		exit 0 ;;
		"D-Link DNS-323")			exit 0 ;;
		"Freescale MX51 Babbage Board")		exit 0 ;;
		"GLAN Tank")				exit 0 ;;
		"HP Media Vault mv2120")		exit 0 ;;
		"IGEP v2 board")            exit 0 ;;
		"Marvell DB-MV88F6781-BP Development Board") exit 0 ;;
		"Linksys NSLU2")			exit 0 ;;
		"OMAP3 Beagle Board")			exit 0 ;;
		"OMAP4430 Panda Board")			exit 0 ;;
		"OMAP4430 4430SDP board")		exit 0 ;;
		"Marvell OpenRD Base Board")		exit 0 ;;
		"Marvell OpenRD Client Board")		exit 0 ;;
		"Marvell SheevaPlug Reference Board")	exit 0 ;;
		"Marvell eSATA SheevaPlug Reference Board")	exit 0 ;;
		"QNAP TS-109/TS-209" | "QNAP TS-409")	exit 0 ;;
		"QNAP TS-119/TS-219")			exit 0 ;;
		"QNAP TS-41x")				exit 0 ;;
		"Thecus N2100")				exit 0 ;;
		"Lanner EM7210")			exit 0 ;;
		"Genesi Efika MX (Smartbook)")          exit 0 ;;
		"Genesi Efika MX (Smarttop)")           exit 0 ;;
		*)
			# we're supported if we have a generic fallback
			case "$running_subarch" in
				"dove" | "omap" | "omap4" | "efikamx" | "efikasb" ) exit 0 ;;
			esac
		exit 1
		;;
	esac
fi

if [ -n "$FLASH_KERNEL_SKIP" ]; then
	exit 0
fi

if [ -n "$1" ]; then
	kvers="$1"
	kfile=/boot/vmlinuz-$kvers
	ifile=/boot/initrd.img-$kvers
	desc="Ubuntu kernel $1"
	idesc="Ubuntu ramdisk $1"
else
	if [ -e /vmlinuz ]; then
		kfile=/vmlinuz
		ifile=/initrd.img
	elif [ -e /boot/vmlinuz ]; then
		kfile=/boot/vmlinuz
		ifile=/boot/initrd.img
	else
		error "Cannot find a default kernel in /vmlinuz or /boot/vmlinuz"
	fi
	desc="Debian kernel"
	idesc="Debian ramdisk"
fi

if [ ! -e $kfile ] || [ ! -e $ifile ]; then
	error "Can't find $kfile and $ifile"
fi
kfilesize=$(wc -c "$kfile" | awk '{print $1}')
ifilesize=$(wc -c "$ifile" | awk '{print $1}')

# Extract the subarchitecture from the kernel name
if [ -L "$kfile" ]; then
	kfile=$(readlink -e "$kfile")
fi
subarch=$(echo "$kfile" | sed -e 's/.*-//')

case "$machine" in
	"ARM-Versatile Express CA9x4")
		check_subarch "vexpress"
		check_mtd

		kmtd=$(mtdblock "kernel")
		if [ -z "$kmtd" ]; then
			error "Cannot find mtd partition 'kernel'"
		fi
		check_dev_mtdblock "$kmtd"
		kmtdsize=$(mtdsize "kernel")
		check_size "kernel" $(($kfilesize + 64)) $kmtdsize
		printf "Generating a u-boot compatible kernel image... " >&2
		mkimage -A arm -O linux -T kernel -C none -a 0x60008000 \
			-e 0x60008000 -n "$desc" -d $kfile $kfile.uboot \
			>&2 1>/dev/null
		printf "Writing kernel to flash... " >&2
		cat $kfile.uboot > $kmtd || error "failed."
		echo "done." >&2
		rm -f $kfile.uboot

		imtd=$(mtdblock "initrd")
		if [ -z "$imtd" ]; then
			error "Cannot find mtd partition for initrd"
		fi
		check_dev_mtdblock "$imtd"
		imtdsize=$(mtdsize "initrd")
		check_size "initrd" $ifilesize $imtdsize 
		printf "Generating u-boot compatible initrd image... " >&2
		mkimage -A arm -O linux -T ramdisk -C none -a 0x81000000 \
			-e 0x81000000 -n "$idesc" -d $ifile $ifile.uboot \
			>&2 1>/dev/null
		printf "Writing initrd to flash... " >&2
		cat $ifile.uboot > $imtd || error "failed."
		echo "done." >&2 
		rm -f $ifile.uboot
	;;
	"Buffalo Linkstation Pro/Live" | "Buffalo/Revogear Kurobox Pro")
		check_subarch "orion5x"
		tmp="$(tempfile)"
		printf "Generating kernel u-boot image... " >&2
		case "$machine" in
			"Buffalo Linkstation Pro/Live")
				# Set machine id 1585 (0x0631)
				devio > "$tmp" 'wl 0xe3a01c06,4' 'wl 0xe3811031,4'
			;;
			"Buffalo/Revogear Kurobox Pro")
				# Set machine id 1509 (0x05e5)
				devio > "$tmp" 'wl 0xe3a01c05,4' 'wl 0xe38110e5,4'
			;;
		esac
		cat "$kfile" >> "$tmp"
		mkimage -A arm -O linux -T kernel -C none -a 0x00008000 \
			-e 0x00008000 -n "$desc" -d "$tmp" "$tmp.uboot" >&2 1>/dev/null
		echo "done." >&2
		if [ -e /boot/uImage.buffalo ]; then
			echo "Creating backup of /boot/uImage.buffalo." >&2
			mv /boot/uImage.buffalo /boot/uImage.buffalo.bak
		fi
		echo "Creating new /boot/uImage.buffalo." >&2
		mv "$tmp.uboot" /boot/uImage.buffalo
		rm -f "$tmp"
		printf "Generating initrd u-boot image... " >&2
		mkimage -A arm -O linux -T ramdisk -C gzip -a 0x0 \
			-e 0x0 -n "$idesc" -d "$ifile" "$tmp.uboot" >&2 1>/dev/null
		echo "done." >&2
		if [ -e /boot/initrd.buffalo ]; then
			echo "Creating backup of /boot/initrd.buffalo." >&2
			mv /boot/initrd.buffalo /boot/initrd.buffalo.bak
		fi
		echo "Creating new /boot/initrd.buffalo." >&2
		mv "$tmp.uboot" /boot/initrd.buffalo
	;;
	"D-Link DNS-323")
		check_subarch "orion5x"
		check_mtd
		imtd=$(mtdblock "File System")
		if [ -z "$imtd" ]; then
			error "Cannot find mtd partition 'File System'"
		fi
		check_dev_mtdblock "$imtd"
		imtdsize=$(mtdsize "File System")
		check_size "File System" $((ifilesize + 64)) $imtdsize
		kmtd=$(mtdblock "Linux Kernel")
		if [ -z "$kmtd" ]; then
			error "Cannot find mtd partition 'Linux Kernel'"
		fi
		check_dev_mtdblock "$kmtd"
		kmtdsize=$(mtdsize "Linux Kernel")
		check_size "Linux Kernel" $(($kfilesize + 8 + 64)) $kmtdsize
		printf "Generating kernel u-boot image... " >&2
		tmp="$(tempfile)"
		# Set machine id 1542 (0x0606)
		devio > "$tmp" 'wl 0xe3a01c06,4' 'wl 0xe3811006,4'
		cat "$kfile" >> "$tmp"
		mkimage -A arm -O linux -T kernel -C none -a 0x00008000 \
			-e 0x00008000 -n "$desc" -d "$tmp" "$tmp.uboot" >&2 1>/dev/null
		echo "done." >&2
		printf "Flashing kernel... " >&2
		cat "$tmp.uboot" > "$kmtd" || error "failed."
		echo "done." >&2
		rm -f "$tmp.uboot" "$tmp"
		printf "Generating initramfs u-boot image... " >&2
		mkimage -A arm -O linux -T ramdisk -C gzip -a 0x00800000 \
			-e 0x00800000 -n "$idesc" -d "$ifile" "$tmp.uboot" >&2 1>/dev/null
		echo "done." >&2
		printf "Flashing initramfs... " >&2
		cat "$tmp.uboot" > "$imtd" || error "failed."
		echo "done." >&2
		rm -f "$tmp.uboot"
	;;
	"Freescale MX51 Babbage Board")
		check_subarch "imx51"

		for c in fis_dev fis_offset_hex fis_size_hex; do
			if [ -z "`eval echo \$$c`" ]; then
				error "$c not set in $config"
			fi
		done
		check_dev_mtdblock "$fis_dev"
		check_fis "$fis_dev" "$fis_offset_hex" "$fis_size_hex"

		# check for an "initrd" entry
		initrd="initrd"
		ifisinfo=$(fis_info "$fis_dev" "$fis_offset_hex" "$fis_size_hex" "initrd")
		# fallback on "initramfs"
		if [ -z "$ifisinfo" ]; then
			initrd="initramfs"
			ifisinfo=$(fis_info "$fis_dev" "$fis_offset_hex" "$fis_size_hex" "$initrd")
			if [ -z "$ifisinfo" ]; then
				error "Cannot find FIS partition '$initrd'"
			fi
		fi
		ifissize=$(fis_size $ifisinfo)
		check_size "$initrd" $ifilesize $ifissize

		kfisinfo=$(fis_info "$fis_dev" "$fis_offset_hex" "$fis_size_hex" "kernel")
		if [ -z "$kfisinfo" ]; then
			error "Cannot find FIS partition 'kernel'"
		fi
		kfissize=$(fis_size $kfisinfo)
		check_size "kernel" $kfilesize $kfissize

		kfisoffset=$(fis_offset $kfisinfo)
		kfisentry=$(fis_entry $kfisinfo)
		# the kernel is started at its load address so kfisram ==
		# kfisentry
		kfisram="$kfisentry"

		ifisoffset=$(fis_offset $ifisinfo)
		# not used
		ifisentry=$(printf %d 0xffffffff)
		# XXX hardcoded, should be read from RedBoot; but fis command
		# currently doesn't return that info
		ifisram=$(printf %d 0x1000000)

		printf "Flashing kernel... " >&2
		fis -d "$fis_dev" -o "$fis_offset_hex" -s "$fis_size_hex" create "kernel" -f $kfisoffset -l $kfissize -e $kfisentry -r $kfisram -c "$kfile" || error "FIS create failed."
		dd if="$kfile" of="$fis_dev" bs=$kfisoffset seek=1 2>/dev/null || error "update failed."
		echo "done." >&2

		printf "Generating padded initramfs... " >&2
		# padded initramfs; we need to use a temp file because of the
		# fis command which needs to see a padded datalength
		ipadded=""
		# cleanup handler which removes the generated temp file when
		# this script finished
		cleanup_ipadded() {
			if [ -n "$ipadded" ]; then
				rm -f "$ipadded"
			fi
		}
		cleanup_funcs="cleanup_ipadded $cleanup_funcs"
		ipadded=$(mktemp -t flash-kernel.XXXXXXXXXX)
		pad=$(expr $ifissize - $ifilesize)
		(
			cat $ifile
			# pad with zeroes; this uses $pad mem, not very elegant
			dd if=/dev/zero bs=$pad count=1 2>/dev/null
		) | dd of="$ipadded" bs=4k 2>/dev/null || error "failed."
		echo "done." >&2

		printf "Flashing initramfs... " >&2
		fis -d "$fis_dev" -o "$fis_offset_hex" -s "$fis_size_hex" create "$initrd" -f $ifisoffset -l $ifissize -e $ifisentry -r $ifisram -c "$ipadded" || error "FIS create failed."
		dd if="$ipadded" of="$fis_dev" bs=$ifisoffset seek=1 2>/dev/null || error "failed."
		echo "done." >&2
	;;
	"GLAN Tank")
		rm -f /boot/initrd /boot/zImage
		ln -s "$(basename "$ifile")" /boot/initrd
		(
			# Set machine id 1100 (0x044c)
			devio 'wl 0xe3a01c04,4' 'wl 0xe381104c,4'
			cat "$kfile"
		) > /boot/zImage
	;;
	"HP Media Vault mv2120")
		check_subarch "orion5x"
		tmp="$(tempfile)"
		printf "Generating kernel u-boot image... " >&2
		# Set machine id 1693 (0x069d)
		devio > "$tmp" 'wl 0xe3a01c06,4' 'wl 0xe381109d,4'
		cat "$kfile" >> "$tmp"
		mkimage -A arm -O linux -T multi -C none -n "$desc" -a 0x01000000 \
			-e 0x01000000 -d "$tmp:$ifile" "$tmp.uboot" >&2 1>/dev/null
		echo "done." >&2
		if [ -e /boot/uImage ]; then
			echo "Creating backup of /boot/uImage." >&2
			mv /boot/uImage /boot/uImage.bak
		fi
		echo "Creating new /boot/uImage." >&2
		mv "$tmp.uboot" /boot/uImage
		rm -f "$tmp"
	;;
	"Linksys NSLU2")
		check_subarch "ixp4xx"
		case "$(dpkg --print-architecture)" in
			arm|armel)
				little_endian=1
			;;
			armeb)
				little_endian=0
			;;
		esac
		check_mtd
		fismtd=$(mtdblock "FIS directory")
		if [ -z "$fismtd" ]; then
			error "Cannot find mtd FIS directory"
		fi
		kmtd=$(mtdblock Kernel)
		if [ -z "$kmtd" ]; then
			error "Cannot find mtd partition 'Kernel'"
		fi
		check_dev_mtdblock "$kmtd"
		kmtdsize=$(mtdsize "Kernel")
		check_size "kernel" $(($kfilesize + 16 + 16)) $kmtdsize
		imtd=$(mtdblock Ramdisk)
		if [ -z "$imtd" ]; then
			error "Cannot find mtd partition 'Ramdisk'"
		fi
		check_dev_mtdblock "$imtd"
		imtdsize=$(mtdsize "Ramdisk")
		check_size "ramdisk" $(($ifilesize + 16)) $imtdsize
		# The following devio magic parses the FIS directory to
		# obtain the size, offset and name of each partition.  This
		# used used to obtain the offset of the Kernel partition.
		offset=$(echo "$(devio "<<$fismtd" '
			<= $ 0x20000 -
			L= 0x1000
			$( 1
				# 0xff byte in name[0] ends the partition table
				$? @ 255 =
				# output size base name
				<= f15+
				.= b 0xfffffff &
				<= f4+
				.= b
				pf "%lu %lu "
				<= f28-
				cp 16
				pn
				<= f240+
				L= L256-
			$) L255>')" |
			while read a b c; do
				if [ "$c" = "Kernel" ]; then
					echo $b
				fi
			done)
		# The Kernel partition, starting at $offset, is divided into
		# two areas at $boundary.  We therefore need to split the
		# kernel into two and write them to flash with two Sercomm
		# headers.
		boundary=1441792 # 0x00160000
		ksize1=$(expr $boundary - $offset - 16)
		tmp="$(tempfile)"
		printf "Flashing kernel: " >&2
		(
			sercomm_header $(expr $kfilesize + 16)
			dd if="$kfile" of="$tmp" bs=$ksize1 count=1 2>/dev/null
			nslu2_swap "$tmp"
			sercomm_header 131072
			dd if="$kfile" of="$tmp" ibs=$ksize1 skip=1 2>/dev/null
			nslu2_swap "$tmp"
			rm -f "$tmp"
		) > "$kmtd" || error "failed."
		echo "done." >&2
		printf "Flashing initramfs: " >&2
		dd if="$ifile" of="$tmp" ibs=$(($imtdsize - 16)) conv=sync 2>/dev/null
		(
			sercomm_header $ifilesize
			nslu2_swap "$tmp"
			rm -f "$tmp"
		) > "$imtd" || error "failed."
		echo "done." >&2
	;;
	"Marvell OpenRD Base Board" | "Marvell OpenRD Client Board" | "Marvell SheevaPlug Reference Board" | "Marvell eSATA SheevaPlug Reference Board")
		check_subarch "kirkwood"
		tmp="$(tempfile)"
		printf "Generating kernel u-boot image... " >&2
		mkimage -A arm -O linux -T kernel -C none -a 0x00008000 \
			-e 0x00008000 -n "$desc" -d "$kfile" "$tmp.uboot" >&2 1>/dev/null
		echo "done." >&2
		if [ -e /boot/uImage ]; then
			echo "Creating backup of /boot/uImage." >&2
			mv /boot/uImage /boot/uImage.bak
		fi
		echo "Creating new /boot/uImage." >&2
		mv "$tmp.uboot" /boot/uImage
		printf "Generating initrd u-boot image... " >&2
		mkimage -A arm -O linux -T ramdisk -C gzip -a 0x0 \
			-e 0x0 -n "$idesc" -d "$ifile" "$tmp.uboot" >&2 1>/dev/null
		echo "done." >&2
		if [ -e /boot/uInitrd ]; then
			echo "Creating backup of /boot/uInitrd." >&2
			mv /boot/uInitrd /boot/uInitrd.bak
		fi
		echo "Creating new /boot/uInitrd." >&2
		mv "$tmp.uboot" /boot/uInitrd
		rm -f "$tmp"
	;;
	"Marvell DB-MV88F6781-BP Development Board")
		check_subarch "dove"
		dove_flash_kernel
	;;
	"IGEP v2 board" | "OMAP3 Beagle Board" | "OMAP4430 4430SDP board" | "OMAP4430 Panda Board")
		case "$machine" in
			"IGEP v2 board"|"OMAP3 Beagle Board")
				check_subarch "omap"
			;;
			"OMAP4430 4430SDP board" | "OMAP4430 Panda Board")
				check_subarch "omap4"
			;;
		esac
		omap_flash_kernel
	;;
	"QNAP TS-109/TS-209" | "QNAP TS-119/TS-219" | "QNAP TS-409" | "QNAP TS-41x")
		case "$machine" in
			"QNAP TS-109/TS-209" | "QNAP TS-409")
				check_subarch "orion5x"
			;;
			"QNAP TS-119/TS-219" | "QNAP TS-41x")
				check_subarch "kirkwood"
			;;
		esac
		check_mtd
		imtd=$(mtdblock "RootFS1")
		if [ -z "$imtd" ]; then
			error "Cannot find mtd partition 'RootFS1'"
		fi
		check_dev_mtdblock "$imtd"
		imtdsize=$(mtdsize "RootFS1")
		check_size "RootFS1" $ifilesize $imtdsize
		kmtd=$(mtdblock Kernel)
		if [ -z "$kmtd" ]; then
			error "Cannot find mtd partition 'Kernel'"
		fi
		check_dev_mtdblock "$kmtd"
		kmtdsize=$(mtdsize "Kernel")
		check_size "Kernel" $(($kfilesize + 8 + 64)) $kmtdsize
		printf "Generating kernel u-boot image... " >&2
		tmp="$(tempfile)"
		case "$machine" in
			"QNAP TS-109/TS-209")
				# Set machine id 1565 (0x061d)
				devio > "$tmp" 'wl 0xe3a01c06,4' 'wl 0xe381101d,4'
			;;
			"QNAP TS-119/TS-219")
				# Set machine id 2139 (0x085b)
				devio > "$tmp" 'wl 0xe3a01c08,4' 'wl 0xe381105b,4'
			;;
			"QNAP TS-409")
				# Set machine id 1601 (0x0641)
				devio > "$tmp" 'wl 0xe3a01c06,4' 'wl 0xe3811041,4'
			;;
			"QNAP TS-41x")
				# Set machine id 2502 (0x09c6)
				devio > "$tmp" 'wl 0xe3a01c09,4' 'wl 0xe38110c6,4'
			;;
		esac
		cat "$kfile" >> "$tmp"
		mkimage -A arm -O linux -T kernel -C none -a 0x00008000 \
			-e 0x00008000 -n "$desc" -d "$tmp" "$tmp.uboot" >&2 1>/dev/null
		echo "done." >&2
		printf "Flashing kernel... " >&2
		cat "$tmp.uboot" > "$kmtd" || error "failed."
		echo "done." >&2
		rm -f "$tmp.uboot" "$tmp"
		printf "Flashing initramfs... " >&2
		pad=$(expr $imtdsize - $ifilesize)
		(
			cat "$ifile"
			dd if=/dev/zero bs=$pad count=1 2>/dev/null
		) > "$imtd" || error "failed."
		echo "done." >&2
	;;
	"Thecus N2100")
		check_subarch "iop32x"
		check_mtd
		imtd=$(mtdblock ramdisk)
		if [ -z "$imtd" ]; then
			error "Cannot find mtd partition 'ramdisk'"
		fi
		check_dev_mtdblock "$imtd"
		imtdsize=$(mtdsize "ramdisk")
		check_size "ramdisk" $ifilesize $imtdsize
		kmtd=$(mtdblock kernel)
		if [ -z "$kmtd" ]; then
			error "Cannot find mtd partition 'kernel'"
		fi
		check_dev_mtdblock "$kmtd"
		kmtdsize=$(mtdsize "kernel")
		check_size "kernel" $(($kfilesize + 8)) $kmtdsize
		printf "Flashing kernel... " >&2
		(
			# Set machine id 1101 (0x044d)
			devio 'wl 0xe3a01c04,4' 'wl 0xe381104d,4'
			cat "$kfile"
		) > "$kmtd" || error "failed."
		echo "done." >&2
		printf "Flashing initramfs... " >&2
		pad=$(expr $imtdsize - $ifilesize)
		(
			cat "$ifile"
			dd if=/dev/zero bs=$pad count=1 2>/dev/null
		) > "$imtd" || error "failed."
		echo "done." >&2
	;;
	"Lanner EM7210")
		# Really: Intel SS4000-e and compatibles
		check_subarch "iop32x"
		check_mtd
		imtd=$(mtdblock "ramdisk.gz")
		if [ -z "$imtd" ]; then
			error "Cannot find mtd partition 'ramdisk.gz'"
		fi
		check_dev_mtdblock "$imtd"
		imtdsize=$(mtdsize "ramdisk.gz")
		check_size "ramdisk" $ifilesize $imtdsize
		kmtd=$(mtdblock zImage)
		if [ -z "$kmtd" ]; then
			error "Cannot find mtd partition 'zImage'"
		fi
		kmtdsize=$(mtdsize "zImage")
		check_size "zImage" $(($kfilesize + 8)) $kmtdsize
		printf "Flashing kernel..." >&2
		(
			# Set machine ID 1212 (0x04bc)
			devio 'wl 0xe3a01c04,4' 'wl 0xe38110bc,4'
			cat "$kfile"
		) > "$kmtd" || error "failed."
		echo "done." >&2
		printf "Flashing initramfs... " >&2
		pad=$(expr $imtdsize - $ifilesize)
		(
			cat "$ifile"
			dd if=/dev/zero bs=$pad count=1 2>/dev/null
		) > "$imtd" || error "failed."
		echo "done." >&2
	;;
	"Genesi Efika MX (Smartbook)" | "Genesi Efika MX (Smarttop)")
                #check_subarch $running_subarch
                efikamx_flash_kernel
	;;
	*)
		case "$running_subarch" in
			"dove" | "omap" | "omap4")
				echo "warning: using generic subarchitecture fallback for $running_subarch"
				check_subarch $running_subarch

				case "$subarch" in
					"dove")
						dove_flash_kernel
					;;
					"omap" | "omap4")
						omap_flash_kernel
					;;
				esac
		;;
		*)
			error "Unsupported platform."
		;;
		esac
	;;
esac


--- End Message ---
--- Begin Message ---
Source: flash-kernel
Source-Version: 3.0~rc.1

We believe that the bug you reported is fixed in the latest version of
flash-kernel, which is due to be installed in the Debian FTP archive:

flash-kernel-installer_3.0~rc.1_armel.udeb
  to main/f/flash-kernel/flash-kernel-installer_3.0~rc.1_armel.udeb
flash-kernel_3.0~rc.1.dsc
  to main/f/flash-kernel/flash-kernel_3.0~rc.1.dsc
flash-kernel_3.0~rc.1.tar.gz
  to main/f/flash-kernel/flash-kernel_3.0~rc.1.tar.gz
flash-kernel_3.0~rc.1_armel.deb
  to main/f/flash-kernel/flash-kernel_3.0~rc.1_armel.deb



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 612376@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Hector Oron <zumbi@debian.org> (supplier of updated flash-kernel package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Format: 1.8
Date: Wed, 24 Aug 2011 12:47:34 +0100
Source: flash-kernel
Binary: flash-kernel flash-kernel-installer
Architecture: source armel
Version: 3.0~rc.1
Distribution: experimental
Urgency: low
Maintainer: Debian Install System Team <debian-boot@lists.debian.org>
Changed-By: Hector Oron <zumbi@debian.org>
Description: 
 flash-kernel - utility to make certain embedded devices bootable
 flash-kernel-installer - Make the system bootable (udeb)
Closes: 594878 612376 620888 626434 631396
Changes: 
 flash-kernel (3.0~rc.1) experimental; urgency=low
 .
   [ Loïc Minier ]
   * Bump Standards-Version to 3.9.2.
   * Add a testsuite and run it during build; change code a bit to be more
     easily tested.
   * Start reworking flash-kernel to be more data-driven.
     - Keep some machine data in a small embedded RFC 2822 style database; such
       as allowed kernel flavors, machine id to set before booting Linux,
       MTD names, U-Boot load addresses, /boot filenames etc.
     - Simplify code in the main "case" statement as much as possible by using
       functions for common code and splitting error handling, initialization,
       and sanity checks out.
     - Various syntax tweaks.
   * Only allow iop32x kernels on GLAN Tank.
   * Fix Lintian warnings.
     - Quote minus signs in man page.
     - Depend on ${misc:Depends}.
   * Add myself to Uploaders at tbm's proposal.
   * Add myself to flash-kernel's Copyright and to debian/copyright; thanks
     Martin Michlmayr.
 .
   [ Hector Oron ]
   * Add armhf to architecture list (Closes: #620888)
     - add mx5 as armhf subarchitecture
   * Add myself to Uploaders field.
   * Add preliminary mv78xx0 support. (Closes: #594878)
   * Add build dependency on devio, needed to run test-suite.
   * Upgrade major version to 3.0~rc.1
   * Add support for Genesi Efika MX nettops and smarttops. (Closes: #612376)
   * Add preliminary U-Boot script support (Closes: #626434)
 .
   [ Julian Andres Klode ]
   * Support for Toshiba AC100 (Closes: #631396)
 .
   [ Martin Michlmayr ]
   * Remove myself from the Uploaders field.
 .
   [ Updated translations ]
   * Bulgarian (bg.po) by Damyan Ivanov
   * German (de.po) by Holger Wansing
   * Esperanto (eo.po) by Felipe Castro
   * Basque (eu.po)
   * Hebrew (he.po) by Lior Kaplan
   * Italian (it.po) by Milo Casagrande
   * Korean (ko.po) by Changwoo Ryu
   * Macedonian (mk.po) by Arangel Angov
   * Romanian (ro.po) by Eddy Petrișor
   * Sinhala (si.po) by Danishka Navin
   * Slovak (sk.po) by Ivan Masár
   * Swedish (sv.po) by Daniel Nylander
   * Uyghur (ug.po) by Sahran
   * Simplified Chinese (zh_CN.po) by YunQiang Su
Checksums-Sha1: 
 80f72d07827f3e3fb0311e6400415b70d79e4cbd 1669 flash-kernel_3.0~rc.1.dsc
 98db3b825cbdcf449e82a42173c32f45b6d5a657 48850 flash-kernel_3.0~rc.1.tar.gz
 6561090adec3efa743950bba9557c28fc736fd57 19564 flash-kernel_3.0~rc.1_armel.deb
 db5018e174417a7c0b92ecfbc2398e0e6a98b510 12400 flash-kernel-installer_3.0~rc.1_armel.udeb
Checksums-Sha256: 
 0b3de1beb920ebdc80285f2312b0a195d042fce1b6ff83209afdb487d62af265 1669 flash-kernel_3.0~rc.1.dsc
 422619dc4ade7c490f3139a8386ed72e224a16983882a0baa35aca0252e65485 48850 flash-kernel_3.0~rc.1.tar.gz
 cce2713506fe636b5ca1ee930832cc7253da4c63ef93e2ef7e19257ec248a9e2 19564 flash-kernel_3.0~rc.1_armel.deb
 d703cb113b906edb16a7e8a882e1f82406d8fb734bd1720a1d911ddfc186c711 12400 flash-kernel-installer_3.0~rc.1_armel.udeb
Files: 
 ad0f758094ba7f81bfbb9c65f4786c45 1669 utils optional flash-kernel_3.0~rc.1.dsc
 8af5f8bef0803d1f56b947218338cd0b 48850 utils optional flash-kernel_3.0~rc.1.tar.gz
 8269fbc9175d560b3e93a9a0b2ce76ef 19564 utils optional flash-kernel_3.0~rc.1_armel.deb
 2847a63ac08f876984297eaabb1734b7 12400 debian-installer standard flash-kernel-installer_3.0~rc.1_armel.udeb
Package-Type: udeb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (GNU/Linux)

iQIcBAEBCAAGBQJOVOxjAAoJEK8ig6p24qx7ujEP/0B4HCtmv+Gs275pirssHdDB
yG2lB6FgMqCMlIQAuW7i4fyp7NpVpCNRVSovHDJk4ESOdSMXzLWnKRZw42DAfAQc
BQQTFKprJYk40LhgZt6Kk0d6hkq2op3H6YQGGaZQCgWgY2mGio2fptEImEraPn1+
Lz0XCg7Sl9fmoh9jswtsxYk344xHF+j1MVwqWRhytb3Ho1ouEjILgGOcWD8tyN97
kQlkCzdd0z75D78aIltv3zfC04hmTamX5CGXzSj8Y5wTGhOTYf+0k3ysw85Ub9UP
gslEOPy7zdGIgNQ9N29JT+8jvhBI1X1ig7Kwl4QJuzi0RaWYhPjiHv//gl849tVu
X0UHjBQ9+fz4bwDR/aNi3dp/MRZNH94f0Cec0l8No0irQDAADuW3WELijwrbj99H
Af4EmKeEmkDqkkX/wDLNWBxB6gggjEdVUhV5NZHZlMRgkiZC3VPnb+q25LkA1AKm
E2rzF+s7da3lTcnUIekbRMJRVMYVE4ZlRdX7kwYKveo3/lydl+99nwEFZJ+551Ph
W7Cm9wzpCGomciP3xH7pP4+JBg/h3QBzI9a765vveuHm3fZXx/93jzSPfUZq9+5L
+SG3S6QbpbtEFj+HGbpUb1FBZ5AGDyUSCXKnejdxphmBHbx29QBPSQUBZExvRB3t
NhhU3FKF6uU5wMjK0yGc
=D/ZR
-----END PGP SIGNATURE-----



--- End Message ---

Reply to: