askpass() {
# read -s emulation for dash. result is in $resp.
set -o noglob
- stty -echo
+ [ -t 0 ] && stty -echo
read resp
- stty echo
+ [ -t 0 ] && stty echo
set +o noglob
}
# }}}
}
# }}}
+# check available backports release version {{{
+checkbackports() {
+ wget -q -O/dev/null http://${BACKPORTSMIRROR}/dists/${RELEASE}-backports/Release
+}
+# }}}
+
+# feature to provide Debian backports repos {{{
+backportrepos() {
+ case "$RELEASE" in
+ squeeze)
+ BACKPORTSMIRROR="backports.debian.org/debian-backports"
+ ;;
+ *)
+ BACKPORTSMIRROR="http.debian.net/debian"
+ ;;
+ esac
+ if [ -n "$BACKPORTREPOS" ] ; then
+ if ! checkbackports ; then
+ echo "Backports for ${RELEASE} are not available." >&2
+ exit 1
+ else
+ # user might have provided their own apt sources.list
+ if ! grep -q backports /etc/apt/sources.list.d/backports.list 2>/dev/null ; then
+ cat >> /etc/apt/sources.list.d/backports.list << EOF
+# debian backports: ${RELEASE}-backports repository:
+deb http://${BACKPORTSMIRROR} ${RELEASE}-backports main
+deb-src http://${BACKPORTSMIRROR} ${RELEASE}-backports main
+EOF
+ fi
+ fi
+ fi
+}
+# }}}
+
# set up kernel-img.conf {{{
kernelimg_conf() {
if ! [ -r /etc/kernel-img.conf ] ; then
}
# }}}
-# install kernel packages {{{
-kernel() {
+# check if the specified Debian package exists
+package_exists() {
+ output=$(apt-cache show "$1" 2>/dev/null)
+ [ -n "$output" ]
+ return $?
+}
+
+
+# determine the kernel version postfix
+get_kernel_version() {
# do not override $KERNEL if set via config file
- if [ -z "$KERNEL" ] ; then
- if [ "$ARCH" = 'i386' ] ; then
- KERNEL='2.6-686'
- elif [ "$ARCH" = 'amd64' ] ; then
- KERNEL='2.6-amd64'
- fi
+ if [ -n "$KERNEL" ] ; then
+ echo "$KERNEL"
+ return 0
fi
- if [ -n "$KERNEL" ] ; then
- $APTUPDATE
+ case $ARCH in
+ i386) KARCH=686 ;;
+ amd64) KARCH=amd64 ;;
+ *)
+ echo "Only i386 and amd64 are currently supported" >&2
+ return 1
+ esac
+
+ for KPREFIX in "" "2.6-" ; do # iterate through the kernel prefixes,
+ # currently "" and "2.6-"
+ if package_exists linux-image-${KPREFIX}${KARCH} ; then
+ echo ${KPREFIX}${KARCH}
+ return 0
+ fi
+
+ done
+}
+
+# install kernel packages {{{
+kernel() {
+ $APTUPDATE
+ KVER=$(get_kernel_version)
+ if [ -n "$KVER" ] ; then
# note: install busybox to be able to debug initramfs
- KERNELPACKAGES="linux-image-$KERNEL linux-headers-$KERNEL busybox firmware-linux"
+ KERNELPACKAGES="linux-image-$KVER linux-headers-$KVER busybox firmware-linux-free firmware-linux"
DEBIAN_FRONTEND=$DEBIAN_FRONTEND $APTINSTALL $KERNELPACKAGES
+ else
+ echo "Warning: Could not find a kernel for your system. Your system won't be able to boot itself!"
fi
}
# }}}
# always execute install_policy_rcd
install_policy_rcd
- for i in chrootmirror grmlrepos kernelimg_conf \
+ for i in chrootmirror grmlrepos backportrepos kernelimg_conf \
kernel packages extrapackages reconfigure hosts interfaces \
timezone fstab hostname initrd grub_install passwords \
custom_scripts upgrade_system remove_apt_cache services \