Make sure the passwd command succeeds
[grml-debootstrap.git] / chroot-script
old mode 100644 (file)
new mode 100755 (executable)
index 6f128c1..cea2f7d
@@ -4,7 +4,7 @@
 # Authors:       grml-team (grml.org), (c) Michael Prokop <mika@grml.org>
 # Bug-Reports:   see http://grml.org/bugs/
 # License:       This file is licensed under the GPL v2.
-# Latest change: Mon Apr 23 00:22:33 CEST 2007 [mika]
+# Latest change: Son Dez 16 16:30:31 CET 2007 [mika]
 ################################################################################
 
 set -e # exit on any error
@@ -37,7 +37,7 @@ stage() {
      echo "$2" > "$STAGES/$1"
      return 0
   elif grep -q done "$STAGES/$1" 2>/dev/null ; then
-     echo "Notice: stage $1 has been executed already, skipping execution therefore.">&2
+     echo "[*] Notice: stage $1 has been executed already, skipping execution therefore.">&2
      return 1
   fi
 }
@@ -45,8 +45,13 @@ stage() {
 
 # define chroot mirror {{{
 chrootmirror() {
-  if [ -n "$CHROOTMIRROR" ] ; then
-     echo "deb $CHROOTMIRROR $RELEASE main contrib non-free" > /etc/apt/sources.list
+  if [ -n "$ISO" ] ; then
+     echo "deb $ISO $RELEASE main contrib" > /etc/apt/sources.list
+     [ -n "$CHROOTMIRROR" ] && echo "deb $CHROOTMIRROR $RELEASE main contrib non-free" >> /etc/apt/sources.list
+  else
+    if [ -n "$CHROOTMIRROR" ] ; then
+       echo "deb $CHROOTMIRROR $RELEASE main contrib non-free" > /etc/apt/sources.list
+    fi
   fi
 }
 # }}}
@@ -65,6 +70,26 @@ grmlrepos() {
   deb-src http://deb.grml.org/ grml-testing main
 
 EOF
+     # 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]
+
+     # make sure we install packages from grml's pool only if not available
+     # from Debian!
+     if ! grep -q grml /etc/apt/preferences 2>/dev/null ; then
+        cat >> /etc/apt/preferences << EOF
+// debian pool (default):
+Package: *
+Pin: release o=Debian
+Pin-Priority: 996
+
+// main grml-repository:
+Package: *
+Pin: origin deb.grml.org
+Pin-Priority: 991
+EOF
+     fi
   fi
 }
 # }}}
@@ -233,6 +258,7 @@ passwords() {
      echo "Setting password for user root:"
      set +e # do not exit if passwd returns error due to missmatching passwords
      passwd
+     until passwd; do echo "Please try again to set the password:" ; done
      echo ""
      set -e # restore default behaviour again
   fi
@@ -250,13 +276,20 @@ hosts() {
 
 # set up /etc/network/interfaces {{{
 interfaces() {
-  if ! [ -f /etc/network/interfaces ] ; then
+  touch /etc/network/interfaces
+  # make sure we add the entries only once
+  if ! grep -q eth0 /etc/network/interfaces ; then
      echo "Setting up /etc/network/interfaces"
      cat >> /etc/network/interfaces << EOF
+
+# loopback device:
 iface lo inet loopback
-iface eth0 inet dhcp
 auto lo
-auto eth0
+
+# eth0:
+# iface eth0 inet dhcp
+# auto eth0
+
 EOF
   fi
 }
@@ -371,7 +404,9 @@ grub() {
 # make sure we don't have any running processes left {{{
 services() {
   for service in ssh mdadm mdadm-raid ; do
-      [ -x "/etc/init.d/$service" ] && "/etc/init.d/$service" stop
+    if [ -x /etc/init.d/"$service" ] ; then
+       /etc/init.d/"$service" stop || /bin/true
+    fi
   done
 }
 # }}}