echo " Executing stage ${1}"
return 0
}
+
+askpass() {
+ # read -s emulation for dash. result is in $resp.
+ set -o noglob
+ stty -echo
+ read resp
+ stty echo
+ set +o noglob
+}
# }}}
# define chroot mirror {{{
if [ -n "$ISO" ] ; then
echo "deb $ISO $RELEASE $COMPONENTS" > /etc/apt/sources.list
- [ -n "$MIRROR" ] && echo "deb $MIRROR $RELEASE $COMPONENTS" >> /etc/apt/sources.list || /bin/true
+ [ -n "$MIRROR" ] && echo "deb $MIRROR $RELEASE $COMPONENTS" >> /etc/apt/sources.list || true
else
if [ -n "$MIRROR" ] ; then
echo "deb $MIRROR $RELEASE $COMPONENTS" > /etc/apt/sources.list
grmlrepos() {
if [ -n "$GRMLREPOS" ] ; then
# user might have provided their own apt sources.list
- if ! grep -q grml /etc/apt/sources.list 2>/dev/null ; then
- cat >> /etc/apt/sources.list << EOF
+ if ! grep -q grml /etc/apt/sources.list.d/grml.list 2>/dev/null ; then
+ cat >> /etc/apt/sources.list.d/grml.list << EOF
# grml: stable repository:
deb http://deb.grml.org/ grml-stable main
EOF
fi
- # make sure we have the keys available for aptitude
- gpg --keyserver subkeys.pgp.net --recv-keys F61E2E7CECDEA787
- gpg --export F61E2E7CECDEA787 | apt-key add - || /bin/true # not yet sure
- # why it's necessary, sometimes we get an error even though it works [mika]
+ if apt-get update ; then
+ apt-get -y --allow-unauthenticated install grml-debian-keyring
+ apt-get update
+ else
+ # make sure we have the keys available for aptitude
+ gpg --keyserver subkeys.pgp.net --recv-keys F61E2E7CECDEA787
+ gpg --export F61E2E7CECDEA787 | apt-key add - || true # not yet sure
+ # why it's necessary, sometimes we get an error even though it works [mika]
+ fi
# make sure we install packages from grml's pool only if not available
# from Debian!
}
# }}}
+# remove now useless apt cache {{{
+remove_apt_cache() {
+ if [ "$RM_APTCACHE" = 'yes' ] ; then
+ echo "Cleaning apt cache."
+ apt-get clean
+ else
+ echo "Not cleaning apt cache as \$RM_APTCACHE is unset."
+ fi
+}
+# }}}
+
# install additional packages {{{
packages() {
# Pre-seed the debconf database with answers. Each question will be marked
echo "Setting password for user root:"
while [ "$a" != "$b" ] ; do
echo -n "Enter new UNIX password for user root: "
- read -s a
+ askpass
+ a="$resp"
+ unset resp
echo
echo -n "Retype new UNIX password for user root: "
- read -s b
+ askpass
+ b="$resp"
+ unset resp
echo
if [ "$a" != "$b" ] ; then
echo "Sorry, passwords do not match. Retry."
# finally install grub
if [ -x /usr/sbin/update-grub ] ; then
UPDATEGRUB='/usr/sbin/update-grub'
- else
+ elif [ -x /sbin/update-grub ] ; then
UPDATEGRUB='/sbin/update-grub'
+ else
+ echo "Error: update-grub not available, can not execute it."
+ return 1
fi
# grub2:
services() {
for service in ssh mdadm mdadm-raid ; do
if [ -x /etc/init.d/"$service" ] ; then
- /etc/init.d/"$service" stop || /bin/true
+ /etc/init.d/"$service" stop || true
fi
done
}
# }}}
-# unmount all filesystems in chroot, make sure nothing is left {{{
+# unmount /proc and make sure nothing is left {{{
finalize() {
# make sure we don't leave any sensible data
rm -f /etc/debootstrap/variables
+
[ -n "$POLICYRCD" ] && rm -f /usr/sbin/policy-rc.d
- umount -a 1>/dev/null 2>/dev/null || true
- umount /proc 1>/dev/null 2>/dev/null || true
- umount /proc 1>/dev/null 2>/dev/null || true
- umount -a 1>/dev/null 2>/dev/null || true
+
+ umount /proc >/dev/null 2>/dev/null || true
}
# }}}
install_policy_rcd
for i in chrootmirror grmlrepos kernelimg_conf \
- kernel packages extrapackages reconfigure hosts interfaces \
- timezone fstab hostname initrd grub_config passwords custom_scripts \
- services ; do
+ kernel packages extrapackages reconfigure hosts interfaces \
+ timezone fstab hostname initrd grub_config passwords \
+ custom_scripts remove_apt_cache services ; do
if stage $i ; then
$i && stage $i done || exit 1
fi