3 burl="https://launchpad.net/ubuntu/+archive/primary/+files/linux-image"
5 def_arches="i386 x86_64 arm powerpc ppc64 ppc64le aarch64"
7 error() { echo "$@" 1>&2; }
8 fail() { [ $# -eq 0 ] || error "$@"; exit 1; }
10 local url="$1" target="$2" tfile="" t=""
11 [ -f "$target" ] && return
12 t=$(dirname "$target")
13 tfile=$(mktemp "$t/.${0##*/}.XXXXXX") || return
14 wget "$url" -O "$tfile" &&
15 mv "$tfile" "$target" ||
16 { t=$?; rm -f "$tfile"; return $t; }
19 [ "$1" = "--outdir" ] && { outdir="$1" && shift; }
27 [ -d "$outdir" ] || mkdir -p "$outdir" ||
28 fail "failed mkdir $outdir"
31 [ -n "$kver" ] || fail "must give kernel version"
33 # version like 3.13.0-52.86
34 # 3.19.0-20.20~14.04.1
40 kminor=${kpart#*.}; kminor=${kminor%.*}
45 [ "$arch" = "x86_64" ] && xarch="amd64";
46 if [ "$kmajor.$kminor" = "3.2" ]; then
48 x86_64|i386) flav="virtual";;
49 arm) flav="omap"; xarch="armel";;
50 powerpc) flav="powerpc64-smp";;
51 *) fail "unknown kernel:arch for $kver:$arch"
53 elif [ "$kmajor.$kminor" = "3.13" -o "$kmajor.$kminor" = "3.19" ]; then
55 arm) xarch="armhf"; flav="generic";;
56 aarch64) xarch=arm64; flav="generic";;
57 powerpc|ppc64) xarch=powerpc; flav="powerpc64-smp";;
58 ppc64le) xarch="ppc64el"; flav="generic";;
59 x86_64|i386|arm64) flav="generic";;
60 *) fail "unknown kernel:arch for $kver:$arch"
63 fail "unknown kernel $kver ($kmajor.$kminor)"
65 url="$burl-${kmajor}.${kminor}.${kmicro}-${abi}-${flav}_${kver}_${xarch}.deb"
66 dl "$url" "$outdir/${url##*/}" || fail "failed dl $url"
67 ln -sf ${url##*/} "$outdir/kernel-${arch}.deb" ||
68 fail "failed symlink for $outdir/kernel-$arch.deb"