Rework: merge in grml-saveconfig scripts + docs package, replace package grml-saveconfig
authorMichael Prokop <mika@grml.org>
Mon, 17 Aug 2009 01:21:01 +0000 (03:21 +0200)
committerMichael Prokop <mika@grml.org>
Mon, 17 Aug 2009 01:33:24 +0000 (03:33 +0200)
16 files changed:
bin/mkpersistenthome [new file with mode: 0755]
bin/restore-config [new file with mode: 0755]
bin/save-config [new file with mode: 0755]
debian/changelog
debian/control
debian/rules
doc/Makefile
doc/grml-autoconfig.1.txt [new file with mode: 0644]
doc/grml-autoconfig.8.txt [new file with mode: 0644]
doc/grml-autoconfig.txt [deleted file]
doc/grml-bootsplash.1.txt [new file with mode: 0644]
doc/mkpersistenthome.1.txt [new file with mode: 0644]
doc/restore-config.1.txt [new file with mode: 0644]
doc/save-config.1.txt [new file with mode: 0644]
man/grml-autoconfig.8 [deleted file]
man/grml-bootsplash.1 [deleted file]

diff --git a/bin/mkpersistenthome b/bin/mkpersistenthome
new file mode 100755 (executable)
index 0000000..fddad80
--- /dev/null
@@ -0,0 +1,173 @@
+#!/bin/bash
+# Filename:      mkpersistenthome
+# Purpose:       mkpersistenthome - create grml home directory image
+# Authors:       grml-team (grml.org), (c) Klaus Knopper Feb 2003, (c) Michael Prokop <mika@grml.org>
+# Bug-Reports:   see http://grml.org/bugs/
+# License:       This file is licensed under the GPL v2.
+# Latest change: Fre Mär 16 19:59:53 CET 2007 [mika]
+################################################################################
+
+export PATH="/bin:/sbin:/usr/bin:/usr/sbin"
+
+if [ "`id -u`" != "0" ] ; then
+   exec sudo "$0" "$@"
+else
+   export HOME='/home/grml'
+fi
+
+TMP=$(mktemp)
+DIRECTORY=$(mktemp -d /mnt/XXXXXX)
+DIALOG="dialog"
+
+bailout(){
+  [ -n "$DIRECTORY" ] && umount "$DIRECTORY" 2>/dev/null
+  [ -d "$DIRECTORY" ] && rmdir "$DIRECTORY"
+  rm -f "$TMP" "$TMP.done" "$TMP.err"
+  exit 0
+}
+
+trap bailout 1 2 3 15
+
+HOMEKB="$(du -sk $HOME 2>/dev/null | awk '{print $1}')"
+
+# Language-dependent messages
+case "$LANGUAGE" in
+de*|at*|ch*)
+TITLE1="Permanentes grml Heimverzeichnis anlegen"
+MESSAGE1="Dieses Skript richtet ein permanentes Heimverzeichnis für den User \"grml\" auf Ihrer Festplatte oder einem Wechselmedium wie Memorystick, Compactflash oder ZIP-Medium ein. Dadurch ist es möglich, Daten und persönliche Konfigurationen über einen Reboot hinaus zu speichern, sofern sie im persönlichen Heimverzeichnis des Benutzers abgelegt werden. Per Bootoption, z.B. \"home=/dev/sda1\" für die erste Partition einer SCSI-Festplatte oder eines USB-Memorystick, können Sie beim Systemstart das permanente Heimverzeichnis wieder aktivieren. Die Bootoption \"home=scan\" durchsucht automatisch alle Partitionen und erkannten Speichermedien nach einem persistenten grml-Heimverzeichnis.
+
+Möchten Sie das Heimverzeichnis des Benutzers \"grml\" permanent speichern?"
+MESSAGE2="Bitte wählen Sie die Partition, auf der Sie das Heimverzeichnis (oder ein Image davon) anlegen möchten."
+MESSAGE3="Möchten Sie die KOMPLETTE Partition verwenden und mit den Linux-Dateisystem formatieren?
+
+NEIN=Image-Datei auf bestehendem Dateisystem anlegen."
+SUCCESS="FERTIG!
+
+Die grml-Konfiguration wurde erfolgreich gespeichert. Ihre Konfigurationsdateien werden beim nächsten grml-Bootvorgang in die Ramdisk restauriert, wenn Sie im Bootscreen \"grml floppyconfig\" (Diskette) bzw. \"grml myconfig=/mnt/verzeichnisname\" angeben."
+ERROR="Leider konnte die grml-Konfiguration NICHT gespeichert werden:"
+MESSAGE_NO_PARTS="Keine passende Partition gefunden. Zur Erinnerung: NTFS-Partitonen können mit Linux nicht beschrieben werden."
+;;
+*)
+TITLE1="Create persistent grml home directory"
+MESSAGE1="This script creates a persistent home directory for the \"grml\" account on your harddisk or on a changeable medium like memory stick, compact flash or zip media. Using this features makes it possible to store personal data and config files permanently over a reboot, if they are stored inside the home directory of the \"grml\" user. The boot option \"home=/dev/sda1\", for the first partition of a SCSI harddisk or USB memory stick as example, activates the persistent home directory at system startup. You can also let grml scan all autodetected storage devices using the boot option \"home=scan\".
+
+Do you want to create a persistent home directory for the \"grml\" user?"
+
+MESSAGE2="Please select partition for creating persistent homedir (or image):"
+MESSAGE3="Do you want to use the ENTIRE Partition, and would like to format it with the Linux filesystem?
+
+NO=Just create an image in the existing filesystem."
+SUCCESS="SUCCESS!
+
+Creation of grml configuration floppy was successful. Your configuration files will be reinstalled to the ramdisk on next grml boot if you specify \"grml floppyconf\" (floppy disk), or \"grml myconfig=/mnt/directoryname\" at the boot prompt."
+ERROR="The grml configuration could NOT be saved:"
+MESSAGE_NO_PARTS="No suitable partitions could be found. Remember that NTFS-Partitions are not writable with linux."
+;;
+esac
+
+$DIALOG --cr-wrap --clear --title "$TITLE1" --yesno "$MESSAGE1" 18 75 || bailout
+
+# Partition selector
+PARTITIONS=""
+count=0
+for i in `fdisk -l | grep -v NTFS | awk '/^\/dev\// { print $1 }'` ; do
+  PARTITIONS="$PARTITIONS ${i} [Disk/Partition] off"
+  echo "PARTITIONS=$PARTITIONS ${i} [Disk/Partition] off" >> /tmp/part
+done
+[ -z "$PARTITIONS" ] && { $DIALOG --cr-wrap --clear --title "$TITLE1" --msgbox "$ERROR $MESSAGE_NO_PARTS" 10 75; bailout; }
+
+PARTITION=""
+while [ -z "$PARTITION" -o -z "$DIRECTORY" -o ! -e "$DIRECTORY" ]; do
+  rm -f "$TMP"
+  $DIALOG --cr-wrap --clear --title "$TITLE1" --radiolist "$MESSAGE2" 18 75 9 $PARTITIONS 2>"$TMP" || bailout
+  PARTITION="$(<$TMP)"
+done
+
+DEVICE=""
+if $DIALOG --cr-wrap --clear --title "$TITLE1" --defaultno --yesno "$MESSAGE3" 15 75; then
+  DEVICE="$PARTITION"
+  FILEINFO="$PARTITION"
+else
+  FILEINFO="grml.img on $PARTITION"
+  DEVICE="$DIRECTORY/grml.img"
+  mount | grep -q "$DIRECTORY" || mount -r $PARTITION "$DIRECTORY" 2>"$TMP.err"
+  [ "$?" != "0" ] && { $DIALOG --cr-wrap --title "$TITLE1" --msgbox "$ERROR `cat $TMP.err`" 10 75; bailout; }
+  mount | grep -q "$DIRECTORY.*ntfs" && { $DIALOG --cr-wrap --title "$TITLE1" --msgbox "$ERROR NTFS" 10 75; bailout; }
+  mount -o remount,rw $PARTITION "$DIRECTORY"
+fi
+
+# More language-dependent messages
+case "$LANGUAGE" in
+ de*|at*|ch*)
+  MESSAGE4="Sind Sie ABSOLUT SICHER, dass Sie die Partition $PARTITION formatieren möchten? ALLE DATEN WERDEN DADURCH GELÖSCHT!"
+  MESSAGE5="Möchten Sie Ihr Heimverzeichnis mit AES256 (=Advanced Encryption Standard 256bit, s.a. http://csrc.nist.gov/encryption/aes/) verschlüsselt speichern? Hierzu ist die Eingabe eines sehr langen Passwortes beim Einrichten sowie beim Einbinden des Verzeichnisses beim Systemstart erforderlich. NEIN=unverschlüsselt"
+  MESSAGE6="Bitte geben Sie die gewünschte Größe Ihres persistenten Heimverzeichnisses in MB an (aktuell belegt: $HOMEKB Kilobyte, verfügbar:"
+  MESSAGE7="Formatiere $FILEINFO mit dem ext2 Dateisystem und kopiere Daten..."
+  MESSAGE8="Lege Datenbereich für Linux an..."
+  SUCCESS="$FILEINFO wurde erfolgreich mit dem Linux ext2 Dateisystem formatiert, und Ihre Heimverzeichnis-Daten wurden darauf transferiert.
+
+Sie können jetzt Ihren Computer neu starten, und beim grml boot:-Prompt durch Eingabe von \"grml home=$PARTITION\" oder \"grml home=scan\" Ihr permanentes Heimverzeichnis aktivieren. Falls Sie außerdem (mit dem save-config Skript) die Systemeinstellungen gesichert haben, können Sie diese Option mit der Angabe von \"myconf=$PARTITION\" kombinieren."
+ ;;
+ *)
+  MESSAGE4="Are you positively SURE that you want to format partition $PARTITION? ALL DATA WILL BE LOST!"
+  MESSAGE5="Do you want to save your home directory encrypted with AES256 (Advanced Encryption Standard, see http://csrc.nist.gov/encryption/aes/)? If yes, you will have to specify a very long password at homedir creation and boot time."
+  MESSAGE6="Please enter the desired size of your persistent homedir in MB (currently used: $HOMEKB kB, available:"
+  MESSAGE7="Formatting $FILEINFO with ext2 filesystem and copying data..."
+  MESSAGE8="Preparing for Linux filesystem..."
+  SUCCESS="$FILEINFO has been succeessfully formatted with the Linux ext2 filesystem, and your home directory has been transferred to it.
+
+You may now reboot your computer and type \"grml home=$PARTITION\" or \"grml home=scan\" at the grml boot: prompt to take advantage of your new persistent home directory. If you have also saved the system configuration (using the save-config script), you can use this in combination with \"myconf=$PARTITION\"."
+ ;;
+esac
+
+gauge(){
+  rm -f "$TMP.done"
+  status=0
+  while [ ! -e "$TMP.done" ]; do
+    echo "$status" ; status="`expr \( 100 - $status \) / 4 + $status`"; sleep 2;
+  done | $DIALOG --title "$TITLE1" --gauge "$1" 8 75 0
+}
+
+# Stop status bar
+killgauge(){
+  touch "$TMP.done" ; wait ; rm -f "$TMP.done"
+}
+
+if [ "$DEVICE" = "$PARTITION" ]; then
+  $DIALOG --cr-wrap --clear --title "$TITLE1" --defaultno --yesno "$MESSAGE4" 6 75 || bailout
+else
+  AMOUNT=0
+  AVAIL="$(df -m $DIRECTORY/. | awk '/^\/dev\//{print $4}')"
+
+  until [ "$AMOUNT" -ge 1 -a "$AMOUNT" -le "$AVAIL" ] 2>/dev/null; do
+    $DIALOG --cr-wrap --clear --title "$TITLE1" --inputbox "$MESSAGE6 $AVAIL MB)" 10 62 "30" 2>"$TMP" || bailout
+    AMOUNT="$(<$TMP)"
+  done
+
+  gauge "$MESSAGE8" &
+  dd if=/dev/urandom of="$DEVICE" bs=1M count="$AMOUNT" 1>/dev/null || { killgauge; sleep 2; bailout; }
+  killgauge
+fi
+
+# Normal loopback file or partition
+gauge "$MESSAGE7" &
+umount "$DEVICE" 2>/dev/null
+
+# create filesystem
+mke2fs -F -m0 "$DEVICE" 1>/dev/null 2>"$TMP.err" || { killgauge; $DIALOG --cr-wrap --title "$TITLE1" --msgbox "$ERROR `cat $TMP.err`" 10 75; bailout; }
+
+# mount for synch
+LOOPOPT=""
+[ -f "$DEVICE" ] && LOOPOPT="-o loop"
+mkdir -p /tmp/grmlhome
+mount -t ext2 $LOOPOPT "$DEVICE" /tmp/grmlhome 2>"$TMP.err" && rsync -Ha "$HOME/" /tmp/grmlhome 2>"$TMP.err" || { killgauge; umount /tmp/grmlhome 2>/dev/null; $DIALOG --cr-wrap --title "$TITLE1" --msgbox "$ERROR `cat $TMP.err`" 10 75; bailout; }
+
+umount /tmp/grmlhome
+umount "$DIRECTORY" 2>/dev/null
+killgauge
+
+$DIALOG --cr-wrap --title "$TITLE1" --msgbox "$SUCCESS" 17 65
+
+bailout
+
+## END OF FILE #################################################################
diff --git a/bin/restore-config b/bin/restore-config
new file mode 100755 (executable)
index 0000000..88fd978
--- /dev/null
@@ -0,0 +1,175 @@
+#!/bin/zsh
+# Filename:      restore-config
+# Purpose:       generate grml configuration archive and store it anywhere
+# 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: Son Mai 13 11:12:38 CEST 2007 [mika]
+################################################################################
+
+# some zsh-stuff {{{
+  autoload colors ; colors
+  [ -r /etc/grml/sh-lib ] && . /etc/grml/sh-lib
+# }}}
+
+# set variables  {{{
+  LANG=C
+  LC_ALL=C
+  PROGRAMNAME=${0##*/}
+  TMPDIR=/tmp
+
+# functions {{{
+debug(){
+  if [[ $DEBUG -gt 0 ]] ; then
+    echo "debug: $*"
+  fi
+# setopt xtrace
+# set -x
+}
+
+bailout(){
+  rm -f "$TMP_FILELIST"
+}
+
+trap bailout 1 2 3 15
+# }}}
+
+# usage information {{{
+usage()
+{
+  print 1>&2 "
+$bg[black]$fg[green]${boldcolor}${PROGRAMNAME} - restore configuration of grml system${reset_color}
+
+$bg[black]$fg[blue]${boldcolor}Usage:${reset_color}
+  $PROGRAMNAME [-target_options] <configuration_file>
+
+$bg[black]$fg[blue]${boldcolor}Target options:${reset_color}
+  -home                         extract hidden files from \$HOME (\$HOME/.*)
+  -grmlhome                     store hidden files from \$HOME (\$HOME/.*) of user grml [use as user root]
+  -etc                          extract modified files from /etc
+  -configdir                    extract \$HOME/config
+
+  Default: restore/extract complete archive.
+
+  Notice: it is also possible to use environment variables:
+          \$RESTORE_HOME, \$RESTORE_ETC, \$RESTORE_CONFIGDIR and \$RESTORE_ALL
+
+$bg[black]$fg[blue]${boldcolor}Usage examples:${reset_color}
+  $PROGRAMNAME -home foo_bar_config.tbz  => restore configuration from file foo_bar_config.tbz
+  $PROGRAMNAME config.tbz                => restore configuration from file config.tbz
+
+More information on restore-config can be found in the manual page: man restore-config
+
+See also: save-config(1), bootoptions: myconfig=/dev/ice, extract=PATH,
+          netconfig=server.tld/path/to/config.tbz
+
+Report bugs, send wishes and feedback to the grml team:
+http://grml.org/bugs/ - contact (at) grml.org
+"
+}
+# }}}
+
+
+# extract configuration file {{{
+restore_all(){
+  echo "Trying to extract $FILENAME"
+  ( cd / && unp $FILENAME )
+}
+
+restore_home(){
+  echo "Trying to extract $FILENAME in $HOME"
+  ( cd $HOME && unp $FILENAME -- -x $HOME )
+}
+
+restore_grmlhome(){
+  echo "Trying to extract $FILENAME in /home/grml"
+  ( cd /home/grml/ && unp $FILENAME -- -x /home/grml )
+}
+
+restore_etc(){
+  echo "Trying to extract $FILENAME in /etc"
+  ( cd /etc && unp $FILENAME -- -x /etc )
+}
+
+restore_config(){
+  echo "Trying to extract $FILENAME in $HOME/config"
+  ( cd $HOME && unp $FILENAME -- -x $HOME/config )
+}
+# }}}
+
+
+# commandline parsing {{{
+parse_options()
+{
+   zparseopts -K -- help=o_help file:=o_file home=o_home etc=o_etc \
+                    configdir=o_configdir all=o_all
+
+   if [[ "$#" == 0 || "$o_help" != "" || "$1" == '-h' || "$1" == '--help' ]]; then
+      usage ; exit
+   fi
+
+   if [[ "$1" == "" ]]; then
+     echo "Error: No filename provided." ; exit 1
+   else
+     eval FILENAME=\${$#}
+     FILENAME=`readlink -f $FILENAME`
+   fi
+
+   if [[ "$o_home" != "" ]]; then
+      echo "debug: home is set"
+      RESTORE_HOME="yes"
+   fi
+
+   if [[ "$o_grmlhome" != "" ]]; then
+      echo "debug: grmlhome is set"
+      RESTORE_GRMLHOME="yes"
+   fi
+
+   if [[ "$o_etc" != "" ]]; then
+      echo "debug: etc is set"
+      RESTORE_ETC="yes"
+   fi
+
+   if [[ "$o_configdir" != "" ]]; then
+      echo "debug: configdir is set"
+      RESTORE_CONFIGDIR="yes"
+   fi
+
+}
+parse_options $*
+# }}}
+
+runit(){
+   if [[ $RESTORE_HOME == "yes" ]]; then
+     debug "running restore_home"
+     restore_home
+     RESTORE_SET=1
+   fi
+   if [[ $RESTORE_GRMLHOME == "yes" ]]; then
+     debug "running restore_grmlhome"
+     restore_grmlhome
+     RESTORE_SET=1
+   fi
+   if [[ $RESTORE_ETC == "yes" ]] ; then
+     debug "running restore_etc"
+     restore_etc
+     RESTORE_SET=1
+   fi
+   if [[ $RESTORE_CONFIGDIR == "yes" ]] ; then
+     debug "running restore_configdir"
+     restore_config
+     RESTORE_SET=1
+   fi
+   debug "FILENAME = $FILENAME"
+   if [ -z $RESTORE_SET ] ; then
+     debug "running restore all"
+     restore_all
+   fi
+}
+
+# now run it
+  runit
+  bailout
+
+## END OF FILE #################################################################
+# vim:foldmethod=marker
diff --git a/bin/save-config b/bin/save-config
new file mode 100755 (executable)
index 0000000..e2f9854
--- /dev/null
@@ -0,0 +1,248 @@
+#!/bin/zsh
+# Filename:      save-config
+# Purpose:       generate grml configuration archive and store it anywhere
+# 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: Son Mai 13 11:46:44 CEST 2007 [mika]
+################################################################################
+
+# some zsh-stuff {{{
+  autoload colors ; colors
+  setopt nonomatch
+  . /etc/grml/sh-lib
+  . /etc/grml/script-functions
+# }}}
+
+# set variables  {{{
+
+  # old linuxrc version:
+  [ -d /cdrom ]      && OLDLAYOUT=1 || OLDLAYOUT=''
+  # new initramfs layout:
+  [ -d /live/image ] && NEWLAYOUT=1 || NEWLAYOUT=''
+
+  LANG=C
+  LC_ALL=C
+  [[ $UID != 0 ]] && runas='sudo' # important for /etc
+
+  check4progs mutt || echo "Warning, mutt not available for mail handling.">&2
+  check4progs findchanged tar || { echo "Sorry, can't continue. Exiting.">&2 ; exit 1 }
+
+  CONFIG=/etc/grml/saveconfig
+  [ -r "$CONFIG" ] && . $CONFIG
+
+  PROGRAMNAME=${0##*/}
+  HOSTNAME=$(hostname)
+  DATE=$(date)
+  GRML_VERSION=$(awk '{print $1}' /etc/grml_version 2>/dev/null || print "not a grml system")
+  KERNEL=$(uname -a)
+
+  TMPDIR=/tmp
+  MAILFILE="$TMPDIR/mail.txt"
+
+  [ -n "$FILELIST" ] || FILELIST=$(mktemp $TMPDIR/filelist.XXXXXX)
+
+# functions {{{
+debug(){
+  if [[ $DEBUG -gt 0 ]] ; then
+    echo "debug: $*"
+  fi
+# setopt xtrace
+# set -x
+}
+
+bailout(){
+  rm -f "$FILELIST"
+  rm -f "$MAILFILE"
+}
+
+trap bailout 1 2 3 15
+# }}}
+
+# usage information {{{
+usage()
+{
+  print 1>&2 "
+$bg[black]$fg[green]${boldcolor}${PROGRAMNAME} - save configuration of grml system${reset_color}
+
+$bg[black]$fg[blue]${boldcolor}Usage:${reset_color}
+  $PROGRAMNAME [-target_options] -{all,home,etc,configdir}
+
+$bg[black]$fg[blue]${boldcolor}Target options:${reset_color}
+  -ssh user@host:/path/to/file  copy configuration via ssh/scp to remote host
+  -mail <recipient>             send configuration via mail
+  -file foo_bar_config.tbz      save configuration in specified file
+
+  Notice: if no option is specified the default is assumed:
+          create file config.tbz in current directory
+
+$bg[black]$fg[blue]${boldcolor}Files-to-store options:${reset_color}
+  -home                         store hidden files from \$HOME (\$HOME/.*)
+  -grmlhome                     store hidden files from \$HOME (\$HOME/.*) of user grml [use as user root]
+  -etc                          store modified files from /etc
+  -configdir                    store \$HOME/config
+  -all                          store all configuration files (:= -home, -configdir and -etc)
+
+  Notice: it is also possible to use environment variables:
+          \$SAVE_HOME, \$SAVE_GRMLHOME, \$SAVE_ETC, \$SAVE_CONFIGDIR and \$SAVE_ALL
+
+$bg[black]$fg[blue]${boldcolor}Usage examples:${reset_color}
+  $PROGRAMNAME -all                                  => store all configuration files in config.tbz in current dir
+  $PROGRAMNAME -home -mail  devnull@grml.org         => store \$HOME/.* in config.tbz and send it via mail
+  $PROGRAMNAME -etc  -ssh   devnull@grml.org:/path/  => store /etc in config.tbz and scp it to specified host
+  $PROGRAMNAME -all  -file  foo.tbz                  => store all configuration files in foo.tbz
+  SAVE_ALL=yes $PROGRAMNAME -file /path/foo.tbz      => store all configuration files in /path/foo.tbz
+
+More information on save-config can be found in the manual page: man save-config
+
+See also: restore-config(1), bootoptions: myconfig=/dev/ice, extract=PATH,
+          netconfig=server.tld/path/to/config.tbz
+
+Report bugs, send wishes and feedback to the grml team:
+http://grml.org/bugs/ - contact (at) grml.org
+"
+}
+# }}}
+
+# what do we want to store? {{{
+save_home(){
+  debug "save home"
+  for i in $HOME/.* ; do findchanged "$i" /etc/skel/$(basename "$i"); done >> $FILELIST
+  debug "debug: $FILELIST"
+}
+
+save_grmlhome(){
+  debug "save grmlhome"
+  if [ -d /home/grml/ ] ; then
+     for i in /home/grml/.* ; do findchanged "$i" /etc/skel/$(basename "$i"); done >> $FILELIST
+  fi
+  debug "debug: $FILELIST"
+}
+
+save_etc(){
+  debug "save etc"
+  if [ -n "$NEWLAYOUT" ] ; then
+     $runas find /live/cow/etc | sed -e 's#/live/cow## ; /etc$/d' >> $FILELIST
+  else
+     $runas findchanged /etc /GRML/etc >> $FILELIST
+  fi
+}
+
+save_configdir(){
+  debug "save configdir"
+  if [ -d $HOME/config ] ; then
+     ls $HOME/config/*  >> $FILELIST  2>/dev/null
+     ls $HOME/config/.* >> $FILELIST 2>/dev/null
+  fi
+}
+
+# create configuration file {{{
+create_config(){
+  if ! [ -r "$FILELIST" ]; then
+     echo "Sorry, filelist $FILELIST could not be read." >&2
+     echo "Error when generating $FILENAME." >&2
+  else
+     # GNU tar sucks so much, really. Avoid the "file changed as we read it":
+     tar cf /dev/null /etc
+     # now really execute the according tar command:
+     BZIP2=-9 $runas tar -T - -cpPjf "$FILENAME" <"$FILELIST" && \
+     echo "Successfully stored configuration in file $FILENAME"   || \
+     echo "Error when generating $FILENAME." >&2
+  fi
+}
+# }}}
+
+# commandline parsing {{{
+parse_options()
+{
+   zparseopts -K -- help=o_help mail:=o_mail \
+                    file:=o_file home=o_home grmlhome=o_grmlhome etc=o_etc \
+                    configdir=o_configdir all=o_all ssh:=o_ssh
+
+   if [[ "$#" == 0 || "$o_help" != "" || "$1" == '-h' || "$1" == '--help' ]]; then
+      usage ; exit
+   fi
+
+   if [[ "$o_file" != "" ]]; then
+     FILENAME="$o_file[2]"
+   else
+     FILENAME="config.tbz"
+   fi
+
+   if [[ "$o_home" != "" ]]; then
+      debug "home is set"
+      SAVE_HOME="yes"
+   fi
+
+   if [[ "$o_grmlhome" != "" ]]; then
+      debug "grmlhome is set"
+      SAVE_GRMLHOME="yes"
+   fi
+
+   if [[ "$o_etc" != "" ]]; then
+      debug "etc is set"
+      SAVE_ETC="yes"
+   fi
+
+   if [[ "$o_configdir" != "" ]]; then
+      debug "configdir is set"
+      SAVE_CONFIGDIR="yes"
+   fi
+
+   if [[ "$o_all" != "" ]]; then
+      debug "home, grmlhome, etc and configdir are set"
+      SAVE_HOME="yes"
+      SAVE_GRMLHOME="yes"
+      SAVE_ETC="yes"
+      SAVE_CONFIGDIR="yes"
+   fi
+
+   if [[ "$o_ssh" != "" ]]; then
+      debug "scp $FILENAME $o_ssh[2]"
+      scp $FILENAME $o_ssh[2]
+   fi
+
+   if [[ "$o_mail" != "" ]]; then
+      check4progs mutt || { echo "Sorry, mutt not available for sending mail. Exiting.">&2 ; exit 1 }
+      recipient=$o_mail[2]
+      debug "send mail to $recipient"
+      echo "Created on $DATE on host $HOSTNAME running grml $GRML_VERSION" > $MAILFILE
+      mutt -s "configuration of $HOSTNAME ($DATE)" -a $FILENAME $recipient < $MAILFILE
+   fi
+}
+parse_options $*
+# }}}
+
+runit(){
+   if [[ $SAVE_HOME == "yes" ]]; then
+     debug "running save_home"
+     save_home
+     SETSAVE=1
+   fi
+   if [[ $SAVE_GRMLHOME == "yes" ]]; then
+     debug "running save_grmlhome"
+     save_grmlhome
+     SETSAVE=1
+   fi
+   if [[ $SAVE_ETC == "yes" ]] ; then
+     debug "running save_etc"
+     save_etc
+     SETSAVE=1
+   fi
+   if [[ $SAVE_CONFIGDIR == "yes" ]] ; then
+     debug "running save_configdir"
+     save_configdir
+     SETSAVE=1
+   fi
+   if [ -z $SETSAVE ] ; then
+     echo "Sorry, you did not select any configuration which should be saved. Exiting." ; exit 1
+   fi
+}
+
+# now run it
+  runit
+  create_config
+  bailout
+
+## END OF FILE #################################################################
+# vim:foldmethod=marker
index 935772a..b80127c 100644 (file)
@@ -18,8 +18,11 @@ grml-autoconfig (0.8.25) UNRELEASED; urgency=low
       we handle bootoptions in /proc/cmdline correctly as whole words
       and support matching begin and end of line as well.
   * Build-Depends-Indep on asciidoc, docbook-xsl and xsltproc.
       we handle bootoptions in /proc/cmdline correctly as whole words
       and support matching begin and end of line as well.
   * Build-Depends-Indep on asciidoc, docbook-xsl and xsltproc.
+  * Bump Standard Version to 3.8.3.
+  * Merge scripts and documention from grml-saveconfig.
+  * Provide separate documentation for each script.
 
 
- -- Michael Prokop <mika@grml.org>  Thu, 13 Aug 2009 01:54:52 +0200
+ -- Michael Prokop <mika@grml.org>  Mon, 17 Aug 2009 03:19:28 +0200
 
 grml-autoconfig (0.8.24) unstable; urgency=low
 
 
 grml-autoconfig (0.8.24) unstable; urgency=low
 
index cebb460..efb3ca9 100644 (file)
@@ -3,7 +3,7 @@ Section: grml
 Priority: optional
 Maintainer: Michael Prokop <mika@grml.org>
 Build-Depends: debhelper (>= 5)
 Priority: optional
 Maintainer: Michael Prokop <mika@grml.org>
 Build-Depends: debhelper (>= 5)
-Standards-Version: 3.8.2
+Standards-Version: 3.8.3
 Build-Depends-Indep: asciidoc, docbook-xsl, xsltproc
 Homepage: http://git.grml.org/?p=grml-autoconfig.git
 Vcs-git: git://git.grml.org/grml-autoconfig.git
 Build-Depends-Indep: asciidoc, docbook-xsl, xsltproc
 Homepage: http://git.grml.org/?p=grml-autoconfig.git
 Vcs-git: git://git.grml.org/grml-autoconfig.git
@@ -11,13 +11,20 @@ Vcs-Browser: http://git.grml.org/?p=grml-autoconfig.git
 
 Package: grml-autoconfig
 Architecture: all
 
 Package: grml-autoconfig
 Architecture: all
-Conflicts: grml-etc (<= 0.4-7)
+Conflicts: grml-etc (<= 0.4-7), grml-saveconfig
+Replaces: grml-saveconfig
 Depends: ${shlibs:Depends}, ${misc:Depends}, acpid | apmd, laptop-detect, hotplug | hotplug-light | udev (>= 0.080-1), zsh, gpm, syslog-ng | system-log-daemon, console-tools, console-terminus, pump, grml-rebuildfstab (>= 0.3-1), grml-etc-core (>= 0.1-3), grml-scripts (>= 0.8-14), gawk, rungetty, rsync
 Recommends: acpi-support, hwinfo, alsa-utils, mdadm, powernowd, aumix, locales, grml2hd, grml-debootstrap (>= 0.7)
 Description: main bootup process of a grml system
  grml-autoconfig is the main part of the bootup process of the
 Depends: ${shlibs:Depends}, ${misc:Depends}, acpid | apmd, laptop-detect, hotplug | hotplug-light | udev (>= 0.080-1), zsh, gpm, syslog-ng | system-log-daemon, console-tools, console-terminus, pump, grml-rebuildfstab (>= 0.3-1), grml-etc-core (>= 0.1-3), grml-scripts (>= 0.8-14), gawk, rungetty, rsync
 Recommends: acpi-support, hwinfo, alsa-utils, mdadm, powernowd, aumix, locales, grml2hd, grml-debootstrap (>= 0.7)
 Description: main bootup process of a grml system
  grml-autoconfig is the main part of the bootup process of the
- grml system. This includes the hardware recognition system.
+ grml system. This includes the hardware recognition system and
+ several configuration options.
  .
  grml-autoconfig is also a script which is an interface to
  the configuration system (see /etc/grml/autoconfig) of
  the framework.
  .
  grml-autoconfig is also a script which is an interface to
  the configuration system (see /etc/grml/autoconfig) of
  the framework.
+ .
+ This package provides utilities and documentation for saving
+ and restoring configurations on grml system (like save-config,
+ restore-config and mkpersistenthome). Please check out the
+ provided documentation for further details.
index 1c592ca..c0ea3ef 100755 (executable)
@@ -11,7 +11,7 @@
 
 build: build-stamp
 
 
 build: build-stamp
 
-build-stamp: 
+build-stamp:
        dh_testdir
        cd doc && $(MAKE) && cd ..
 
        dh_testdir
        cd doc && $(MAKE) && cd ..
 
@@ -21,16 +21,15 @@ clean:
        dh_testdir
        dh_testroot
        rm -f build-stamp
        dh_testdir
        dh_testroot
        rm -f build-stamp
+       cd doc && $(MAKE) clean && cd ..
 
 
-
-       dh_clean 
+       dh_clean
 
 install: build
        dh_testdir
        dh_testroot
 
 install: build
        dh_testdir
        dh_testroot
-       dh_clean -k 
-       cd doc && $(MAKE) clean && cd ..
-       dh_installdirs etc/grml etc/init.d usr/sbin usr/bin
+       dh_clean -k
+       dh_installdirs etc/grml etc/init.d usr/sbin usr/bin usr/share/doc/grml-saveconfig
 
        # Add here commands to install the package into debian/grml-autoconfig.
        install -m 755 grml-autoconfig      debian/grml-autoconfig/etc/init.d/grml-autoconfig
 
        # Add here commands to install the package into debian/grml-autoconfig.
        install -m 755 grml-autoconfig      debian/grml-autoconfig/etc/init.d/grml-autoconfig
@@ -39,6 +38,11 @@ install: build
        install -m 644 language-functions   debian/grml-autoconfig/etc/grml/language-functions
        install -m 755 sbin/grml-autoconfig debian/grml-autoconfig/usr/sbin/grml-autoconfig
        install -m 755 grml-bootsplash      debian/grml-autoconfig/usr/bin/grml-bootsplash
        install -m 644 language-functions   debian/grml-autoconfig/etc/grml/language-functions
        install -m 755 sbin/grml-autoconfig debian/grml-autoconfig/usr/sbin/grml-autoconfig
        install -m 755 grml-bootsplash      debian/grml-autoconfig/usr/bin/grml-bootsplash
+
+       install -m 755 bin/mkpersistenthome debian/grml-autoconfig/usr/bin/mkpersistenthome
+       install -m 755 bin/restore-config debian/grml-autoconfig/usr/bin/restore-config
+       install -m 755 bin/save-config debian/grml-autoconfig/usr/bin/save-config
+
        # just as a "backup" solution:
        cp -a etc/* debian/grml-autoconfig/etc/
 
        # just as a "backup" solution:
        cp -a etc/* debian/grml-autoconfig/etc/
 
@@ -50,13 +54,18 @@ binary-arch: build install
 binary-indep: build install
        dh_testdir
        dh_testroot
 binary-indep: build install
        dh_testdir
        dh_testroot
-       dh_installchangelogs 
-       dh_installdocs
-       dh_installman man/grml-autoconfig.8 man/grml-bootsplash.1
-       dh_link
+       dh_installchangelogs
+       dh_installdocs doc/grml-autoconfig.1.html doc/grml-autoconfig.8.html \
+                       doc/grml-bootsplash.1.html doc/mkpersistenthome.1.html \
+                       doc/restore-config.1.html doc/save-config.1.html
+       dh_installman doc/grml-autoconfig.1.gz doc/grml-autoconfig.8.gz \
+                       doc/grml-bootsplash.1.gz doc/mkpersistenthome.1.gz \
+                       doc/restore-config.1.gz doc/save-config.1.gz
+       # backward compability:
+       dh_link /usr/share/doc/grml-autoconfig/grml-autoconfig.1.html /usr/share/doc/grml-saveconfig/grml-config.html
        dh_strip
        dh_compress
        dh_strip
        dh_compress
-       mkdir -p $(CURDIR)/debian/grml-autoconfig/usr/share/lintian/overrides/ 
+       mkdir -p $(CURDIR)/debian/grml-autoconfig/usr/share/lintian/overrides/
        cp -av debian/overrides $(CURDIR)/debian/grml-autoconfig/usr/share/lintian/overrides/grml-autoconfig
        dh_fixperms
        dh_installdeb
        cp -av debian/overrides $(CURDIR)/debian/grml-autoconfig/usr/share/lintian/overrides/grml-autoconfig
        dh_fixperms
        dh_installdeb
index 40881c0..30f5e3b 100644 (file)
@@ -9,12 +9,11 @@
        sed -i 's/\.sp//' `echo $^ | sed -e 's/.txt//'`
        gzip -f --best `echo $^ |sed -e 's/.txt//'`
 
        sed -i 's/\.sp//' `echo $^ | sed -e 's/.txt//'`
        gzip -f --best `echo $^ |sed -e 's/.txt//'`
 
-MANPAGES = grml-autoconfig
+MANPAGES = grml-autoconfig.1 grml-autoconfig.8 grml-bootsplash.1 mkpersistenthome.1 restore-config.1 save-config.1
 
 all: doc
 
 
 all: doc
 
-doc: doc_html
-# doc: doc_man doc_html
+doc: doc_man doc_html
 doc_html: $(addsuffix .html, $(MANPAGES))
 doc_man: $(addsuffix .gz, $(MANPAGES))
 
 doc_html: $(addsuffix .html, $(MANPAGES))
 doc_man: $(addsuffix .gz, $(MANPAGES))
 
diff --git a/doc/grml-autoconfig.1.txt b/doc/grml-autoconfig.1.txt
new file mode 100644 (file)
index 0000000..0cbac2f
--- /dev/null
@@ -0,0 +1,503 @@
+grml-autoconfig(1)
+==================
+
+Name
+----
+grml-autoconfig - main bootup process of a grml system
+
+Synopsis
+--------
+None - it is a framework. See grml-autoconfig(8) for information regarding
+the interface script.
+
+Introduction
+------------
+
+By using the config framework, it is possible to customize Grml's startup in a
+multitude of ways. It allows to:
+
+- execute one or more scripts on startup
+- install Debian packages from deb files on startup
+- unpack configuration on startup
+
+The combination of Debs, Configuration and Scripts is called DCS in Brml. DCS
+can be read from the Live Image itself, from an arbitrary file system on the
+local system which is marked with the volume label GRMLCFG, or from the file
+system pointed to by the myconfig boot parameter.
+
+The DCS handling is controlled by a number of boot parameters.
+
+The scripts save-config and restore-config can be used to create and handle
+files called 'grml configuration archive', abbreviated GCA. save-config stores
+the running configuration inside a GCA; restore-config is a script to restore a
+configuration from a GCA.
+
+[TIP]
+A GCA is a plain bzip2 compressed tar archive. All the files are generated
+starting from the root-directory '/' so it is easy to handle. You can generate
+configuration archives manually as well. save-config is just a frontend which
+should make it easier to use.
+
+The grml-autoconfig code has been re-worked in August 2009. This document
+handles both the behavior of Grml releases up to 2009.05  (see
+<<up-to-200905,section 'Behavior up to grml 2009.05'>>) and the current behavior
+(see <<current-versions,section 'Behavior in current Grml versions'>>). Great
+care has been taken to provide maximum backwards compatibility during the
+rewrite.
+
+[IMPORTANT]
+Starting with grml release 2009.05 its possible to use root persistency on grml.
+This means you can store your settings and reuse them on reboot, without having
+to deal with this config framework. Visit
+link:http://wiki.grml.org/doku.php?id=persistency for further information.
+
+[[up-to-200905]]
+Behavior up to grml 2009.05
+---------------------------
+
+This section applies to all Grml versions older than and including release 2009.05.
+
+Autoconfiguration
+~~~~~~~~~~~~~~~~~
+
+By default the booting process tries to mount a device labeled 'GRMLCFG'. This
+provides the possibility to restore a configuration (named config.tbz) and
+execute a script (named grml.sh) without the need to specify any bootparams. If
+you want to disable this feature please take a look at the 'noautoconfig'
+bootparam.
+
+Boot parameters
+~~~~~~~~~~~~~~~
+
+As you probably know you can adjust boot parameters on the bootprompt.  You want
+to set some boot parameters permanently? That's possible via adding a directory
+named 'bootparams' to the Grml-ISO which has to be located at the root-directory
+/bootparams/ (note: the directory is known as /live/image/bootparams/ on a
+_running_ grml system then). Place a textfile inside the directory containing
+the boot parameters which should be appended to default ones (this corresponds
+to booting without any special parameters). If you want to be able to boot from
+your Grml-CD you have to create a multisession CD. See the <<X7,usage
+scenarios>> for more details how to use it or consider booting from a USB device
+(checkout grml2usb).
+
+The following boot parameters are supported. Use them at the (isolinux)
+bootprompt as documented here.
+
+myconfig::
+
+   This parameter is for restoring configuration using the file config.tbz
+    on the specified device. Usage examples:
+
+  myconfig=/dev/sda1                        => use file config.tbz from usb-device
+  myconfig=/dev/fd0                         => use file config.tbz from floppy-disk
+  myconfig=/dev/sda1 file=config_foobar.tbz => use file config_foobar.tbz from usb-device
+
+home::
+
+    This parameter is for setting a specific partition as home directory.
+    Usage examples:
+
+  home=/dev/sda3    =>  use /dev/sda3 as the homepartition
+  home=scan         =>  scan through the available partitions and search
+                        for file grml.img
+
+partconf::
+
+    This parameter mounts the specified device in read-only mode and tries to
+    copy all files specified in /etc/grml/partconf to the Grml system. This
+    provides the possibility to use the configuration of a harddisk
+    installation. For example using the network configuration (which is
+    specified in /etc/network) is possible using this boot parameter. Usage
+    example:
+
+  partconf=/dev/sda2 => try to mount /dev/sda2 and copy files specified
+                        in /etc/grml/partconf to the booted Grml system
+
+netconfig::
+
+    Use this parameter to restore configuration using wget to download a
+    configuration file from specified destination. Usage example:
+
+  netconfig=server.tld/path/to/config.tbz  =>   restore configuration using wget to download file config.tbz
+
+extract::
+
+    Extract specific directories from configuration archive. Notice: This
+    bootparam is useful only with bootparams which are able to extract
+    configuration archives.
+
+  extract=/home/grml         => extract only /home/grml from archive
+  extract=/etc               => extract only /etc from archive
+  extract=/home/grml/config  => extract only $HOME/config from archive
+
+scripts::
+
+    This parameter executes a script located in the root-directory /scripts/ on
+    the Grml media/ISO (note: the directory is known as /live/image/scripts/ on
+    a _running_ Grml system then). Usage examples:
+
+  scripts               =>   run script [/live/image]/scripts/grml.sh
+  scripts=foobar.sh     =>   run script foobar.sh in [/live/image]/scripts/
+
+config::
+
+    This parameter restores a configuration using root-directory /config/ on the
+    Grml media/ISO (note: the directory is known as /live/image/config on a
+    _running_ Grml system then). Usage examples:
+
+  config                    =>   restore configuration using file config.tbz from directory [/live/image]/config/
+  config=config_foobar.tbz  =>   restore configuration using file config_foobar.tbz from directory [/live/image]/config/
+
+debs::
+
+    This parameter allows automatic installation of deb packages while booting.
+    The debian packages have to be located in the root-directory /debs/ on the
+    Grml media/ISO (note: the directory is known as /live/image/debs/ on a
+    _running_ Grml system then). Usage examples:
+
+  debs              =>   install all debian packages (suffix .deb) from directory [/live/image]/debs/
+  debs=01           =>   install all debian packages (suffix .deb) starting with 01 in the filename from directory [/live/image]/debs/
+
+
+noautoconfig::
+
+    Deactivate automounting. By default the command 'mount' tries to mount a
+    device with label 'GRMLCFG'. If you specify the noautoconfig bootparam the
+    automounting will be deactivated.
+
+  noautoconfig            => disables auto mounting of label 'GRMLCFG'
+
+[[current-versions]]
+Behavior in current Grml versions
+---------------------------------
+
+This section applies to all Grml versions newer than release 2009.05.
+
+The central concept of grml-autoconfig is the DCS directory which holds debs,
+configuration and scripts which are used during system startup.
+
+Determination of DCS directory
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The DCS directory defaults to the root directory of the GRML live image. If a
+file system labeled GRMLCFG is found, the DCS directory is the root directory of
+that file system. Alternatively, the myconfig boot parameter can be used to
+directly specify a device which is then taken as DCS directory
+(myconfig=/dev/sda1, for example).
+
+Without any additional boot parameters, the GCA at DCSDIR/config.tbz is
+automatically unpacked and DCSDIR/scrips/grml.sh is automaitcally executed on
+system startup. The 'noautoconfig' boot parameter disables this automatic
+behavior.
+
+Boot Parameters
+~~~~~~~~~~~~~~~
+
+The following boot parameters are supported. Use them at the (isolinux)
+bootprompt as documented here.
+
+myconfig::
+
+   This parameter directly sets DCSDIR to the root directory of the specified
+   device. Usage examples:
+
+  myconfig=/dev/sda1                        => read DCS from usb-device
+  myconfig=/dev/fd0                         => read DCS from floppy-disk
+
+home::
+
+    This parameter is for setting a specific partition as home directory.  Usage
+    examples:
+
+  home=/dev/sda3    =>  use /dev/sda3 as the homepartition
+  home=scan         =>  scan through the available partitions and search
+                        for file grml.img
+
+partconf::
+
+    This parameter mounts the specified device in read-only mode and tries to
+    copy all files specified in /etc/grml/partconf to the Grml system. This
+    provides the possibility to use the configuration of a harddisk
+    installation. For example using the network configuration (which is
+    specified in /etc/network) is possible using this boot parameter. Usage
+    example:
+
+  partconf=/dev/sda2 => try to mount /dev/sda2 and copy files specified
+                        in /etc/grml/partconf to the booted Grml system
+
+netconfig::
+
+    Use this parameter to restore configuration using wget to download a GCA
+    from the specified destination. Usage example:
+
+  netconfig=server.tld/path/to/config.tbz  =>   restore configuration using wget to download file config.tbz
+
+extract::
+
+    Extract specific directories from the GCA which needs to be specified by
+    other means.
+
+  extract=/home/grml         => extract only /home/grml from archive
+  extract=/etc               => extract only /etc from archive
+  extract=/home/grml/config  => extract only $HOME/config from archive
+
+scripts::
+
+    This parameter executes scripts. If an optional path is given, it is
+    relative to DCSDIR. If it points to a directory, all scripts inside this
+    directory are executed. If the path points to a file, this single file is
+    executed. If no path is given, it defaults to scripts/grml.sh. Usage
+    examples:
+
+  scripts               =>   run script DCSDIR/scripts/grml.sh
+  scripts=foobar.sh     =>   run script foobar.sh in DCSDIR
+  scripts=foobar        =>   run all scripts inside DCSDIR/foobar directory
+
+config::
+
+    This parameter restores a configuration using a GCA. If an optional path is
+    given, it is relative to DCSDIR. If no path is given, it defaults to
+    DCSDIR/config.tbz. Usage examples:
+
+  config                    =>   restore configuration using file DCSDIR/config.tbz
+  config=config_foobar.tbz  =>   restore configuration using file DCSDIR/config_foobar.tbz
+
+debs::
+
+    This parameter allows automatic installation of deb packages while booting.
+    The path is relative to DCSDIR, not optional and is a shell wildcard. All
+    Files matching the wildcard are installed in a single dpkg --install call.
+    For backwards compatibility, if no slash is contained in the path, it is
+    taken relative to DCSDIR/debs.
+
+    Usage examples:
+
+  debs=*.deb        =>   install all debian packages (suffix .deb) from directory DCSDIR/debs/
+  debs=foo/01*.deb  =>   install all debian packages (suffix .deb) starting with 01 in the filename from directory DCSDIR/foo
+
+
+noautoconfig::
+
+    Deactivate automounting. By default the scripts try to mount a device with
+    label 'GRMLCFG'. If you specify the noautoconfig bootparam this automounting
+    will be deactivated.
+
+  noautoconfig            => disables auto mounting of label 'GRMLCFG'
+
+
+Permanently adjust boot parameters
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+As you probably know you can adjust boot parameters on the bootprompt.  You want
+to set some boot parameters permanently? That's possible via adding a directory
+named 'bootparams' to the Grml ISO which has to be located at the root-directory
+/bootparams/ (note: the directory is known as /live/image/bootparams/ on a
+_running_ Grml system then). Place a textfile inside the directory containing
+the boot parameters which should be appended to default ones (this corresponds
+to booting without any special parameters).
+
+  mkdir bootparams
+  echo lang=de > bootparams/my_bootparams
+
+Then burn a multisession CD where directory bootparams is located in the root
+directory of the CD.
+
+[NOTE]
+Not all boot parameters can be used via /bootparams/. This is a limitation of
+the way the kernel and userspace retrieve boot parameters. Boot parameter
+regarding the kernel definitely do *NOT* work. Boot parameter related to
+grml-autoconfig (the main part of the boot process in Grml running in userspace,
+being all the stuff after startup of udev) are expected to work. Boot parameter
+related to initrd/initramfs (the part between 'Searching for GRML file' and
+startup of udev) are *NOT* covered by /bootparams/ as well yet.
+
+TIP: the application k3b (not available on the live-CD but available through the
+Debian repositories) provides an easy to use interface for doing the
+multisession task.
+
+[[X7]]
+Usage scenarios
+---------------
+
+Personal configuration files
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+You are a fan of the editor vim? Great. You probably have your own ~/.vimrc and
+want to use it on the Grml system. You also don't like the default zsh
+configuration and want to use your own ~/.zshrc?  How to procede? Copy your
+.vimrc and .zshrc to $HOME of user 'grml'.  Place additional files in
+$HOME/config. Now create a configuration for your files running:
+
+  save-config -home -configdir
+
+Now you should have a file named config.tbz containing your configuration files.
+You can copy the archive to a webserver and restore it via downloading during
+reboot using the following commandline on bootprompt:
+
+  grml netconfig=server.tld/path/to/config.tbz
+
+You don't have network access but own a floppy drive? Copy the file to a floppy
+disk and boot with:
+
+  grml myconfig=/dev/fd0
+
+Floppy is to small or to slow? Ok, let's use a usb device:
+
+  grml myconfig=/dev/sda1
+
+Network configuration
+~~~~~~~~~~~~~~~~~~~~~
+
+You need a specific network setup and want to use your own
+/etc/network/interfaces by default? Generate the configuration archive running
+the following command as user root:
+
+  save-config -etc
+
+Now you should have a file named config.tbz containing your configuration files.
+If you want to use it with a floppy disk copy the file to a floppy and boot via
+using the following command on bootprompt:
+
+  grml myconfig=/dev/fd0
+
+Floppy is to small or to slow? Ok, let's use a usb device:
+
+  grml myconfig=/dev/sda1
+
+You do have an existing harddisk installation and want to use its configuration?
+Let's say the debian system is located in /dev/sda2. You want to use the
+directory /etc/network. This directory is activated by default in
+/etc/grml/partconf so we don't have to do any further work.  We just need to
+activate it via using the following commandline on bootprompt:
+
+  grml partconf=/dev/sda2
+
+Automatic installation of debian packages
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+You have a specified debian package named 'foobar.deb' and want to use it with
+(therefore: install it on) Grml by default? Notice: this feature is useful
+especially for grml-small (a ~100 MB ISO). If you want to use it with the large
+version of Grml you might have to overburn the ISO.
+
+Let's assume you have burned the Grml iso to a CD-RW using a commandline like:
+
+  cdrecord dev=/dev/hdc -v -multi -tao grml_0.5.iso
+
+Now create a directory named debs and place foobar.deb in it:
+
+  mkdir debs/ && cp foobar.deb debs/
+
+Notice: This directory will be located in /live/image after burning the second
+session.
+
+Now create the second session containing this directory:
+
+  mkisofs -M grml_0.5.iso -C `cdrecord -msinfo dev=/dev/hdc` -R -o 2nd_session.iso debs
+
+Finally append the second session to the cd using:
+
+  cdrecord dev=/dev/hdc -v -multi -tao 2nd_session.iso
+
+TIP: the application k3b (not available on the live CD but available through the
+Debian repositories) provides an easy to use interface for doing the
+multisession task.
+
+Now boot from your new personalized Grml CD using the debs parameter:
+
+  grml debs
+
+Run your own commands on startup
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+You know that booting with 'grml service=foobar' executes /etc/init.d/foobar
+when booting Grml. But you want to setup a more complex network configuration,
+adjust some other stuff and so on on your own? Just write a script named grml.sh
+which does the job and use own of the mentioned bootparams. Let's say you have
+placed grml.sh on your usb device (usb stick) then use the following commandline
+on bootprompt:
+
+  grml myconfig=/dev/sda1
+
+Or even better: create a floppy disk with label GRMLCFG running:
+
+  fdformat /dev/fd0   # format the floppy disk if not done already
+  mkfs.ext2 -L GRMLCFG /dev/fd0   # now create ext2 filesystem with label GRMLCFG on it:
+
+TIP: several filesystems provide the possibility to provide a label.  For
+example FAT provides this through: 'mkfs.vfat -n GRMLCFG /dev/sda1' (attention:
+this will destroy data on /dev/sda1 of course!). Take a look at the
+documentation/manpage of the filesystem you want to use.
+
+Now place your configuration archive (see save-config and the other usage
+scenarios) and the script grml.sh on the floppy disk. Now you can boot your
+system without specifying any bootparameters on bootprompt because devices
+labeled with GRMLCFG are mounted readonly and used by default. If you did not
+label your device you can use the device anyway using 'grml myconfig=/dev/ice'
+on the bootprompt.
+
+Debug remote systems
+~~~~~~~~~~~~~~~~~~~~
+
+You are responsible for a customer's system in her data center. The system has
+failed and you need to debug from remote, and the remote hands available in the
+data center do not have enough knowledge to get Grml booted and configure the
+network without external help?
+
+If the hard disk of the system is still available, you hopefully have saved a
+configuration file with IP address, netmask and default gateway somewhere on
+that hard disk. Grml can use the information found on a partition. Take a look
+at the 'partconf' boot parameter.  Usage example: 'grml partconf=/dev/sda2'
+copies files defined in /etc/grml/partconf from /dev/sda2 to the Grml system. As
+/etc/network is predefined in /etc/grml/partconf the configuration from
+/dev/sda2 will be taken.
+
+Or you use a standard Grml medium and have grml read IP address, netmask and
+default gateway from another medium like a floppy or an USB stick. Take a look
+at the script saveconfig and the boot parameter myconfig.
+
+Or you put a grml.iso file on your hard disk (maybe in /boot/grml) or on an USB
+stick, use grub to boot from there and place debs, configuration scripts or Grml
+configuraton archives alongside the .iso.
+
+Use persistent home directory
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+You want to use a persistent home directory which includes all the files located
+in $HOME. Use the script mkpersistenthome to create such a persistent home
+directory. You have the options to either use a specific partition as your home
+directory or add a loopback file named grml.img on the specified partition (the
+default).
+
+TIP: /dev/external in the partition selection of mkpersistenthome is an usb
+device without partitions. /dev/external1 corresponds to the first partition on
+an usb device (usually an usb stick).
+
+After running the script mkpersistenthome you can use the boot parameter home to
+activate the home directory. If you are using the option with the loopback file
+(grml.img) you can boot via:
+
+  grml home=scan
+
+which will scan through the partitions and if a file grml.img is found it will
+be mounted as your $HOME-directory. If you want to use a partition as your home
+directory specify the device as an option. If you want to use /dev/sda2 as your
+$HOME boot via:
+
+  grml home=/dev/sda2
+
+Notice: the files located in /etc/skel will be copied to the partition (but will
+not overwrite any files).
+
+Bugs
+----
+If you find a bug please report it. See link:http://grml.org/bugs/ for details
+about how to report bugs.
+
+See also
+--------
+grml-autoconfig(8), mkpersistenthome(1), restore-config(1), save-config(1)
+
+Author
+------
+(c) 2005++, Michael Prokop <mika@grml.org>
diff --git a/doc/grml-autoconfig.8.txt b/doc/grml-autoconfig.8.txt
new file mode 100644 (file)
index 0000000..ef53e16
--- /dev/null
@@ -0,0 +1,90 @@
+grml-autoconfig(8)
+==================
+
+Name
+----
+grml-autoconfig - script and configuration framework for the grml system
+
+Synopsis
+--------
+grml-autoconfig
+
+Options
+-------
+
+The program grml-autoconfig does not support any options but needs to be run
+with root permissions as it modifies a system wide configuration file
+(/etc/grml/autoconfig).
+
+About
+-----
+
+The program grml-autoconfig does not support any options but needs to be run
+with root permissions as it modifies a system wide configuration file
+(/etc/grml/autoconfig).  'grml-autoconfig' is an interface to the framework
+named grml-autoconfig.  /etc/init.d/grml-autoconfig is the main script of the
+grml-system where all the hardware recognition and activation of services take
+place.
+
+grml-autoconfig supports an adjustable configuration via the configuration file
+named /etc/grml/autoconfig. The script named Bgrml-autoconfig is a simple
+dialog-based interface to the configuration file. You can either use the script
+for configuring grml-autoconfig or modify the configuration file manually on
+your own (there is no interference).
+
+The grml-autoconfig package creates three initscripts on installation:
+/etc/init.d/bootlocal.first, /etc/init.d/bootlocal.middle and
+/etc/init.d/bootlocal.last.
+
+They are created in the maintainer scripts of the grml-autoconfig package.  This
+means they are not part of the package itself and therefore also not marked as
+configuration files of the package. As a result the files won't be touched
+anymore, neither when upgrading nor when removing the package! If you want to
+add your own bootup commands you can use these files.
+/etc/init.d/bootlocal.first is executed at the very beginning, in runlevel 'S'.
+/etc/init.d/bootlocal.middle is executed right before startup of grml-autoconfig
+itself in runlevel '2' only (where grml-autoconfig is located as well).  Finally
+/etc/init.d/bootlocal.last is executed as one of the last initscripts in
+runlevel '2' only.
+
+Files
+-----
+
+  */etc/init.d/grml-autoconfig*::
+
+Init-script which runs the commands defined in /etc/grml/autoconfig.functions
+after checking configuration file /etc/grml/autoconfig.
+
+  */usr/sbin/grml-autoconfig*::
+
+Dialog interface to the configuration file /etc/grml/autoconfig.
+
+  */etc/grml/autoconfig*::
+
+Configuration file for grml-autoconfig framework. You can either edit this
+configuration file manually of use the dialog interface
+/usr/sbin/grml-autoconfig.
+
+  */etc/grml/autoconfig.functions*::
+
+Main functions of the grml-autoconfig. You do not need to configure or execute
+the file.  For debugging purposes you can source this script also from within an
+interactive shell and run specific functions afterwards.
+
+  */etc/grml/lsb-functions*::
+
+Based on /lib/lsb/init-functions this file provides an adjusted version of an
+lsb-like booting sequence.
+
+Bugs
+----
+If you find a bug please report it. See link:http://grml.org/bugs/ for details
+about how to report bugs.
+
+See also
+--------
+grml-autoconfig(1), mkpersistenthome(1), restore-config(1), save-config(1)
+
+Author
+------
+grml-autoconfig was written by Michael Prokop <mika@grml.org>.
diff --git a/doc/grml-autoconfig.txt b/doc/grml-autoconfig.txt
deleted file mode 100644 (file)
index 5bdae5a..0000000
+++ /dev/null
@@ -1,577 +0,0 @@
-grml-autoconfig
-===============
-
-Introduction
-------------
-
-By using the config framework, it is possible to customize grml's
-startup in a multitude of ways. It allows to:
-
-- execute one or more scripts on startup
-- install Debian packages from deb files on startup
-- unpack configuration on startup
-
-The combination of Debs, Configuration and Scripts is called DCS in
-grml. DCS can be read from the Live Image itself, from an arbitrary
-file system on the local system which is marked with the volume label
-GRMLCFG, or from the file system pointed to by the myconfig boot
-parameter.
-
-The DCS handling is controlled by a number of boot parameters.
-
-The scripts save-config and restore-config can be used to create and
-handle files called 'grml configuration archive', abbreviated GCA.
-save-config stores the running configuration inside a GCA;
-restore-config is a script to restore a configuration from a GCA.
-
-TIP: A GCA is a plain bzip2 compressed tar archive. All the files are
-generated starting from the root-directory '/' so it is easy to
-handle. You can generate configuration archives manually as well.
-save-config is just a frontend which should make it easier to use.
-
-The grml-autoconfig code has been re-worked in August 2009. This
-document handles both the behavior of grml releases up to 2009.05 and
-the current behavior. Great care has been taken to provide maximum
-backwards compatibility during the rewrite.
-
-
-Behavior up to grml 2009.05
----------------------------
-
-Autoconfiguration
-~~~~~~~~~~~~~~~~~
-
-By default the booting process tries to mount a device labeled
-'GRMLCFG'. This provides the possibility to restore a configuration
-(named config.tbz) and execute a script (named grml.sh) without the
-need to specify any bootparams. If you want to disable this feature
-please take a look at the 'noautoconfig' bootparam.
-
-Boot parameters
-~~~~~~~~~~~~~~~
-
-As you probably know you can adjust boot parameters on the bootprompt.  You want
-to set some boot parameters permanently? That's possible via adding a directory
-named 'bootparams' to the grml-ISO which has to be located at the root-directory
-/bootparams/ (note: the directory is known as /live/image/bootparams/ on a
-_running_ grml system then). Place a textfile inside the directory containing
-the boot parameters which should be appended to default ones (this corresponds to
-booting without any special parameters). If you want to be able to boot from your
-grml-CD you have to create a multisession CD. See the <<X7,usage scenarios>> for
-more details how to use it or consider booting from a USB device (checkout
-grml2usb).
-
-The following boot parameters are supported. Use them at the (isolinux)
-bootprompt as documented here.
-
-myconfig::
-
-   This parameter is for restoring configuration using the file config.tbz
-    on the specified device. Usage examples:
-
-  myconfig=/dev/sda1                        => use file config.tbz from usb-device
-  myconfig=/dev/fd0                         => use file config.tbz from floppy-disk
-  myconfig=/dev/sda1 file=config_foobar.tbz => use file config_foobar.tbz from usb-device
-
-home::
-
-    This parameter is for setting a specific partition as home directory.
-    Usage examples:
-
-  home=/dev/sda3    =>  use /dev/sda3 as the homepartition
-  home=scan         =>  scan through the available partitions and search
-                        for file grml.img
-
-partconf::
-
-    This parameter mounts the specified device in read-only mode and tries
-    to copy all files specified in /etc/grml/partconf to the grml
-    system. This provides the possibility to use the configuration of a
-    harddisk installation. For example using the network configuration
-    (which is specified in /etc/network) is possible using this
-    boot parameter. Usage example:
-
-    partconf=/dev/sda2 => try to mount /dev/sda2 and copy files specified
-                          in /etc/grml/partconf to the booted grml system
-
-netconfig::
-    Use this parameter to restore configuration using wget to download
-    a configuration file from specified destination. Usage example:
-
-  netconfig=server.tld/path/to/config.tbz  =>   restore configuration using wget to download file config.tbz
-
-extract::
-
-    Extract specific directories from configuration archive. Notice:
-    This bootparam is useful only with bootparams which are able to
-    extract configuration archives.
-
-  extract=/home/grml         => extract only /home/grml from archive
-  extract=/etc               => extract only /etc from archive
-  extract=/home/grml/config  => extract only $HOME/config from archive
-
-scripts::
-
-    This parameter executes a script located in the root-directory /scripts/ on the
-    grml media/ISO (note: the directory is known as /live/image/scripts/ on a
-    _running_ grml system then). Usage examples:
-
-  scripts               =>   run script [/live/image]/scripts/grml.sh
-  scripts=foobar.sh     =>   run script foobar.sh in [/live/image]/scripts/
-
-config::
-
-    This parameter restores a configuration using root-directory /config/ on the
-    grml media/ISO (note: the directory is known as /live/image/config on a
-    _running_ grml system then). Usage examples:
-
-  config                    =>   restore configuration using file config.tbz from directory [/live/image]/config/
-  config=config_foobar.tbz  =>   restore configuration using file config_foobar.tbz from directory [/live/image]/config/
-
-debs::
-
-    This parameter allows automatic installation of deb packages while
-    booting. The debian packages have to be located in the root-directory /debs/
-    on the grml media/ISO (note: the directory is known as /live/image/debs/ on
-    a _running_ grml system then). Usage examples:
-
-  debs              =>   install all debian packages (suffix .deb) from directory [/live/image]/debs/
-  debs=01           =>   install all debian packages (suffix .deb) starting with 01 in the filename from directory [/live/image]/debs/
-
-
-noautoconfig::
-
-    Deactivate automounting. By default the command 'mount' tries to mount a
-    device with label 'GRMLCFG'. If you specify the noautoconfig bootparam
-    the automounting will be deactivated.
-
-  noautoconfig            => disables auto mounting of label 'GRMLCFG'
-
-
-Behavior in current development snapshots
------------------------------------------
-
-The central concept of grml-autoconfig is the DCS directory which
-holds debs, configuration and scripts which are used during system
-startup.
-
-
-Determination of DCS directory
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The DCS directory defaults to the root directory of the GRML live
-image. If a file system labeled GRMLCFG is found, the DCS directory is
-the root directory of that file system. Alternatively, the myconfig
-boot parameter can be used to directly specify a device which is then
-taken as DCS directory (myconfig=/dev/sda1, for example).
-
-Without any additional boot parameters, the GCA at DCSDIR/config.tbz
-is automatically unpacked and DCSDIR/scrips/grml.sh is automaitcally
-executed on system startup. The 'noautoconfig' boot parameter disables
-this automatic behavior.
-
-
-Boot Parameters
-~~~~~~~~~~~~~~~
-
-The following boot parameters are supported. Use them at the (isolinux)
-bootprompt as documented here.
-
-myconfig::
-
-   This parameter directly sets DCSDIR to the root directory of the
-   specified device. Usage examples:
-
-  myconfig=/dev/sda1                        => read DCS from usb-device
-  myconfig=/dev/fd0                         => read DCS from floppy-disk
-
-home::
-
-    This parameter is for setting a specific partition as home directory.
-    Usage examples:
-
-  home=/dev/sda3    =>  use /dev/sda3 as the homepartition
-  home=scan         =>  scan through the available partitions and search
-                        for file grml.img
-
-partconf::
-
-    This parameter mounts the specified device in read-only mode and tries
-    to copy all files specified in /etc/grml/partconf to the grml
-    system. This provides the possibility to use the configuration of a
-    harddisk installation. For example using the network configuration
-    (which is specified in /etc/network) is possible using this
-    boot parameter. Usage example:
-
-    partconf=/dev/sda2 => try to mount /dev/sda2 and copy files specified
-                          in /etc/grml/partconf to the booted grml system
-
-netconfig::
-    Use this parameter to restore configuration using wget to download
-    a GCA from the specified destination. Usage example:
-
-  netconfig=server.tld/path/to/config.tbz  =>   restore configuration using wget to download file config.tbz
-
-extract::
-
-    Extract specific directories from the GCA which needs to be
-    specified by other means.
-
-  extract=/home/grml         => extract only /home/grml from archive
-  extract=/etc               => extract only /etc from archive
-  extract=/home/grml/config  => extract only $HOME/config from archive
-
-scripts::
-
-    This parameter executes scripts. If an optional path is given, it
-    is relative to DCSDIR. If it points to a directory, all scripts
-    inside this directory are executed. If the path points to a file,
-    this single file is executed. If no path is given, it defaults to
-    scripts/grml.sh. Usage examples:
-
-  scripts               =>   run script DCSDIR/scripts/grml.sh
-  scripts=foobar.sh     =>   run script foobar.sh in DCSDIR
-  scripts=foobar        =>   run all scripts inside DCSDIR/foobar directory
-
-config::
-
-    This parameter restores a configuration using a GCA. If an
-    optional path is given, it is relative to DCSDIR. If no path is
-    given, it defaults to DCSDIR/config.tbz. Usage examples:
-
-  config                    =>   restore configuration using file DCSDIR/config.tbz
-  config=config_foobar.tbz  =>   restore configuration using file DCSDIR/config_foobar.tbz
-
-debs::
-
-    This parameter allows automatic installation of deb packages while
-    booting. The path is relative to DCSDIR, not optional and is a
-    shell wildcard. All Files matching the wildcard are installed in a
-    single dpkg --install call. For backwards compatibility, if no
-    slash is contained in the path, it is taken relative to DCSDIR/debs.
-
-    Usage examples:
-
-  debs=*.deb        =>   install all debian packages (suffix .deb) from directory DCSDIR/debs/
-  debs=foo/01*.deb  =>   install all debian packages (suffix .deb) starting with 01 in the filename from directory DCSDIR/foo
-
-
-noautoconfig::
-
-    Deactivate automounting. By default the scripts try to mount a
-    device with label 'GRMLCFG'. If you specify the noautoconfig bootparam
-    this automounting will be deactivated.
-
-  noautoconfig            => disables auto mounting of label 'GRMLCFG'
-
-
-Permanently adjust boot parameters
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-As you probably know you can adjust boot parameters on the bootprompt.  You want
-to set some boot parameters permanently? That's possible via adding a directory
-named 'bootparams' to the grml-ISO which has to be located at the root-directory
-/bootparams/ (note: the directory is known as /live/image/bootparams/ on a
-_running_ grml system then). Place a textfile inside the directory containing
-the boot parameters which should be appended to default ones (this corresponds to
-booting without any special parameters).
-
-  mkdir bootparams
-  echo lang=de > bootparams/my_bootparams
-
-Then burn a multisession CD where directory bootparams is located in the root
-directory of the CD.
-
-[NOTE]
-Not all boot parameters can be used via /bootparams/. This is a limitation of the
-way the kernel and userspace retrieve boot parameters. Boot parameter regarding the
-kernel definitely do *NOT* work. Boot parameter related to grml-autoconfig (the
-main part of the boot process in grml running in userspace, being all the stuff
-after startup of udev) are expected to work. Boot parameter related to
-initrd/initramfs (the part between 'Searching for GRML file' and startup of
-udev) are *NOT* covered by /bootparams/ as well yet.
-
-TIP: the application k3b (not available on the live-CD but available
-through the Debian repositories) provides an easy to use interface for
-doing the multisession task.
-
-
-
-Scripts
--------
-
-NAME
-~~~~
-save-config - save configuration ; restore-config - restore
-configuration; mkpersistenthome - create persistent home directory;
-more options available via boot parameters (see above)
-
-SYNOPSIS
-~~~~~~~~
-save-config - please take a look at 'save-config -h' ; restore-config
-- please take a look at 'restore-config -h', mkpersistenthome (no
-options available)
-
-
-save-config - save configuration
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-This script generates a plain bzip2 compressed tar archive containing
-the specified files, suitable as a GCA. The following options are
-supported for specifying which parts should be saved in the
-configuration file:
-
-  -home                         store hidden files from $HOME ($HOME/.*)
-  -grmlhome                     store hidden files from \$HOME (\$HOME/.*) of user grml [use as user root]
-  -etc                          store modified files from /etc
-  -configdir                    store $HOME/config
-  -all                          store all configuration files (:= -home, -configdir and -etc)
-
-TIP: It is also possible to use environment variables for specifying which parts
-should be saved.  Just set the corresponding variable: $SAVE_HOME, $SAVE_ETC,
-$SAVE_CONFIGDIR and $SAVE_ALL
-
-The default filename of the generated configuration file is
-config.tbz.  The following options are supported for specifying
-another destination of the configuration file:
-
-  -ssh user@host:/path/to/file  copy configuration via ssh/scp to remote host
-  -mail <recipient>             send configuration via mail
-  -file foo_bar_config.tbz      save configuration in specified file
-
-Usage examples:
-
-  save-config -all                                  => store all configuration files in config.tbz in current dir
-  save-config -home -mail  devnull@grml.org         => store $HOME/.* in config.tbz and send it via mail
-  save-config -etc  -ssh   devnull@grml.org:/path/  => store /etc in config.tbz and scp it to specified host
-  save-config -all  -file  foo.tbz                  => store all configuration files in foo.tbz
-  SAVE_ALL=yes save-config -file /path/foo.tbz      => store all configuration files in /path/foo.tbz
-
-restore-config - restore configuration
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You can either restore a GCA using the boot parameters or by a script file
-named 'restore-config'.  Specify the filename of the configuration
-archive which should be used as a parameter. The following options are
-available to specify which parts of the archive should be extracted.
-
-  -home                         extract hidden files from $HOME ($HOME/.*)
-  -grmlhome                     store hidden files from \$HOME (\$HOME/.*) of user grml [use as user root]
-  -etc                          extract modified files from /etc
-  -configdir                    extract $HOME/config
-
-The default is to extract (restore) all files found in the archive.
-
-TIP: It is also possible to use environment variables for specifying
-which part should be restored. Just set the corresponding variable:
-$RESTORE_HOME, $RESTORE_ETC, $RESTORE_CONFIGDIR and $RESTORE_ALL
-
-Usage examples:
-
-  restore-config -home foo_bar_config.tbz  => restore configuration from file foo_bar_config.tbz
-  restore-config config.tbz                => restore configuration from file config.tbz
-
-mkpersistenthome - use persistent home-directory
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You have a local partition you would like to use as your
-home-directory?  Just use the interactive script called
-'mkpersistenthome'. It will either create a file named grml.img on the
-specified partition or create a partition using the ext2 filesystem
-(you can specify the option in a dialog inside the program). grml.img
-is a loopback device which size you can specify manually.  It is
-possible to scan through the partitions to identify the appropriate
-partition. To use a home-directory located on your hard-drive use the
-appropriate boot parameter on bootprompt:
-
-  home=/dev/sda3    =>   use /dev/sda3 as the homepartition
-  home=scan         =>   scan through the available partitions and search for file grml.img
-
-[[X7]]
-Usage scenarios
----------------
-
-Personal configuration files
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You are a fan of the editor vim? Great. You probably have your own
-~/.vimrc and want to use it on the grml system. You also don't like
-the default zsh configuration and want to use your own ~/.zshrc?
-How to procede? Copy your .vimrc and .zshrc to $HOME of user 'grml'.
-Place additional files in $HOME/config. Now create a configuration for
-your files running:
-
-  save-config -home -configdir
-
-Now you should have a file named config.tbz containing your
-configuration files. You can copy the archive to a webserver
-and restore it via downloading during reboot using the following
-commandline on bootprompt:
-
-  grml netconfig=server.tld/path/to/config.tbz
-
-You don't have network access but own a floppy drive? Copy the file
-to a floppy disk and boot with:
-
-  grml myconfig=/dev/fd0
-
-Floppy is to small or to slow? Ok, let's use a usb device:
-
-  grml myconfig=/dev/sda1
-
-
-Network configuration
-~~~~~~~~~~~~~~~~~~~~~
-
-You need a specific network setup and want to use your own
-/etc/network/interfaces by default? Generate the configuration
-archive running the following command as user root:
-
-  save-config -etc
-
-Now you should have a file named config.tbz containing your
-configuration files. If you want to use it with a floppy disk copy the
-file to a floppy and boot via using the following command on
-bootprompt:
-
-  grml myconfig=/dev/fd0
-
-Floppy is to small or to slow? Ok, let's use a usb device:
-
-  grml myconfig=/dev/sda1
-
-You do have an existing harddisk installation and want to use its
-configuration? Let's say the debian system is located in /dev/sda2. You
-want to use the directory /etc/network. This directory is activated by
-default in /etc/grml/partconf so we don't have to do any further work.
-We just need to activate it via using the following commandline on
-bootprompt:
-
-  grml partconf=/dev/sda2
-
-Automatic installation of debian packages
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You have a specified debian package named 'foobar.deb' and want to use
-it with (therefore: install it on) grml by default? Notice: this feature
-is useful especially for grml-small (a ~80 MB ISO). If you want to use it
-with the large version of grml you might have to overburn the ISO.
-
-Let's assume you have burned the grml iso to a CD-RW using a commandline like:
-
-  cdrecord dev=/dev/hdc -v -multi -tao grml_0.5.iso
-
-Now create a directory named debs and place foobar.deb in it:
-
-  mkdir debs/ && cp foobar.deb debs/
-
-Notice: This directory will be located in /live/image after burning the second session.
-
-Now create the second session containing this directory:
-
-  mkisofs -M grml_0.5.iso -C `cdrecord -msinfo dev=/dev/hdc` -R -o 2nd_session.iso debs
-
-Finally append the second session to the cd using:
-
-  cdrecord dev=/dev/hdc -v -multi -tao 2nd_session.iso
-
-TIP: the application k3b (not available on the live-CD but available
-through the Debian repositories) provides an easy to use interface for
-doing the multisession task.
-
-Now boot from your new personalized grml cd using the debs parameter:
-
-  grml debs
-
-Run your own commands on startup
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You know that booting with 'grml service=foobar' executes
-/etc/init.d/foobar when booting grml. But you want to setup a more
-complex network configuration, adjust some other stuff and so on on your
-own? Just write a script named grml.sh which does the job and use own
-of the mentioned bootparams. Let's say you have placed grml.sh on your
-usb device (usb stick) then use the following commandline on bootprompt:
-
-  grml myconfig=/dev/sda1
-
-Or even better: create a floppy disk with label GRMLCFG running:
-
-  fdformat /dev/fd0   # format the floppy disk if not done already
-  mkfs.ext2 -L GRMLCFG /dev/fd0   # now create ext2 filesystem with label GRMLCFG on it:
-
-TIP: several filesystems provide the possibility to provide a label.
-For example FAT provides this through: 'mkfs.vfat -n GRMLCFG
-/dev/sda1' (attention: this will destroy data on /dev/sda1 of
-course!). Take a look at the documentation/manpage of the filesystem
-you want to use.
-
-Now place your configuration archive (see save-config and the other
-usage scenarios) and the script grml.sh on the floppy disk. Now you can
-boot your system without specifying any bootparameters on bootprompt
-because devices labeled with GRMLCFG are mounted readonly and used by
-default. If you did not label your device you can use the device anyway
-using 'grml myconfig=/dev/ice' on the bootprompt.
-
-Debug remote systems
-~~~~~~~~~~~~~~~~~~~~
-
-You are responsible for a customer's system in her data center. The
-system has failed and you need to debug from remote, and the remote
-hands available in the data center do not have enough knowledge to get
-grml booted and configure the network without external help?
-
-If the hard disk of the system is still available, you hopefully have
-saved a configuration file with IP address, netmask and default
-gateway somewhere on that hard disk. grml can use the information
-found on a partition. Take a look at the 'partconf' boot parameter.
-Usage example: 'grml partconf=/dev/sda2' copies files defined in
-/etc/grml/partconf from /dev/sda2 to the grml system. As /etc/network
-is predefined in /etc/grml/partconf the configuration from /dev/sda2
-will be taken.
-
-Or you use a standard grml medium and have grml read IP address,
-netmask and default gateway from another medium like a floppy or an USB
-stick. Take a look at the script saveconfig and the boot parameter
-myconfig.
-
-Or you put a grml.iso file on your hard disk (maybe in /boot/grml) or
-on an USB stick, use grub to boot from there and place debs,
-configuration scripts or grml configuraton archives alongside the .iso.
-
-Use persistent home directory
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-You want to use a persistent home directory which includes all the files
-located in $HOME. Use the script mkpersistenthome to create such a
-persistent home directory. You have the options to either use a
-specific partition as your home directory or add a loopback file
-named grml.img on the specified partition (the default).
-
-TIP: /dev/external in the partition selection of mkpersistenthome is
-an usb device without partitions. /dev/external1 corresponds to the
-first partition on an usb device (usually an usb stick).
-
-After running the script mkpersistenthome you can use the boot
-parameter home to activate the home directory. If you are using the
-option with the loopback file (grml.img) you can boot via:
-
-  grml home=scan
-
-which will scan through the partitions and if a file grml.img is found
-it will be mounted as your $HOME-directory. If you want to use a
-partition as your home directory specify the device as an option. If
-you want to use /dev/sda2 as your $HOME boot via:
-
-  grml home=/dev/sda2
-
-Notice: the files located in /etc/skel will be copied to the partition
-(but will not overwrite any files).
-
-Bugs
-~~~~
-Please report feedback, bugreports and wishes link:http://grml.org/contact/[to us]!
-
-Author
-~~~~~~
-(c) 2005++, Michael Prokop <mika@grml.org>
diff --git a/doc/grml-bootsplash.1.txt b/doc/grml-bootsplash.1.txt
new file mode 100644 (file)
index 0000000..f7f49d0
--- /dev/null
@@ -0,0 +1,44 @@
+grml-bootsplash(1)
+==================
+
+Name
+----
+grml-bootsplash - script and configuration framework for the grml system
+
+Synopsis
+--------
+
+grml-bootsplash "||..."
+
+About
+-----
+
+'grml-bootsplash' provides a text-based simple bootsplash. It is integrated
+within the grml-autoconfig(1) framework. You very probably won't need it
+otherwise, this manpage just documents what grml-bootsplash does.
+
+Options
+-------
+
+The program grml-bootsplash does not support any options besides the "||..."
+sequence.  If you want to specify first status of bootsplash use
+'grml-bootsplash "|"'.  To specify the last status of bootsplash use
+'grml-bootsplash "||||||||||||"' (that's 12 '|').  The maximum number of
+supported "|" signs is twelve and will be used automatically if more are
+specified.
+
+Bugs
+----
+If you find a bug please report it. See link:http://grml.org/bugs/ for details
+about how to report bugs.
+
+See also
+--------
+grml-autoconfig(1), grml-autoconfig(8), mkpersistenthome(1), restore-config(1)
+
+Authors
+-------
+
+grml-bootsplash was written by Michael Prokop <mika@grml.org> and Florian Keller
+<Florian.Keller@zuerich.ch>.  This manual page was written by Michael Prokop
+<mika@grml.org> for the grml project (but may be used by others).
diff --git a/doc/mkpersistenthome.1.txt b/doc/mkpersistenthome.1.txt
new file mode 100644 (file)
index 0000000..a9102f7
--- /dev/null
@@ -0,0 +1,68 @@
+mkpersistenthome(1)
+===================
+
+Name
+----
+mkpersistenthome - create persistent home directory
+
+Synopsis
+--------
+
+mkpersistenthome
+
+About
+-----
+
+You have a local partition you would like to use as your home-directory?  Just
+use the interactive script called 'mkpersistenthome'. It will either create a
+file named grml.img on the specified partition or create a partition using the
+ext2 filesystem (you can specify the option in a dialog inside the program).
+grml.img is a loopback device which size you can specify manually.  It is
+possible to scan through the partitions to identify the appropriate partition.
+To use a home-directory located on your hard-drive use the appropriate boot
+parameter on bootprompt:
+
+  home=/dev/sda3    =>   use /dev/sda3 as the homepartition
+  home=scan         =>   scan through the available partitions and search for file grml.img
+
+Use persistent home directory
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+You want to use a persistent home directory which includes all the files located
+in $HOME. Use the script mkpersistenthome to create such a persistent home
+directory. You have the options to either use a specific partition as your home
+directory or add a loopback file named grml.img on the specified partition (the
+default).
+
+TIP: /dev/external in the partition selection of mkpersistenthome is an usb
+device without partitions. /dev/external1 corresponds to the first partition on
+an usb device (usually an usb stick).
+
+After running the script mkpersistenthome you can use the boot parameter home to
+activate the home directory. If you are using the option with the loopback file
+(grml.img) you can boot via:
+
+  grml home=scan
+
+which will scan through the partitions and if a file grml.img is found it will
+be mounted as your $HOME-directory. If you want to use a partition as your home
+directory specify the device as an option. If you want to use /dev/sda2 as your
+$HOME boot via:
+
+  grml home=/dev/sda2
+
+Notice: the files located in /etc/skel will be copied to the partition (but will
+not overwrite any files).
+
+Bugs
+----
+If you find a bug please report it. See link:http://grml.org/bugs/ for details
+about how to report bugs.
+
+See also
+--------
+grml-autoconfig(1), grml-autoconfig(8), restore-config(1), save-config(1)
+
+Author
+------
+(c) 2005++, Michael Prokop <mika@grml.org>
diff --git a/doc/restore-config.1.txt b/doc/restore-config.1.txt
new file mode 100644 (file)
index 0000000..b984338
--- /dev/null
@@ -0,0 +1,72 @@
+restore-config(1)
+=================
+
+Name
+----
+restore-config - restore configuration
+
+Synopsis
+--------
+
+restore-config <restore-options>
+
+About
+-----
+
+You can either restore a GCA ('grml configuration archive', see
+grml-autoconfig(1) for details) using the boot parameters or by a script file named
+'restore-config'. Specify the filename of the configuration archive which
+should be used as a parameter.
+
+Options
+-------
+
+The following options are available to specify which parts of the archive should
+be extracted.
+
+  *-home*::
+
+Extract hidden files from $HOME ($HOME/.*).
+
+  *-grmlhome*::
+
+Store hidden files from \$HOME (\$HOME/.*) of user grml [use as user root].
+
+  *-etc*::
+
+Extract modified files from /etc.
+
+  *-configdir*::
+
+Extract $HOME/config.
+
+Note: The default is to extract (restore) all files found in the archive.
+
+[TIP]
+It is also possible to use environment variables for specifying which part
+should be restored. Just set the corresponding variable: $RESTORE_HOME,
+$RESTORE_ETC, $RESTORE_CONFIGDIR and $RESTORE_ALL
+
+Usage examples
+--------------
+
+  *restore-config -home foo_bar_config.tbz*::
+
+Restore configuration from file foo_bar_config.tbz.
+
+  *restore-config config.tbz*::
+
+Restore configuration from file config.tbz.
+
+Bugs
+----
+If you find a bug please report it. See link:http://grml.org/bugs/ for details
+about how to report bugs.
+
+See also
+--------
+grml-autoconfig(1), grml-autoconfig(8), mkpersistenthome(1), save-config(1)
+
+Author
+------
+(c) 2005++, Michael Prokop <mika@grml.org>
diff --git a/doc/save-config.1.txt b/doc/save-config.1.txt
new file mode 100644 (file)
index 0000000..55b7559
--- /dev/null
@@ -0,0 +1,101 @@
+save-config(1)
+==============
+
+Name
+----
+save-config - save configuration
+
+Synopsis
+--------
+
+save-config <safe-options>
+
+About
+-----
+
+This script generates a plain bzip2 compressed tar archive containing the
+specified files, suitable as a GCA ('grml configuration archive', see
+grml-autoconfig(1) for details).
+
+Options
+-------
+
+The following options are supported for specifying which parts should be saved
+in the configuration file:
+
+  *-home*::
+
+Store hidden files from $HOME ($HOME/.*).
+
+  *-grmlhome*::
+
+Store hidden files from \$HOME (\$HOME/.*) of user grml [use as user root].
+
+  *-etc*::
+
+Sstore modified files from /etc.
+
+  *-configdir*::
+
+Store $HOME/config.
+
+  *-all*::
+
+Store all configuration files (:= -home, -configdir and -etc).
+
+[TIP]
+It is also possible to use environment variables for specifying which parts
+should be saved.  Just set the corresponding variable: $SAVE_HOME, $SAVE_ETC,
+$SAVE_CONFIGDIR and $SAVE_ALL
+
+The default filename of the generated configuration file is config.tbz.  The
+following options are supported for specifying another destination of the
+configuration file:
+
+  *-ssh user@host:/path/to/file*::
+
+Copy configuration via ssh/scp to remote host.
+
+  *-mail <recipient>*::
+
+Send configuration via mail.
+
+  *-file foo_bar_config.tbz*::
+
+Save configuration in specified file.
+
+Usage examples
+--------------
+
+  *save-config -all*::
+
+Store all configuration files in config.tbz in current dir.
+
+  *save-config -home -mail  devnull@grml.org*::
+
+Store $HOME/.* in config.tbz and send it via mail.
+
+  *save-config -etc  -ssh   devnull@grml.org:/path/*::
+
+Store /etc in config.tbz and scp it to specified host.
+
+  *save-config -all  -file  foo.tbz*::
+
+Store all configuration files in foo.tbz.
+
+  *SAVE_ALL=yes save-config -file /path/foo.tbz*::
+
+Store all configuration files in /path/foo.tbz.
+
+Bugs
+----
+If you find a bug please report it. See link:http://grml.org/bugs/ for details
+about how to report bugs.
+
+See also
+--------
+grml-autoconfig(1), grml-autoconfig(8), mkpersistenthome(1), restore-config(1)
+
+Author
+------
+(c) 2005++, Michael Prokop <mika@grml.org>
diff --git a/man/grml-autoconfig.8 b/man/grml-autoconfig.8
deleted file mode 100644 (file)
index d3eb5f4..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-.TH GRML-AUTOCONFIG 8
-.SH NAME
-grml-autoconfig \- script and configuration framework for the grml system
-.SH SYNOPSIS
-.B grml-autoconfig
-.SH DESCRIPTION
-This manual page documents briefly the
-.B grml-autoconfig
-command and the identically named framework.
-.PP
-\fBgrml-autoconfig\fP is an interface to the framework named grml-autoconfig.
-/etc/init.d/grml-autoconfig is the main script of the grml-system where
-all the hardware recognition and activation of services take place.
-
-grml-autoconfig supports an adjustable configuration via the configuration
-file named /etc/grml/autoconfig. The script named \fBgrml-autoconfig\fP is
-a simple dialog-based interface to the configuration file. You can either
-use the script for configuring grml-autoconfig or modify the configuration
-file manually on your own (there is no interference).
-
-The grml-autoconfig package creates three initscripts on installation:
-/etc/init.d/bootlocal.first, /etc/init.d/bootlocal.middle and
-/etc/init.d/bootlocal.last.
-
-They are created in the maintainer scripts of the grml-autoconfig package.
-This means they are not part of the package itself and therefore also not
-marked as configuration files of the package. As a result the files won't be
-touched anymore, neither when upgrading nor when removing the package! If you
-want to add your own bootup commands you can use these files.
-/etc/init.d/bootlocal.first is executed at the very beginning, in runlevel 'S'.
-/etc/init.d/bootlocal.middle is executed right before startup of
-grml-autoconfig itself in runlevel '2' only (where grml-autoconfig is located
-as well).  Finally /etc/init.d/bootlocal.last is executed as one of the last
-initscripts in runlevel '2' only.
-
-.SH OPTIONS
-The program grml-autoconfig does not support any options but needs to be run
-with root permissions as it modifies a system wide configuration file (/etc/grml/autoconfig).
-.SH FILES
-.I /etc/init.d/grml-autoconfig
-.RS
-Init-script which runs the commands defined in /etc/grml/autoconfig.functions
-after checking configuration file /etc/grml/autoconfig.
-.PP
-.RE
-.I /usr/sbin/grml-autoconfig
-.RS
-Dialog interface to the configuration file /etc/grml/autoconfig.
-.PP
-.RE
-.I /etc/grml/autoconfig
-.RS
-Configuration file for grml-autoconfig framework. You can either edit this configuration
-file manually of use the dialog interface /usr/sbin/grml-autoconfig.
-.PP
-.RE
-.I /etc/grml/autoconfig.functions
-.RS
-Main functions of the grml-autoconfig. You do not need to configure or execute the file.
-For debugging purposes you can source this script also from within an interactive
-shell and run specific functions afterwards.
-.PP
-.RE
-.I /etc/grml/lsb-functions
-.RS
-Based on /lib/lsb/init-functions this file provides an adjusted
-version of an lsb-like booting sequence.
-.SH BUGS
-If you find a bug please report it. See http://grml.org/bugs/
-for details about bug reporting.
-.SH AUTHOR
-grml-autoconfig was written by Michael Prokop <mika@grml.org>
-.PP
-This manual page was written by Michael Prokop <mika@grml.org>,
-for the grml project (but may be used by others).
diff --git a/man/grml-bootsplash.1 b/man/grml-bootsplash.1
deleted file mode 100644 (file)
index 802a344..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-.TH GRML-BOOTSPLASH 1
-.SH NAME
-grml-bootsplash \- script and configuration framework for the grml system
-.SH SYNOPSIS
-.B grml-bootsplash "||..."
-.SH DESCRIPTION
-This manual page documents briefly the
-.B grml-bootsplash
-command.
-.PP
-\fBgrml-bootsplash\fP provides a text-based simple bootsplash. It is integrated within
-the grml-autoconfig(8) framework. You very probably won't need it otherwise, this manpage
-just documents what grml-bootsplash does.
-.SH OPTIONS
-The program grml-bootsplash does not support any options besides the "||..." sequence.
-If you want to specify first status of bootsplash use 'grml-bootsplash "|"'.
-To specify the last status of bootsplash use 'grml-bootsplash "||||||||||||"' (that's 12 '|').
-The maximum number of supported "|" signs is twelve and will be used automatically if more are specified.
-.SH BUGS
-If you find a bug please report it. See http://grml.org/bugs/
-for details about bug reporting.
-.SH AUTHOR
-grml-bootsplash was written by Michael Prokop <mika@grml.org> and
-Florian Keller <Florian.Keller@zuerich.ch>.
-.PP
-This manual page was written by Michael Prokop <mika@grml.org>
-for the grml project (but may be used by others).