Your message dated Wed, 24 Aug 2011 12:32:16 +0000
with message-id <e1qwccy-0002pg...@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 ow...@bugs.debian.org
immediately.)
--
612376: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=612376
Debian Bug Tracking System
Contact ow...@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 <jo...@debian.org>
# Copyright (C) 2006, 2007, 2008, 2009 Martin Michlmayr <t...@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 612...@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.
Debian distribution maintenance software
pp.
Hector Oron <zu...@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 ftpmas...@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 <zu...@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 ---