Merge branch 'debian': Imported 3.0~b6-1 from Debian Live
authorEvgeni Golov <evgeni@grml.org>
Mon, 26 Nov 2012 16:20:32 +0000 (17:20 +0100)
committerEvgeni Golov <evgeni@grml.org>
Mon, 26 Nov 2012 16:20:32 +0000 (17:20 +0100)
Conflicts:
Makefile
VERSION
backends/initramfs-tools/live.hook
bin/live-snapshot
debian/changelog
debian/control
debian/copyright
debian/live-boot-grml-initramfs-tools.triggers
debian/live-boot-grml.init
debian/rules
manpages/de/live-boot.de.7
manpages/de/live-snapshot.de.1
manpages/en/live-boot.7
manpages/en/live-snapshot.1
manpages/po/de/live-boot.7.po
manpages/po/de/live-snapshot.1.po
manpages/po4a.cfg
manpages/pot/live-boot.7.pot
manpages/pot/live-snapshot.1.pot
scripts/live
scripts/live-bottom/08persistence_excludes
scripts/live-bottom/12fstab
scripts/live-helpers

40 files changed:
bin/live-toram [deleted file]
debian/changelog
debian/control
debian/live-boot-grml-doc.install [moved from debian/live-boot-doc.install with 100% similarity]
debian/live-boot-grml-initramfs-tools.postinst [moved from debian/live-boot-initramfs-tools.postinst with 100% similarity]
debian/live-boot-grml-initramfs-tools.triggers [new file with mode: 0644]
debian/live-boot-grml.bug-presubj [moved from debian/live-boot.bug-presubj with 100% similarity]
debian/live-boot-grml.bug-script [moved from debian/live-boot.bug-script with 100% similarity]
debian/live-boot-grml.init [new file with mode: 0644]
debian/live-boot-grml.install [moved from debian/live-boot.install with 100% similarity]
debian/live-boot-grml.lintian-overrides [new file with mode: 0644]
debian/patches/03_grml_version_file_hook.patch [new file with mode: 0644]
debian/patches/05_boot_failure_message_grml.patch [new file with mode: 0644]
debian/patches/08_grml_defaults.patch [new file with mode: 0644]
debian/patches/11_dhcphostname.patch [new file with mode: 0644]
debian/patches/12_uuid_support.patch [new file with mode: 0644]
debian/patches/13_always_display_warnings_and_failures.patch [new file with mode: 0644]
debian/patches/15_networking_grml.patch [new file with mode: 0644]
debian/patches/16_nodhcp.patch [new file with mode: 0644]
debian/patches/19_revert_toram_bootoption_to_expected_behaviour.patch [new file with mode: 0644]
debian/patches/26_support_dns_bootoption.patch [new file with mode: 0644]
debian/patches/27_support_static_ip.patch [new file with mode: 0644]
debian/patches/29_support_dns_in_initramfs.patch [new file with mode: 0644]
debian/patches/30_support_multiarch_dns.patch [new file with mode: 0644]
debian/patches/31_package_rename.patch [new file with mode: 0644]
debian/patches/32_add_kms.patch [new file with mode: 0644]
debian/patches/33_retry_phram.patch [new file with mode: 0644]
debian/patches/34_ignore_unknown_filesystems.patch [new file with mode: 0644]
debian/patches/35_fix_findiso_umount.patch [new file with mode: 0644]
debian/patches/36_support_dhcp_bootoption.patch [new file with mode: 0644]
debian/patches/37_fix_legacy_persistence_handling.patch [new file with mode: 0644]
debian/patches/38_do_not_check_for_forensic_in_readonly_mode.patch [new file with mode: 0644]
debian/patches/39_persistence_with_forensic.patch [new file with mode: 0644]
debian/patches/series [new file with mode: 0644]
debian/rules
manpages/de/live-persistence.conf.de.5 [new file with mode: 0644]
manpages/en/live-persistence.conf.5 [new file with mode: 0644]
manpages/old/live-snapshot.it.1.txt [deleted file]
manpages/po/de/live-persistence.conf.5.po [new file with mode: 0644]
manpages/pot/live-persistence.conf.5.pot [new file with mode: 0644]

diff --git a/bin/live-toram b/bin/live-toram
deleted file mode 100755 (executable)
index b7740a2..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-#!/bin/sh
-
-set -e
-
-# Read cmdline
-for _PARAMETER in $(cat /proc/cmdline)
-do
-       case "${_PARAMETER}" in
-               module=*)
-                       _MODULE="${_PARAMETER#module=}"
-                       ;;
-       esac
-done
-
-# Assemble filesystems
-if [ -z "${_MODULE}" ]
-then
-       _FILESYSTEMS="/live/image/live/filesystem.squashfs"
-else
-       for _FILESYSTEM in _MODULE
-       do
-               _FILESYSTEMS="${_FILESYSTEMS} /live/image/live/${_FILESYSTEM}"
-       done
-fi
-
-# Exit if system is not debian live
-if [ ! -d /live/image ]
-then
-       echo "E: live-toram only works on Debian Live systems."
-
-       exit 1
-fi
-
-# Exit if filesystem not accessible
-for _FILESYSTEM in ${_FILESYSTEMS}
-do
-       if [ ! -r ${_FILESYSTEM} ]
-       then
-               echo "E: ${_FILESYSTEM}: No such file"
-               echo "I: live-toram already run?"
-
-               exit 1
-       fi
-done
-
-# Exit if user is unprivileged
-if [ "$(id -u)" -ne 0 ]
-then
-       echo "E: need root privileges"
-
-       exit 1
-fi
-
-# Exit if not enough free memory
-_SIZE=0
-
-for _FILESYSTEM in ${_FILESYSTEMS}
-do
-       _SIZE="$((${_SIZE} + $(du ${_FILESYSTEM} | awk '{ print $1 }')))"
-       _MEMORY="$(awk '/MemFree/ { print $2 }' /proc/meminfo)"
-done
-
-case ${@} in
-       -f|--force)
-               echo "W: Ignoring memory constrains as requested"
-               ;;
-
-       *)
-               if [ $_MEMORY -lt $_SIZE ]
-               then
-                       echo "E: not enough free memory available."
-                       echo "I: images need ${_SIZE}kB, free memory is ${_MEMORY}kB."
-
-                       exit 1
-               fi
-               ;;
-esac
-
-# Copying image to memory
-echo "P: Copying images to memory."
-echo "P: This may take a while..."
-
-# FIXME: doesn't work with multiple filesystems
-for _FILESYSTEM in ${_FILESYSTEMS}
-do
-       if [ ! -x "$(which rsync 2>/dev/null)" ]
-       then
-               rsync -a --progress ${_FILESYSTEM} /tmp/live
-       else
-               cp -av ${_FILESYSTEM} /tmp/live
-       fi
-
-LANGUAGE=C LANG=C LC_ALL=C perl << EOF
-open LOOP, '</dev/loop0' or die $!;
-open DEST, '</tmp/live' or die $!;
-ioctl(LOOP, 0x4C06, fileno(DEST)) or die $!
-close LOOP;
-close DEST;
-EOF
-
-done
-
-# Unmounting live media
-_DEVICE="$(awk '/\/live\/image / { print $1 }' /proc/mounts)"
-
-if [ -d /live/image ]
-then
-       umount /live/image
-       rmdir --ignore-fail-on-non-empty /live/image || true
-fi
-
-# Ejecting live media if it is not an optical device
-if [ "$(expr substr ${_DEVICE} 1 2)" != "sd" ] && \
-   ! readlink /sys/block/$(expr substr ${_DEVICE} 6 3) | grep -q usb
-then
-       if [ ! -x "$(which rsync 2>/dev/null)" ]
-       then
-               eject -p -m ${_DEVICE} >/dev/null 2>&1
-       fi
-fi
index 381fe95..3c8d0c6 100644 (file)
@@ -303,6 +303,76 @@ live-boot (3.0~a28-1) experimental; urgency=low
 
  -- Daniel Baumann <daniel@debian.org>  Mon, 04 Jun 2012 17:31:32 +0200
 
+live-boot (3.0~a27-1+grml.7) grml-testing; urgency=low
+
+  * [a488db6] Enable write-mode for persistency related devices in
+    readonly/forensic mode
+
+ -- Michael Prokop <mika@grml.org>  Fri, 14 Sep 2012 17:01:39 +0200
+
+live-boot (3.0~a27-1+grml.6) grml-testing; urgency=low
+
+  [ Lukas Schwaighofer ]
+  * [95fb70f] fixed legacy persistence handling
+
+  [ Michael Prokop ]
+  * [ed79f48] readonly: do not check for "forensic" boot option
+  * [72aebf1] Move changes to scripts/live-premount/readonly into debian
+    patch file
+
+ -- Michael Prokop <mika@grml.org>  Fri, 07 Sep 2012 13:43:08 +0200
+
+live-boot (3.0~a27-1+grml.5) grml-testing; urgency=low
+
+  * [8b51f69] Adjust 15_networking_grml.patch + 27_support_static_ip.patch
+    for klibc's ipconfig /run switch
+  * [bbeb928] Add "Breaks: klibc-utils (<< 2.0-2)" to live-boot-grml-
+    initramfs-tools for /run switch
+  * [cad0077] Refresh debian/patches/35_fix_findiso_umount.patch
+  * [7f450c2] Support overriding "nodhcp" boot option via "dhcp"
+  * [2b065a0] Adjust file permissions also of files that are added during
+    dh_quilt_patch stage
+
+ -- Michael Prokop <mika@grml.org>  Fri, 27 Jul 2012 15:06:38 +0200
+
+live-boot (3.0~a27-1+grml.4) grml-testing; urgency=low
+
+  * [6d32dfe] Check for presence of /tmp/net-${device}.conf before
+    sourcing it [Closes: issue1196] Thanks to Marc 'Zugschlus' Haber for
+    the bugreport and debugging this issue
+
+ -- Michael Prokop <mika@grml.org>  Mon, 23 Jul 2012 17:13:42 +0200
+
+live-boot (3.0~a27-1+grml.3) grml-testing; urgency=low
+
+  * [d978027] 35_fix_findiso_umount.patch: make sure ISO gets unmounted
+    correctly when using findiso/toram. Thanks to Christoph Biedl for the
+    bugreport and the patch
+  * [d621ee2] 34_ignore_unknown_filesystems.patch: also ignore fstype swap
+
+ -- Michael Prokop <mika@grml.org>  Mon, 28 May 2012 12:27:08 +0200
+
+live-boot (3.0~a27-1+grml.2) grml-testing; urgency=low
+
+  * [e161c2c] New patch to ignore "unknown" filesystems in
+    is_supported_fs() [Testing: issue1170]
+
+ -- Michael Prokop <mika@grml.org>  Sun, 20 May 2012 18:54:58 +0200
+
+live-boot (3.0~a27-1+grml.1) grml-testing; urgency=low
+
+  * [3039c63] Sync with Debian's upstream/3.0_a27 (new log file name,
+    persistency reworked,...)
+  * [06185b3] Bump Standards-Version, raise Build-Depends from dh 8 to dh
+    9 + raise compat version to 9
+  * [2998c28] Drop debian/patches/07_support_findiso.patch which is in
+    upstream nowadays
+  * [3967979] Drop deprecated debian/patches/14_no_blkid_on_lenny.patch
+  * [91460b9] Refresh debian/patches/ against new upstream code
+  * [7116647] Drop deprecated debian/patches/28_remove_localized_manpages.patch
+
+ -- Michael Prokop <mika@grml.org>  Wed, 09 May 2012 14:10:37 +0200
+
 live-boot (3.0~a27-1) experimental; urgency=low
 
   [ Daniel Baumann ]
@@ -476,6 +546,39 @@ live-boot (3.0~a25-1) unstable; urgency=low
 
  -- Daniel Baumann <daniel@debian.org>  Mon, 06 Feb 2012 23:27:38 +0100
 
+live-boot (3.0~a24-1+grml.2) grml-testing; urgency=low
+
+  [ Ulrich Dangel ]
+  * [87a8e76] Append nameservers provided via dns bootoption into
+    initramfs resolv.conf
+
+  [ Michael Prokop ]
+  * [1d25495] Add genext2fs to depends [Closes: issue1126] Thanks to
+    Charles A. Hewson for the bugreport
+
+ -- Michael Prokop <mika@grml.org>  Wed, 04 Jan 2012 16:48:38 +0100
+
+live-boot (3.0~a24-1+grml.1) grml-testing; urgency=low
+
+  * Resynchronized with Debian.
+
+  [ Christian Hofstaedtler ]
+  * Resynchronized with Debian.
+  * Drop upstream-applied patch: 01_fix_output_file
+  * Drop upstream-applied patch: 10_validateroot
+  * Drop upstream-applied patch: 25_support_lvm_for_live-media
+  * 07_support_findiso: remove upstream-applied parts
+  * Manually refreshd patch 31_package_rename
+
+  [ Ulrich Dangel ]
+  * Add kms modules to initramfs
+  * Install hook instead of specifying modules.d
+
+  [ Michael Prokop ]
+  * Try loading phram module twice to fix loading issue.
+
+ -- Christian Hofstaedtler <ch@grml.org>  Tue, 06 Dec 2011 22:26:32 +0100
+
 live-boot (3.0~a24-1) unstable; urgency=low
 
   * Removing quotes from udev path_id command to actually execute the
@@ -582,6 +685,38 @@ live-boot (3.0~a20-1) unstable; urgency=low
 
  -- Daniel Baumann <daniel@debian.org>  Thu, 04 Aug 2011 21:20:47 +0200
 
+live-boot (3.0~a19-1+grml.01) grml-testing; urgency=low
+
+  * Depend on quilt with a version to quiet lintian
+  * Add debian/control headers Origin, Bugs
+
+ -- Christian Hofstaedtler <ch@grml.org>  Wed, 30 Nov 2011 13:24:41 +0100
+
+live-boot (3.0~a19-1+grml.00) unstable; urgency=low
+
+  * Resync with Debian. This brings in:
+    [ Daniel Baumann ]
+    * Updating and correcting sendsigs.omit support for /run (Closes: #628188).
+    * Removing accidentally twice included English files when installing manpages.
+    * Correct rmdir call in top-level Makefiles uninstall target to not fail if there was no prior live-boot installation.
+    * Making references to debian more distribution neutral.
+    * Replacing reference to old alioth page in live-snapshot.
+    * Splitting out documentation so that it can be accesses separately from the initramfs code.
+    * Adding conflicts/replaces for live-boot to live-boot-doc to not break upgrades.
+
+  * Grml changes:
+    [ Ulrich Dangel ]
+    * [8424e93] Use quilt instead of dpatch
+    * [86ca4d5] Remove old manpage live-snapshot.it.1.txt
+    * [7fb9e91] Support comma delimited devices in live-media-path
+    * [6b21c57] Depend on the same live-boot-initramfs-tools/live-boot-backend version.
+  
+    [ Christian Hofstaedtler ]
+    * Rename packages to not clash with Debian.
+    * Resynced with Debian.
+
+ -- Christian Hofstaedtler <ch@grml.org>  Mon, 25 Jul 2011 02:26:40 +0200
+
 live-boot (3.0~a19-1) unstable; urgency=low
 
   * Correct rmdir call in top-level Makefiles uninstall target to not
@@ -604,6 +739,51 @@ live-boot (3.0~a18-1) unstable; urgency=low
 
  -- Daniel Baumann <daniel@debian.org>  Sat, 11 Jun 2011 11:24:15 +0200
 
+live-boot (3.0~a17-1+grml.01) unstable; urgency=low
+
+  * [6666658] Do not fail in multiarch environment when
+    installing libnss_dns.so.
+  * [ebdefd9] Drop installation of localized manpages
+    from upstream Makefile.
+
+ -- Michael Prokop <mika@grml.org>  Wed, 08 Jun 2011 12:15:23 +0200
+
+live-boot (3.0~a17-1+grml.00) unstable; urgency=low
+
+  [ Christian Hofstaedtler ]
+  * [c9a70fd] Add dpatch support to build process.
+  * [a9ddc0a] Readd Grml patches.
+  * [675f2b2] Remove unused boot scripts.
+  * [c4993d4] Update debian/control for Grml.
+  * [0716b66] Ensure 10validateroot is executable.
+  * [b5b937f] Always honor the "nodhcp" boot option.
+  * [10cf847] Don't mess around with kernel/initramfs-tools' ip=.
+  * [aa93321] Networking_grml: DNS for systems without resolvconf.
+  * [2a859b8] Merge dhcphostname support into 23networking-grml.
+  * [10caf0b] Support DNS in boot environment.
+
+  [ Michael Prokop ]
+  * [6cd3977] Add patch number 19 to revert the toram bootoption
+    to expected behaviour.
+  * [65fa11b] Support dns bootoption.
+
+  [ Ulrich Dangel ]
+  * [df17b43] Support lvm devices for live-media.
+  * [8ff045c] Support raid devices as well.
+  * [2ad3c30] Change output to live-boot.log.
+  * [34b4518] Explicit specify offset parameter for setup_loop.
+    [Closes: issue1003]
+  * [3ac64e5] Remove dba from uploader as this is a Grml project.
+  * [b289379] Support static ip configuration.
+  * [1371673] Improve static version.
+  * [9487c5d] Change nodhcp patch to unset the DHCP option as well.
+  * [1662374] Support nodhcp bootoption.
+  * [7847abd] Ignore devices with no file matching the findiso parameter.
+  * [7158e84] Don't show an error message if /live/image is already
+    unmounted.
+
+ -- Michael Prokop <mika@grml.org>  Sun, 05 Jun 2011 21:29:14 +0200
+
 live-boot (3.0~a17-1) unstable; urgency=low
 
   [ Daniel Baumann ]
index f0f1948..d60958b 100644 (file)
@@ -1,18 +1,22 @@
 Source: live-boot
 Section: misc
 Priority: optional
-Maintainer: Debian Live Project <debian-live@lists.debian.org>
-Uploaders: Daniel Baumann <daniel@debian.org>
-Build-Depends: debhelper (>= 9)
+Maintainer: Grml Team <team@grml.org>
+Build-Depends: debhelper (>= 9), quilt (>= 0.46-7~)
 Standards-Version: 3.9.4
 Homepage: http://live.debian.net/devel/live-boot/
-Vcs-Browser: http://live.debian.net/gitweb/?p=live-boot.git
-Vcs-Git: git://live.debian.net/git/live-boot.git
+Vcs-Browser: http://git.grml.org/?p=live-boot-grml.git
+Vcs-Git: git://git.grml.org/live-boot-grml.git
+Origin: Grml
+Bugs: mailto:bugs@grml.org
 
-Package: live-boot
+Package: live-boot-grml
 Architecture: all
-Depends: ${misc:Depends}, live-boot-initramfs-tools | live-boot-backend
-Recommends: live-boot-doc, eject, file, rsync, uuid-runtime
+Depends: ${misc:Depends}, genext2fs, live-boot-grml-initramfs-tools
+Recommends: live-boot-grml-doc, eject, file, rsync, uuid-runtime
+Conflicts: live-boot
+Replaces: live-boot
+Provides: live-boot
 Suggests: curlftpfs, cryptsetup, httpfs2, unionfs-fuse, wget
 Description: Debian Live - System Boot Scripts
  live-boot contains the scripts that configure a Debian Live system during the
@@ -20,28 +24,42 @@ Description: Debian Live - System Boot Scripts
  .
  In addition to live-boot, a backend for the initrd generation is required, such
  as live-boot-initramfs-tools.
+ .
+ Please notice that this package is maintained by the grml.org team.
+ This is NOT a fork of Debian's live-boot, it's just a customized
+ version to better fit Grml's needs.
 
-Package: live-boot-doc
+Package: live-boot-grml-doc
 Section: doc
 Architecture: all
 Depends: ${misc:Depends}
-Conflicts: live-boot (<< 3.0~a18~)
-Replaces: live-boot
+Conflicts: live-boot (<< 3.0~a18~), live-boot-doc
+Replaces: live-boot, live-boot-doc
+Provides: live-boot-doc
 Description: Debian Live - System Boot Scripts (documentation)
  live-boot contains the scripts that configure a Debian Live system during the
  boot process (early userspace).
  .
  This package contains the documentation.
+ .
+ Please notice that this package is maintained by the grml.org team.
+ This is NOT a fork of Debian's live-boot, it's just a customized
+ version to better fit Grml's needs.
 
-Package: live-boot-initramfs-tools
+Package: live-boot-grml-initramfs-tools
 Architecture: all
 Depends:
  ${misc:Depends}, busybox | busybox-initramfs, initramfs-tools, udev
 Conflicts: live-boot-backend
 Replaces: live-boot-backend
 Provides: live-boot-backend
+Breaks: klibc-utils (<< 2.0-2)
 Description: Debian Live - System Boot Scripts (initramfs-tools backend)
  live-boot contains the scripts that configure a Debian Live system during the
  boot process (early userspace).
  .
  This package contains the initramfs-tools backend.
+ .
+ Please notice that this package is maintained by the grml.org team.
+ This is NOT a fork of Debian's live-boot, it's just a customized
+ version to better fit Grml's needs.
diff --git a/debian/live-boot-grml-initramfs-tools.triggers b/debian/live-boot-grml-initramfs-tools.triggers
new file mode 100644 (file)
index 0000000..6c9f454
--- /dev/null
@@ -0,0 +1 @@
+activate update-initramfs
diff --git a/debian/live-boot-grml.init b/debian/live-boot-grml.init
new file mode 100644 (file)
index 0000000..5799c44
--- /dev/null
@@ -0,0 +1,250 @@
+#!/bin/sh
+
+### BEGIN INIT INFO
+# Provides:            live-boot
+# Required-Start:      $syslog bootmisc
+# Required-Stop:
+# Should-Start:                $local_fs
+# Should-Stop:         halt reboot
+# X-Stop-After:                umountroot
+# Default-Start:       S
+# Default-Stop:                0 6
+# Short-Description:   live-boot init script
+# Description:         Resyncs snapshots, evantually caches files in order to
+#                      let remove the media.
+### END INIT INFO
+
+# Authors: Tollef Fog Heen <tfheen@canonical.com>
+#         Marco Amadori <marco.amadori@gmail.com>
+
+PATH=/usr/sbin:/usr/bin:/sbin:/bin
+NAME=live-boot
+SCRIPTNAME=/etc/init.d/${NAME}
+DO_SNAPSHOT=/sbin/live-snapshot
+SNAPSHOT_CONF="/etc/live/boot.d/snapshot.conf"
+
+# Exit if system was not booted by live-boot
+grep -qs boot=live /proc/cmdline || exit 0
+
+# Read snapshot configuration variables
+[ -r ${SNAPSHOT_CONF} ] && . ${SNAPSHOT_CONF}
+
+# Load the VERBOSE setting and other rcS variables
+[ -f /etc/default/rcS ] && . /etc/default/rcS
+
+# Define LSB log_* functions.
+# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
+. /lib/lsb/init-functions
+
+# Try to cache everything we're likely to need after ejecting.  This
+# is fragile and simple-minded, but our options are limited.
+cache_path()
+{
+       path="${1}"
+
+       if [ -d "${path}" ]
+       then
+               find "${path}" -type f | xargs cat > /dev/null 2>&1
+       elif [ -f "${path}" ]
+       then
+               if file -L "${path}" | grep -q 'dynamically linked'
+               then
+                       # ldd output can be of three forms:
+                       # 1. linux-vdso.so.1 =>  (0x00007fffe3fb4000)
+                       #    This is a virtual, kernel shared library and we want to skip it
+                       # 2. libc.so.6 => /lib/libc.so.6 (0x00007f5e9dc0c000)
+                       #    We want to cache the third word.
+                       # 3. /lib64/ld-linux-x86-64.so.2 (0x00007f5e9df8b000)
+                       #    We want to cache the first word.
+                       ldd "${path}" | while read line
+                       do
+                               if echo "$line" | grep -qs ' =>  '
+                               then
+                                       continue
+                               elif echo "$line" | grep -qs ' => '
+                               then
+                                       lib=$(echo "${line}" | awk '{ print $3 }')
+                               else
+                                       lib=$(echo "${line}" | awk '{ print $1 }')
+                               fi
+                               cache_path "${lib}"
+                       done
+               fi
+
+               cat "${path}" >/dev/null 2>&1
+       fi
+}
+
+get_boot_device()
+{
+       # search in /proc/mounts for the device that is mounted at /live/image
+       while read DEVICE MOUNT REST
+       do
+               if [ "${MOUNT}" = "/live/image" ]
+               then
+                       echo "${DEVICE}"
+                       exit 0
+               fi
+       done < /proc/mounts
+}
+
+device_is_USB_flash_drive()
+{
+       # remove leading "/dev/" and all trailing numbers from input
+       DEVICE=$(expr substr ${1} 6 3)
+
+       # check that device starts with "sd"
+       [ "$(expr substr ${DEVICE} 1 2)" != "sd" ] && return 1
+
+       # check that the device is an USB device
+       if readlink /sys/block/${DEVICE} | grep -q usb
+       then
+               return 0
+       fi
+
+       return 1
+}
+
+do_stop ()
+{
+       if ! grep -qs nopersistent /proc/cmdline && grep -qs persistent /proc/cmdline
+       then
+               # ROOTSNAP and HOMESNAP are defined in ${SNAPSHOT_CONF} file
+               if [ ! -z "${ROOTSNAP}" ]
+               then
+                       ${DO_SNAPSHOT} --resync-string="${ROOTSNAP}"
+               fi
+
+               if [ ! -z "${HOMESNAP}" ]
+               then
+                       ${DO_SNAPSHOT} --resync-string="${HOMESNAP}"
+               fi
+       fi
+
+       # check for netboot
+       if [ ! -z "${NETBOOT}" ] || grep -qs netboot /proc/cmdline || grep -qsi root=/dev/nfs /proc/cmdline  || grep -qsi root=/dev/cifs /proc/cmdline
+       then
+               return 0
+       fi
+
+       # check for toram
+       if grep -qs toram /proc/cmdline
+       then
+               return 0
+       fi
+
+       # Don't prompt to eject the SD card on Babbage board, where we reuse it
+       # as a quasi-boot-floppy. Technically this uses a bit of ubiquity
+       # (archdetect), but since this is mostly only relevant for
+       # installations, who cares ...
+       if type archdetect >/dev/null 2>&1
+       then
+               subarch="$(archdetect)"
+
+               case $subarch in
+                       arm*/imx51)
+                               return 0
+                               ;;
+               esac
+       fi
+
+       prompt=1
+       if [ "${NOPROMPT}" = "Yes" ]
+       then
+               prompt=
+       fi
+
+       for path in $(which halt) $(which reboot) /etc/rc?.d /etc/default $(which stty) /bin/plymouth
+       do
+               cache_path "${path}"
+       done
+
+       for x in $(cat /proc/cmdline)
+       do
+               case ${x} in
+                       quickreboot)
+                               QUICKREBOOT="Yes"
+                               ;;
+               esac
+       done
+
+       mount -o remount,ro /live/cow
+
+       if [ -z ${QUICKREBOOT} ]
+       then
+
+               # Exit if the system was booted from an ISO image rather than a physical CD
+               grep -qs find_iso= /proc/cmdline && return 0
+               # TODO: i18n
+               BOOT_DEVICE="$(get_boot_device)"
+
+               if device_is_USB_flash_drive ${BOOT_DEVICE}
+               then
+                       # do NOT eject USB flash drives!
+                       # otherwise rebooting with most USB flash drives
+                       # failes because they actually remember the
+                       # "ejected" state even after reboot
+                       MESSAGE="Please remove the USB flash drive"
+
+                       if [ "${NOPROMPT}" = "usb" ]
+                       then
+                               prompt=
+                       fi
+
+               else
+                       # ejecting is a very good idea here
+                       MESSAGE="Please remove the disc, close the tray (if any)"
+
+                       if [ -x /usr/bin/eject ]
+                       then
+                               eject -p -m /live/image >/dev/null 2>&1
+                       fi
+
+                       if [ ${NOPROMPT} = "cd" ]
+                       then
+                               prompt=
+                       fi
+
+               fi
+
+               [ "$prompt" ] || return 0
+
+               if [ -x /bin/plymouth ] && plymouth --ping
+               then
+                       plymouth message --text="${MESSAGE} and press ENTER to continue:"
+                       plymouth watch-keystroke > /dev/null
+               else
+                       stty sane < /dev/console
+
+                       printf "\n\n${MESSAGE} and press ENTER to continue:" > /dev/console
+
+                       read x < /dev/console
+               fi
+       fi
+}
+
+case "${1}" in
+       start|restart|reload|force-reload|status)
+               [ "${VERBOSE}" != no ] && log_end_msg 0
+               ;;
+
+       stop)
+               log_begin_msg "${NAME} is resyncing snapshots and caching reboot files..."
+               do_stop
+
+               case "${?}" in
+                       0|1)
+                               [ "${VERBOSE}" != no ] && log_end_msg 0
+                               ;;
+
+                       2)
+                               [ "${VERBOSE}" != no ] && log_end_msg 1
+                               ;;
+               esac
+               ;;
+
+       *)
+               log_success_msg "Usage: ${SCRIPTNAME} {start|stop|restart|force-reload}" >&2
+               exit 3
+               ;;
+esac
diff --git a/debian/live-boot-grml.lintian-overrides b/debian/live-boot-grml.lintian-overrides
new file mode 100644 (file)
index 0000000..001198f
--- /dev/null
@@ -0,0 +1,4 @@
+# false positives, not applicable to live systems
+live-boot-grml: init.d-script-missing-dependency-on-remote_fs /etc/init.d/live-boot-grml: required-start
+live-boot-grml: init.d-script-missing-dependency-on-remote_fs /etc/init.d/live-boot-grml: required-stop
+live-boot-grml: init.d-script-possible-missing-stop /etc/init.d/live-boot-grml 1
diff --git a/debian/patches/03_grml_version_file_hook.patch b/debian/patches/03_grml_version_file_hook.patch
new file mode 100644 (file)
index 0000000..a71db7f
--- /dev/null
@@ -0,0 +1,23 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 03_grml_version_file_hook.dpatch by <mika@grml.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Copy /etc/grml_version to initrd
+
+@DPATCH@
+
+--- a/hooks/live
++++ b/hooks/live
+@@ -40,6 +40,12 @@
+       done
+ fi
++# Grml version information:
++if [ -r /etc/grml_version ]
++then
++       cp /etc/grml_version "${DESTDIR}"/etc
++fi
++
+ # Handling live-boot
+ if [ ! -e /usr/share/live-boot ]
diff --git a/debian/patches/05_boot_failure_message_grml.patch b/debian/patches/05_boot_failure_message_grml.patch
new file mode 100644 (file)
index 0000000..1e31090
--- /dev/null
@@ -0,0 +1,36 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 05_boot_failure_message_grml.dpatch by  <mika@grml.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Copy /etc/grml_version to initrd
+
+@DPATCH@
+
+--- a/scripts/live-functions
++++ b/scripts/live-functions
+@@ -88,14 +88,20 @@
+       printf "     ${DEB_1}\n"
+       printf "     ${DEB_2}  \033[1;37mBOOT FAILED!\033[0m\n"
+       printf "     ${DEB_3}\n"
+-      printf "     ${DEB_4}  This Debian Live image failed to boot.\n\n"
++      printf "     ${DEB_4}  This image failed to boot.\n\n"
+-      printf "  Please file a bug against the 'live-boot' package or email the Debian\n"
+-      printf "  Live mailing list at <debian-live@lists.debian.org>, making sure to note the\n"
+-      printf "  exact version, name and distribution of the image you were attempting to boot.\n\n"
++      printf "  Please file a bug at your distributors bug tracking system, making\n"
++      printf "  sure to note the exact version, name and distribution of the image\n"
++      printf "  you were attempting to boot.\n\n"
++
++      if [ -r /etc/grml_version ]
++      then
++              GRML_VERSION="$(cat /etc/grml_version)"
++              printf "  $GRML_VERSION\n\n"
++      fi
+       printf "  The file ${LIVELOG} contains some debugging information but booting with the\n"
+-      printf "  ${DEBUG} command-line parameter will greatly increase its verbosity which is\n"
++      printf "  ${DEBUG}=1 command-line parameter will greatly increase its verbosity which is\n"
+       printf "  extremely useful when diagnosing issues.\n\n"
+       if [ -n "${panic}" ]; then
diff --git a/debian/patches/08_grml_defaults.patch b/debian/patches/08_grml_defaults.patch
new file mode 100644 (file)
index 0000000..124b1b0
--- /dev/null
@@ -0,0 +1,18 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 08_grml_defaults.dpatch by Christian Hofstaedtler <ch@grml.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Pseudo-brand as grml
+
+@DPATCH@
+--- a/scripts/live
++++ b/scripts/live
+@@ -11,7 +11,7 @@
+ alt_mountpoint="/media"
+ LIVE_MEDIA_PATH="live"
+-HOSTNAME="host"
++HOSTNAME="grml"
+ mkdir -p "${mountpoint}"
+ tried="/tmp/tried"
diff --git a/debian/patches/11_dhcphostname.patch b/debian/patches/11_dhcphostname.patch
new file mode 100644 (file)
index 0000000..7a01b1d
--- /dev/null
@@ -0,0 +1,27 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 11_dhcphostname.dpatch by Andreas Thienemann <andreas@bawue.net>
+## and Michael Prokop <mika@grml.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Support disabling setting hostname via DNS info
+
+@DPATCH@
+
+Support 'nodhcphostname' option which will disable setting the
+hostname of the booted system according to the DNS information.
+This patch takes care of the netboot case.
+
+--- a/scripts/live-helpers
++++ b/scripts/live-helpers
+@@ -202,6 +202,11 @@
+                               export NOACCESSIBILITY
+                               ;;
++                      nodhcphostname)
++                              NODHCPHOSTNAME="Yes"
++                              export NODHCPHOSTNAME
++                              ;;
++
+                       nofastboot)
+                               NOFASTBOOT="Yes"
+                               export NOFASTBOOT
diff --git a/debian/patches/12_uuid_support.patch b/debian/patches/12_uuid_support.patch
new file mode 100644 (file)
index 0000000..3d66672
--- /dev/null
@@ -0,0 +1,114 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 12_uuid_support.dpatch by Michael Prokop <prokop@grml-forensic.org>
+##
+## DP: This patch enables support for verifying the ISO through bootid=.... bootoption.
+## DP: Logic behind bootoptions and possible combinations:
+## DP: * bootid.txt + wrong bootid=...                    => fails to boot
+## DP: * bootid.txt + right bootid=...                    => boots
+## DP: * bootid.txt + ignore_bootid                       => boots
+## DP: * bootid.txt + no bootid=... + no ignore_bootid    => fails to boot
+## DP: * no bootid.txt + no bootid=... + no ignore_bootid => boots
+## DP: * no bootid.txt + bootid=...                       => fails to boot
+## DP: * no bootid.txt + ignore_bootid=...                => boots
+
+@DPATCH@
+--- a/scripts/live
++++ b/scripts/live
+@@ -52,6 +52,42 @@
+       return 1
+ }
++grml_match_bootid()
++{
++      path="$1"
++
++      if [ -n "$IGNORE_BOOTID" ] ; then
++              echo " * Ignoring verification of bootid.txt as requested via ignore_bootid.">>/live-boot.log
++              return 0
++      fi
++
++      if [ -n "$BOOTID" ] && ! [ -r "${path}/conf/bootid.txt" ] ; then
++              echo "  * Warning: bootid=... specified but no bootid.txt found on currently requested device.">>/live-boot.log
++              return 1
++      fi
++
++      [ -r "${path}/conf/bootid.txt" ] || return 0
++
++      bootid_conf=$(cat "${path}/conf/bootid.txt")
++
++      if [ -z "$BOOTID" -a -z "$IGNORE_BOOTID" ]
++      then
++              echo " * Warning: bootid.txt found but ignore_bootid / bootid=.. bootoption missing...">>/live-boot.log
++              return 1
++      fi
++
++      if [ "$BOOTID" = "$bootid_conf" ]
++      then
++              echo " * Successfully verified /conf/bootid.txt from ISO, continuing... ">>/live-boot.log
++      else
++              echo " * Warning: BOOTID of ISO does not match. Retrying and continuing search...">>/live-boot.log
++              return 1
++      fi
++
++      return 0
++}
++
++
+ matches_uuid ()
+ {
+       if [ "${IGNORE_UUID}" ] || [ ! -e /conf/uuid.conf ]
+@@ -1350,7 +1386,7 @@
+               fi
+               if is_live_path ${mountpoint} && \
+-                      ([ "${skip_uuid_check}" ] || matches_uuid ${mountpoint})
++                      ([ "${skip_uuid_check}" ] || grml_match_bootid ${mountpoint})
+               then
+                       echo ${mountpoint}
+                       return 0
+@@ -1446,19 +1482,6 @@
+                                       return 0
+                               fi
+                       done
+-              elif [ "${fstype}" = "squashfs" -o \
+-                      "${fstype}" = "btrfs" -o \
+-                      "${fstype}" = "ext2" -o \
+-                      "${fstype}" = "ext3" -o \
+-                      "${fstype}" = "ext4" -o \
+-                      "${fstype}" = "jffs2" ]
+-              then
+-                      # This is an ugly hack situation, the block device has
+-                      # an image directly on it.  It's hopefully
+-                      # live-boot, so take it and run with it.
+-                      ln -s "${devname}" "${devname}.${fstype}"
+-                      echo "${devname}.${fstype}"
+-                      return 0
+               fi
+       done
+--- a/scripts/live-helpers
++++ b/scripts/live-helpers
+@@ -45,6 +45,11 @@
+                               export ACCESS
+                               ;;
++                      bootid=*)
++                              BOOTID="${ARGUMENT#bootid=}"
++                              export BOOTID
++                              ;;
++
+                       console=*)
+                               DEFCONSOLE="${ARGUMENT#*=}"
+                               export DEFCONSOLE
+@@ -126,6 +131,11 @@
+                               export FROMISO
+                               ;;
++                      ignore_bootid)
++                              IGNORE_BOOTID="Yes"
++                              export IGNORE_BOOTID
++                              ;;
++
+                       ignore_uuid)
+                               IGNORE_UUID="Yes"
+                               export IGNORE_UUID
diff --git a/debian/patches/13_always_display_warnings_and_failures.patch b/debian/patches/13_always_display_warnings_and_failures.patch
new file mode 100644 (file)
index 0000000..31277f5
--- /dev/null
@@ -0,0 +1,29 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 13_always_display_warnings_and_failures.dpatch by Michael Prokop <mika@grml.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Always display failure and warning messages.
+
+@DPATCH@
+Index: b/scripts/live-functions
+===================================================================
+--- a/scripts/live-functions   2011-07-24 22:07:56.000000000 +0200
++++ b/scripts/live-functions   2011-07-24 22:08:04.000000000 +0200
+@@ -2,6 +2,17 @@
+ . /scripts/functions
+ . /live.vars
++# we definitely want this stuff visible
++log_failure_msg()
++{
++        printf "Failure: $@\n"
++}
++
++log_warning_msg()
++{
++        printf "Warning: $@\n"
++}
++
+ log_wait_msg ()
+ {
+       # Print a message and wait for enter
diff --git a/debian/patches/15_networking_grml.patch b/debian/patches/15_networking_grml.patch
new file mode 100644 (file)
index 0000000..ca1f9c4
--- /dev/null
@@ -0,0 +1,121 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 15_networking_grml.dpatch by Christian Hofstaedtler <ch@grml.org>
+## Licensed under GPLv2+.
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Ship our own networking script, which is compatible with the kernel's
+## DP: notion of ip= as well as resolvconf.
+
+@DPATCH@
+
+diff a/scripts/live-bottom/23networking_grml b/scripts/live-bottom/23networking_grml
+--- /dev/null
++++ b/scripts/live-bottom/23networking_grml
+@@ -0,0 +1,107 @@
++#!/bin/sh
++
++#set -e
++
++# initramfs-tools header
++
++PREREQ=""
++
++prereqs()
++{
++   echo "${PREREQ}"
++}
++
++case "${1}" in
++   prereqs)
++      prereqs
++      exit 0
++   ;;
++esac
++
++. /scripts/live-functions
++
++if [ -n "${NONETWORKING}" ]; then
++   exit 0
++fi
++
++modprobe af_packet # req'd for DHCP
++
++# initialize udev
++# (this /might/ be required for firmware loading to complete)
++if grep -q noudev /proc/cmdline; then
++   log_begin_msg "Networking: Skipping udev as requested via bootoption noudev."
++else
++   udevadm trigger
++   udevadm settle
++fi
++
++if [ -n "${IP}" ]; then
++   # call into initramfs-tools provided network setup functions, so basic
++   # networking is fine.
++   log_begin_msg "Networking: Waiting for basic network to come up..."
++   configure_networking
++fi
++
++# prepare a new /etc/network/interfaces file (and, possibly, a new /etc/resolv.conf)
++IFFILE="/root/etc/network/interfaces"
++RESOLVCONF="/root/etc/resolv.conf"
++
++# config for loopback networking
++cat > $IFFILE << EOF
++# Initially generated on boot by initramfs' 23networking.
++
++auto lo
++iface lo inet loopback
++
++EOF
++
++unset HOSTNAME
++
++# generate config for each present network device
++for interface in /sys/class/net/eth* /sys/class/net/ath* /sys/class/net/wlan*; do
++    [ -e ${interface} ] || continue
++    interface=$(basename ${interface})
++    method="dhcp"
++
++    # NODHCP or a previously run ipconfig mean that ifupdown should never
++    # touch this interface (IP-stack wise).
++    netconfig=/run/net-${interface}.conf
++    if [ -n "$NODHCP" ] || [ -e "${netconfig}" ]; then
++        method="manual"
++    fi
++
++    cat >> $IFFILE << EOF
++allow-hotplug ${interface}
++iface ${interface} inet ${method}
++EOF
++
++    # DNS for resolvconf and /etc/resolv.conf
++    if [ -e "${netconfig}" ]; then
++        . "${netconfig}"
++        if [ -n "${DNSDOMAIN}" ]; then
++            echo "    dns-search ${DNSDOMAIN}" >> $IFFILE
++        fi
++        # make sure we don't have any 0.0.0.0 nameservers
++        IPV4DNSLIST=""
++        for IPV4DNS in ${IPV4DNS0} ${IPV4DNS1}; do
++            [ -n "${IPV4DNS}" ] || continue
++            [ "${IPV4DNS}" != "0.0.0.0" ] || continue
++            IPV4DNSLIST="${IPV4DNSLIST}${IPV4DNS} "
++        done
++        if [ -n "${IPV4DNSLIST}" ]; then
++            echo "    dns-nameservers ${IPV4DNSLIST}" >> $IFFILE
++            for IPV4DNS in ${IPV4DNSLIST}; do
++                echo "nameserver ${IPV4DNS}" >> $RESOLVCONF
++            done
++        fi
++    fi
++
++    if [ -z "$NODHCPHOSTNAME" -a -n "$HOSTNAME" ]; then
++        echo $HOSTNAME > /root/etc/hostname
++    fi
++
++    unset DEVICE IPV4ADDR IPV4BROADCAST IPV4NETMASK IPV4GATEWAY IPV4DNS0 IPV4DNS1 HOSTNAME DNSDOMAIN NISDOMAIN ROOTSERVER ROOTPATH filename
++    unset IPV4DNS IPV4DNSLIST
++
++    echo>> $IFFILE
++done
diff --git a/debian/patches/16_nodhcp.patch b/debian/patches/16_nodhcp.patch
new file mode 100644 (file)
index 0000000..2a5aaf3
--- /dev/null
@@ -0,0 +1,19 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 16_nodhcp.dpatch by Ulrich Dangel <mru@grml.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Handle explicit "nodhcp"
+
+@DPATCH@
+
+--- a/scripts/live-helpers
++++ b/scripts/live-helpers
+@@ -75,6 +75,8 @@
+                       nodhcp)
+                               unset DHCP
++                              NODHCP="Yes"
++                              export NODHCP
+                               ;;
+                       ethdevice=*)
diff --git a/debian/patches/19_revert_toram_bootoption_to_expected_behaviour.patch b/debian/patches/19_revert_toram_bootoption_to_expected_behaviour.patch
new file mode 100644 (file)
index 0000000..5af0b48
--- /dev/null
@@ -0,0 +1,50 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 19_revert_toram_bootoption_to_expected_behaviour.dpatch by Michael Prokop <mika@grml.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Revert toram bootoption to expected behaviour.
+## DP:
+## DP: In commit 36bb11382c81d5bce4b69f6d3d618dfd1c38dffb
+## DP: of live-initramfs-grml (when merging Debian's version 1.157.4-1)
+## DP: the behaviour of toram bootoption was modified, see
+## DP: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=534878
+## DP:
+## DP: On Grml we want to have the option to load the whole medium
+## DP: into RAM to e.g. have additional directories like /deb,
+## DP: /scripts or whatever. This is possible using the toram bootoption
+## DP: without any additional arguments.
+## DP:
+## DP: If you do NOT want to load the whole medium to RAM just
+## DP: boot using toram=grml.squashfs (or whatever it's named,
+## DP: there's a ready-to-use bootoption in Grml's bootsplash
+## DP: menu available) instead.
+## DP:
+## DP: Ammusingly the requested behaviour is available in Debian's
+## DP: live-boot if rsync is not available, so this patch
+## DP: actually just unifies the code paths and reverts the
+## DP: behaviour change back to what the log message says.
+
+@DPATCH@
+
+index d79beed..1b6926e 100755
+--- a/scripts/live
++++ b/scripts/live
+@@ -202,7 +202,7 @@
+       if [ -z "${MODULETORAM}" ]
+       then
+-              size=$(fs_size "" ${copyfrom}/${LIVE_MEDIA_PATH} "used")
++              size=$(fs_size "" ${copyfrom}/ "used")
+       else
+               MODULETORAMFILE="${copyfrom}/${LIVE_MEDIA_PATH}/${MODULETORAM}"
+@@ -278,8 +278,7 @@
+                               echo " * Copying whole medium to RAM" 1>/dev/console
+                               rsync -a --progress ${copyfrom}/* ${copyto} 1>/dev/console  # "cp -a" from busybox also copies hidden files
+                       else
+-                              mkdir -p ${copyto}/${LIVE_MEDIA_PATH}
+-                              cp -a ${copyfrom}/${LIVE_MEDIA_PATH}/* ${copyto}/${LIVE_MEDIA_PATH}
++                              cp -a ${copyfrom}/* ${copyto}/
+                               if [ -e ${copyfrom}/${LIVE_MEDIA_PATH}/.disk ]
+                               then
+                                       cp -a ${copyfrom}/${LIVE_MEDIA_PATH}/.disk ${copyto}
diff --git a/debian/patches/26_support_dns_bootoption.patch b/debian/patches/26_support_dns_bootoption.patch
new file mode 100644 (file)
index 0000000..2a5c862
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 26_support_dns_bootoption.dpatch by Michael Prokop <mika@grml.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: Support dns bootoption. Usage examples: dns=8.8.8.8 / dns=8.8.8.8,1.2.3.4
+
+@DPATCH@
+--- a/scripts/live
++++ b/scripts/live
+@@ -429,7 +429,7 @@
+                               echo "search ${DNSDOMAIN}" >> /etc/resolv.conf
+                       fi
+-                      for i in ${IPV4DNS0} ${IPV4DNS1} ${IPV4DNS1}
++                      for i in ${IPV4DNS0} ${IPV4DNS1} ${IPV4DNS1} ${DNSSERVER1} ${DNSSERVER2}
+                       do
+                               if [ -n "$i" ] && [ "$i" != 0.0.0.0 ]
+                               then
+--- a/scripts/live-bottom/23networking_grml
++++ b/scripts/live-bottom/23networking_grml
+@@ -44,7 +44,12 @@
+ # prepare a new /etc/network/interfaces file (and, possibly, a new /etc/resolv.conf)
+ IFFILE="/root/etc/network/interfaces"
+-RESOLVCONF="/root/etc/resolv.conf"
++if [ -L /root/etc/resolv.conf ] ; then
++  # assume we have resolvconf
++  RESOLVCONF=/root/etc/resolvconf/resolv.conf.d/base
++else
++  RESOLVCONF="/root/etc/resolv.conf"
++fi
+ # config for loopback networking
+ cat > $IFFILE << EOF
+@@ -105,3 +110,17 @@
+     echo>> $IFFILE
+ done
++
++# dns bootoption
++if [ -n "$DNSSERVER1" ]
++then
++      # disable any existing entries
++      if [ -r $RESOLVCONF ]
++      then
++              sed -i 's/nameserver/# nameserver/' $RESOLVCONF
++      fi
++      for i in $DNSSERVER1 $DNSSERVER2
++      do
++              echo "nameserver $i" >> $RESOLVCONF
++      done
++fi
+--- a/scripts/live-helpers
++++ b/scripts/live-helpers
+@@ -59,6 +59,19 @@
+                               BOOTIF="${x#BOOTIF=}"
+                               ;;
++                      dns=*)
++                              DNSSERVER="${ARGUMENT#*=}"
++                              if echo "${DNSSERVER}" | grep -q , ; then
++                                      DNSSERVER1="${DNSSERVER%,*}"
++                                      DNSSERVER2="${DNSSERVER#*,}"
++                                      export DNSSERVER1 DNSSERVER2
++                              else
++                                      DNSSERVER1="$DNSSERVER"
++                                      export DNSSERVER1
++                              fi
++                              unset DNSSERVER
++                              ;;
++
+                       debug)
+                               DEBUG="Yes"
+                               export DEBUG
diff --git a/debian/patches/27_support_static_ip.patch b/debian/patches/27_support_static_ip.patch
new file mode 100644 (file)
index 0000000..a3fbdb5
--- /dev/null
@@ -0,0 +1,173 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 27_support_staticip.dpatch by  <mru@grml.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
+
+--- a/scripts/live
++++ b/scripts/live
+@@ -294,6 +294,24 @@
+       return 0
+ }
++get_ipconfig_para()
++{
++      if [ $# != 1 ] ; then
++              echo "Missin parameter for $0"
++              return
++      fi
++      devname=$1
++      for ip in ${STATICIP} ; do
++              case $ip in
++                      *:$devname:*)
++                      echo $ip
++                      return
++                      ;;
++              esac
++      done
++      echo $devname
++}
++
+ do_netsetup ()
+ {
+       modprobe -q af_packet # For DHCP
+@@ -304,9 +322,19 @@
+       [ -n "$ETHDEV_TIMEOUT" ] || ETHDEV_TIMEOUT=15
+       echo "Using timeout of $ETHDEV_TIMEOUT seconds for network configuration."
+-      if [ -z "${NETBOOT}" ] && [ -z "${FETCH}" ] && \
+-         [ -z "${HTTPFS}" ] && [ -z "${FTPFS}" ]
+-      then
++      # Our modus operandi for getting a working network setup is this:
++      # * If ip=* is set, pass that to ipconfig and be done
++      # * Else, try dhcp on all devices in this order:
++      #   ethdevice= bootif= <all interfaces>
++
++      ALLDEVICES="$(cd /sys/class/net/ && ls -1 2>/dev/null | grep -v '^lo$' )"
++
++      # Turn on all interfaces before doing anything, to avoid timing problems
++      # during link negotiation.
++      echo "Net: Turning on all device links..."
++      for device in ${ALLDEVICES}; do
++              ipconfig -c none -d $device -t 1 2>/dev/null >/dev/null
++      done
+       # support for Syslinux IPAPPEND parameter
+@@ -349,7 +377,7 @@
+                               if [ "$bootif_mac" = "$current_mac" ]
+                               then
+-                                      DEVICE=${device##*/}
++                                      ETHDEVICE="${device##*/},$ETHDEVICE" # use ethdevice
+                                       break
+                               fi
+                       fi
+@@ -361,12 +389,7 @@
+       # for *every* present network device (except for loopback of course)
+       if [ -z "$ETHDEVICE" ] ; then
+               echo "If you want to boot from a specific device use bootoption ethdevice=..."
+-              for device in /sys/class/net/*; do
+-                      dev=${device##*/} ;
+-                      if [ "$dev" != "lo" ] ; then
+-                              ETHDEVICE="$ETHDEVICE $dev"
+-                      fi
+-              done
++        ETHDEVICE="$ALLDEVICES"
+       fi
+       # split args of ethdevice=eth0,eth1 into "eth0 eth1"
+@@ -374,43 +397,34 @@
+               devlist="$devlist $device"
+       done
+-      # this is tricky (and ugly) because ipconfig sometimes just hangs/runs into
+-      # an endless loop; iff execution fails give it two further tries, that's
+-      # why we use '$devlist $devlist $devlist' for the other for loop
+-      for dev in $devlist $devlist $devlist ; do
+-              echo "Executing ipconfig -t $ETHDEV_TIMEOUT $dev"
+-              ipconfig -t "$ETHDEV_TIMEOUT" $dev | tee -a /netboot.config &
+-              jobid=$!
+-              sleep "$ETHDEV_TIMEOUT" ; sleep 1
+-              if [ -r /proc/"$jobid"/status ] ; then
+-                      echo "Killing job $jobid for device $dev as ipconfig ran into recursion..."
+-                      kill -9 $jobid
++      for dev in $devlist ; do
++              param="$(get_ipconfig_para $dev)"
++              if [ -n "$NODHCP" ] && [ "$param" = "$dev" ] ; then
++                      echo "Ignoring network device $dev due to nodhcp." | tee -a /live-boot.log
++                      continue
+               fi
++              echo "Executing ipconfig -t $ETHDEV_TIMEOUT $param"
++              ipconfig -t "$ETHDEV_TIMEOUT" "$param" | tee -a /netboot.config
+               # if configuration of device worked we should have an assigned
+               # IP address, iff so let's use the according as $DEVICE for later usage
+               # simple and primitive approach which seems to work fine
+-              if ifconfig $dev | grep -q 'inet.*addr:' ; then
+-                      export DEVICE="$dev"
+-                      break
++              IPV4ADDR="0.0.0.0"
++              if [ -e "/run/net-${device}.conf" ]; then
++                      . /run/net-${device}.conf
++              fi
++              if [ "${IPV4ADDR}" != "0.0.0.0" ]; then
++                      export DEVICE="$dev $DEVICE"
++                      # break  # exit loop as we just use the irst
+               fi
+-      done
+-      else
+-              for interface in ${DEVICE}; do
+-                      ipconfig -t "$ETHDEV_TIMEOUT" ${interface} | tee /netboot-${interface}.config
+-                      [ -e /tmp/net-${interface}.conf ] && . /tmp/net-${interface}.conf
+-                      if [ "$IPV4ADDR" != "0.0.0.0" ]
+-                      then
+-                              break
+-                      fi
+-              done
+-      fi
++      done
++      unset devlist
+       for interface in ${DEVICE}; do
+               # source relevant ipconfig output
+               OLDHOSTNAME=${HOSTNAME}
+-              [ -e /tmp/net-${interface}.conf ] && . /tmp/net-${interface}.conf
++              [ -e /run/net-${interface}.conf ] && . /run/net-${interface}.conf
+               [ -z ${HOSTNAME} ] && HOSTNAME=${OLDHOSTNAME}
+               export HOSTNAME
+--- a/scripts/live-helpers
++++ b/scripts/live-helpers
+@@ -93,9 +93,8 @@
+                               ;;
+                       ethdevice=*)
+-                              DEVICE="${ARGUMENT#ethdevice=}"
+-                              ETHDEVICE="${DEVICE}"
+-                              export DEVICE ETHDEVICE
++                              ETHDEVICE="${ARGUMENT#ethdevice=}"
++                              export ETHDEVICE
+                               ;;
+                       ethdevice-timeout=*)
+@@ -162,13 +161,9 @@
+                               ;;
+                       ip=*)
+-                              STATICIP="${ARGUMENT#ip=}"
+-
+-                              if [ -z "${STATICIP}" ]
+-                              then
+-                                      STATICIP="frommedia"
+-                              fi
+-
++                              # copy complete ip=args into staticip, and
++                              # keep multiple uses.
++                              STATICIP="${STATICIP} ${ARGUMENT}"
+                               export STATICIP
+                               ;;
diff --git a/debian/patches/29_support_dns_in_initramfs.patch b/debian/patches/29_support_dns_in_initramfs.patch
new file mode 100644 (file)
index 0000000..e5414fd
--- /dev/null
@@ -0,0 +1,37 @@
+commit 10caf0b2db3fc04fae24ca896cf21f6aed12bbbc
+Author: Christian Hofstaedtler <ch@grml.org>
+Date:   Fri Mar 25 23:02:38 2011 +0100
+
+    support DNS in boot environment
+    
+    Thanks to Ulrich Dangel for discovering this. [Closes: issue848]
+
+Index: live-boot-grml/hooks/live
+===================================================================
+--- live-boot-grml.orig/hooks/live     2011-12-06 22:10:17.000000000 +0100
++++ live-boot-grml/hooks/live  2011-12-06 22:10:47.000000000 +0100
+@@ -266,17 +266,14 @@
+       manual_add_modules crc32c
+ fi
+-if [ "${LIVE_DNS}" = "true" ]
+-then
+-      [ "${QUIET}" ] || echo -n " "dns
+-      #copy_exec /lib/libnss_files.so.*      /lib  # /etc/hosts and /etc/passwd
+-      copy_exec /lib/libnss_dns.so.*      /lib  # DNS server
+-      #copy_exec /lib/libnss_compat.so.*      /lib  # /etc/passwd
++# DNS for initramfs
++#copy_exec /lib/libnss_files.so.*      /lib  # /etc/hosts and /etc/passwd
++copy_exec /lib/libnss_dns.so.*      /lib  # DNS server
++#copy_exec /lib/libnss_compat.so.*      /lib  # /etc/passwd
+-      # Configuration file - may be needed if /etc/hosts is used.
+-      #mkdir -p $DESTDIR/etc
+-      #cp -p /etc/nsswitch.conf $DESTDIR/etc
+-fi
++# Configuration file - may be needed if /etc/hosts is used.
++#mkdir -p $DESTDIR/etc
++#cp -p /etc/nsswitch.conf $DESTDIR/etc
+ if [ "${LIVE_UNIONMOUNT}" = "true" ]
+ then
diff --git a/debian/patches/30_support_multiarch_dns.patch b/debian/patches/30_support_multiarch_dns.patch
new file mode 100644 (file)
index 0000000..599a91b
--- /dev/null
@@ -0,0 +1,36 @@
+commit 6666658535b255cb71d48ddeb415aeb3023e1251
+Author: Michael Prokop <mika@grml.org>
+Date:   Tue Jun 7 10:15:52 2011 +0200
+
+    Do not fail in multiarch environment when installing libnss_dns.so.
+    
+    Updating initramfs fails with:
+    
+    | live-boot: core filesystems devices utils:memdisk udev wget blockdevE: /usr/share/initramfs-tools/hooks/live failed with return 1.
+    
+    with multiarch libc because the filename is no longer necessarily
+    /lib/libnss_dns.so.* but could also be e.g.
+    /lib/x86_64-linux-gnu/libnss_dns.so.*.
+
+Index: live-boot-grml/hooks/live
+===================================================================
+--- live-boot-grml.orig/hooks/live     2011-12-06 22:10:47.000000000 +0100
++++ live-boot-grml/hooks/live  2011-12-06 22:10:55.000000000 +0100
+@@ -268,7 +268,16 @@
+ # DNS for initramfs
+ #copy_exec /lib/libnss_files.so.*      /lib  # /etc/hosts and /etc/passwd
+-copy_exec /lib/libnss_dns.so.*      /lib  # DNS server
++# DNS server:
++if ls /lib/libnss_dns.so.* >/dev/null 2>&1 ; then # non-multiarch libc
++        copy_exec /lib/libnss_dns.so.*      /lib
++elif ls /lib/*/libnss_dns.so.* >/dev/null 2>&1 ; then # multiarch libc
++        for libnss in /lib/*/libnss_dns.so.* ; do
++                copy_exec "$libnss"
++        done
++else
++        echo "Warning: libnss_dns.so.* not found. DNS in initramfs not functional."
++fi
+ #copy_exec /lib/libnss_compat.so.*      /lib  # /etc/passwd
+ # Configuration file - may be needed if /etc/hosts is used.
diff --git a/debian/patches/31_package_rename.patch b/debian/patches/31_package_rename.patch
new file mode 100644 (file)
index 0000000..b04d165
--- /dev/null
@@ -0,0 +1,27 @@
+--- a/Makefile
++++ b/Makefile
+@@ -52,11 +52,11 @@
+       cp -r hooks scripts $(DESTDIR)/usr/share/initramfs-tools
+       # Installing docs
+-      mkdir -p $(DESTDIR)/usr/share/doc/live-boot
+-      cp -r COPYING $(DESTDIR)/usr/share/doc/live-boot
++      mkdir -p $(DESTDIR)/usr/share/doc/live-boot-grml
++      cp -r COPYING $(DESTDIR)/usr/share/doc/live-boot-grml
+-      mkdir -p $(DESTDIR)/usr/share/doc/live-boot/examples
+-      cp -r etc/* $(DESTDIR)/usr/share/doc/live-boot/examples
++      mkdir -p $(DESTDIR)/usr/share/doc/live-boot-grml/examples
++      cp -r etc/* $(DESTDIR)/usr/share/doc/live-boot-grml/examples
+       # (FIXME)
+       # Installing manpages
+@@ -94,7 +94,7 @@
+       rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr > /dev/null 2>&1 || true
+       # Uninstalling docs
+-      rm -rf $(DESTDIR)/usr/share/doc/live-boot
++      rm -rf $(DESTDIR)/usr/share/doc/live-boot-grml
+       rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share/doc > /dev/null 2>&1 || true
+       rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr/share > /dev/null 2>&1 || true
+       rmdir --ignore-fail-on-non-empty $(DESTDIR)/usr > /dev/null 2>&1 || true
diff --git a/debian/patches/32_add_kms.patch b/debian/patches/32_add_kms.patch
new file mode 100644 (file)
index 0000000..f1d3dbb
--- /dev/null
@@ -0,0 +1,30 @@
+Index: live-boot-grml/hooks/kms
+===================================================================
+--- /dev/null  1970-01-01 00:00:00.000000000 +0000
++++ live-boot-grml/hooks/kms   2011-12-06 22:09:55.000000000 +0100
+@@ -0,0 +1,25 @@
++#!/bin/sh
++# hook for adding kms modules
++
++set -e
++
++# initramfs-tools header
++
++PREREQ=""
++prereqs()
++{
++      echo "${PREREQ}"
++}
++
++case "${1}" in
++      prereqs)
++              prereqs
++              exit 0
++              ;;
++esac
++
++. /usr/share/initramfs-tools/hook-functions
++
++for module in i915 radeon nouveau ; do
++      manual_add_modules $module
++done
diff --git a/debian/patches/33_retry_phram.patch b/debian/patches/33_retry_phram.patch
new file mode 100644 (file)
index 0000000..40389e9
--- /dev/null
@@ -0,0 +1,19 @@
+commit d4619b77a669c70ae68d5da34de7655ffef80e04
+Author: Michael Prokop <mika@grml.org>
+Date:   Mon Jul 11 12:42:24 2011 +0200
+
+    Try loading phram module twice to fix loading issue.
+    
+    phram doesn't work on first modprobe, when loading once again it seems
+    to work. So let's try it this way.
+
+--- a/scripts/live
++++ b/scripts/live
+@@ -1576,6 +1576,7 @@
+                               then
+                                       # We found a memdisk, set up phram
+                                       modprobe phram phram=memdisk,${MEMDISK}
++                                      modprobe phram phram=memdisk,${MEMDISK}
+                                       # Load mtdblock, the memdisk will be /dev/mtdblock0
+                                       modprobe mtdblock
diff --git a/debian/patches/34_ignore_unknown_filesystems.patch b/debian/patches/34_ignore_unknown_filesystems.patch
new file mode 100644 (file)
index 0000000..fd66536
--- /dev/null
@@ -0,0 +1,15 @@
+--- a/scripts/live-helpers
++++ b/scripts/live-helpers
+@@ -507,6 +507,12 @@
+               return 1
+       fi
++      # get_fstype might report "unknown" or "swap", ignore it as no such kernel module exists
++      if [ "${fstype}" = "unknown" ] || [ "${fstype}" = "swap" ]
++      then
++              return 1
++      fi
++
+       # Try to look if it is already supported by the kernel
+       if grep -q ${fstype} /proc/filesystems
+       then
diff --git a/debian/patches/35_fix_findiso_umount.patch b/debian/patches/35_fix_findiso_umount.patch
new file mode 100644 (file)
index 0000000..6443519
--- /dev/null
@@ -0,0 +1,13 @@
+Purpose: make sure the ISO gets unmounted correctly when booted via findiso/toram
+
+--- a/scripts/live
++++ b/scripts/live
+@@ -1686,7 +1686,7 @@
+       then
+               losetup -d /dev/loop0
+-              if is_mountpoint /live/findiso
++              if is_mountpoint /root/live/findiso
+               then
+                       umount /root/live/findiso
+                       rmdir --ignore-fail-on-non-empty /root/live/findiso \
diff --git a/debian/patches/36_support_dhcp_bootoption.patch b/debian/patches/36_support_dhcp_bootoption.patch
new file mode 100644 (file)
index 0000000..fffd18f
--- /dev/null
@@ -0,0 +1,28 @@
+--- a/scripts/live
++++ b/scripts/live
+@@ -399,7 +399,7 @@
+       for dev in $devlist ; do
+               param="$(get_ipconfig_para $dev)"
+-              if [ -n "$NODHCP" ] && [ "$param" = "$dev" ] ; then
++              if [ -n "$NODHCP" ] && [ "$param" = "$dev" ] && [ "$DHCP" != "Force" ] ; then
+                       echo "Ignoring network device $dev due to nodhcp." | tee -a /live-boot.log
+                       continue
+               fi
+--- a/scripts/live-bottom/23networking_grml
++++ b/scripts/live-bottom/23networking_grml
+@@ -75,6 +75,14 @@
+         method="manual"
+     fi
++    # if boot option "nodhcp" is set but also boot option "dhcp" is
++    # set, then dhcp should win over it as we default to dhcp and if
++    # nodhcp is used as default boot option but "dhcp" is added then it
++    # would be confusing to not get a working network setup
++    if [ "$DHCP" = "Force" ] ; then
++        method="dhcp"
++    fi
++
+     cat >> $IFFILE << EOF
+ allow-hotplug ${interface}
+ iface ${interface} inet ${method}
diff --git a/debian/patches/37_fix_legacy_persistence_handling.patch b/debian/patches/37_fix_legacy_persistence_handling.patch
new file mode 100644 (file)
index 0000000..3ba7e78
--- /dev/null
@@ -0,0 +1,33 @@
+commit 7eaab98d69d8bdbc46cceaeac64007b214593174
+Author: lukas227 <lukas-gh@schwaighofer.name>
+Date:   Mon Aug 13 22:35:27 2012 +0200
+
+    fixed legacy persistence handling
+    
+    * the mount_persistence_media () function must return the mount point of
+      the partition to the caller, even if it was already mounted
+      (${backing} = ${old_backing})
+    * Fix the appropriate check that erroneously prevented the use of the
+      (unquoted) dot
+
+diff --git a/scripts/live-helpers b/scripts/live-helpers
+index b90637a..7d5c675 100644
+--- a/scripts/live-helpers
++++ b/scripts/live-helpers
+@@ -778,6 +778,7 @@ mount_persistence_media ()
+                       return 1
+               fi
+       fi
++      echo ${backing}
+       return 0
+ }
+@@ -1334,7 +1335,7 @@ get_custom_mounts ()
+                       local source="${dir}"
+                       if [ -n "${opt_source}" ]
+                       then
+-                              if echo ${opt_source} | grep -q -e "^/" -e "^\(.*/\)\?\.\.\?\(/.*\)\?$" && [ "${source}" != "." ]
++                              if echo ${opt_source} | grep -q -e "^/" -e "^\(.*/\)\?\.\.\?\(/.*\)\?$" && [ "${opt_source}" != "." ]
+                               then
+                                       log_warning_msg "Skipping unsafe custom mount with option source=${opt_source}: must be either \".\" (the media root) or a relative path w.r.t. the media root that contains neither comas, nor the special \".\" and \"..\" path components"
+                                       continue
diff --git a/debian/patches/38_do_not_check_for_forensic_in_readonly_mode.patch b/debian/patches/38_do_not_check_for_forensic_in_readonly_mode.patch
new file mode 100644 (file)
index 0000000..44332ea
--- /dev/null
@@ -0,0 +1,22 @@
+Description: readonly: do not check for "forensic" boot option
+
+Author: Michael Prokop <mika@grml.org>
+
+We use the "readonly" boot option in the forensic boot menu entry,
+so nothing will change from user's PoV.
+
+The "forensic" string might match in a different context though
+and the "readonly" boot option was removed by intention to not
+block write access to the devices.
+
+--- live-boot-3.0~a27.orig/scripts/live-premount/readonly
++++ live-boot-3.0~a27/scripts/live-premount/readonly
+@@ -22,7 +22,7 @@ esac
+ # make sure all harddisk devices are read-only
+ # this is important for forensic investigations
+-if grep -qe forensic -qe readonly /proc/cmdline
++if grep -qe readonly /proc/cmdline
+ then
+       for device in /dev/hd* /dev/sd* /dev/vd*
+       do
diff --git a/debian/patches/39_persistence_with_forensic.patch b/debian/patches/39_persistence_with_forensic.patch
new file mode 100644 (file)
index 0000000..16a67b0
--- /dev/null
@@ -0,0 +1,24 @@
+--- a/scripts/live-premount/readonly
++++ b/scripts/live-premount/readonly
+@@ -32,4 +32,21 @@
+                       blockdev --setro $device && printf "done [ execute \"blockdev --setrw %-9s\" to unlock]\n" $device >/dev/console || printf "failed\n" >/dev/console
+               fi
+       done
++
++      if grep -qe persistence /proc/cmdline
++        then
++              printf " * Persistence mode enabled, searching for persistency related devices to unlock\n" >/dev/console
++
++              for label in custom-ov home-rw home-sn live-rw live-sn
++              do
++                      if blkid -t LABEL="$label" | grep -q '.'
++                      then
++                              device=$(blkid -t LABEL="$label" | awk -F: '{print $1}')
++                                printf "   - Setting device %-9s with label '%s' to write mode for persistence mode: " "$device" "$label" >/dev/console
++                              blockdev --setrw $device && printf "done\n" >/dev/console || printf "failed\n" >/dev/console
++                      fi
++
++              done
++      fi
++
+ fi
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644 (file)
index 0000000..6f8f3bf
--- /dev/null
@@ -0,0 +1,22 @@
+03_grml_version_file_hook.patch
+05_boot_failure_message_grml.patch
+08_grml_defaults.patch
+11_dhcphostname.patch
+12_uuid_support.patch
+13_always_display_warnings_and_failures.patch
+15_networking_grml.patch
+16_nodhcp.patch
+19_revert_toram_bootoption_to_expected_behaviour.patch
+26_support_dns_bootoption.patch
+27_support_static_ip.patch
+29_support_dns_in_initramfs.patch
+30_support_multiarch_dns.patch
+31_package_rename.patch
+32_add_kms.patch
+33_retry_phram.patch
+34_ignore_unknown_filesystems.patch
+35_fix_findiso_umount.patch
+36_support_dhcp_bootoption.patch
+37_fix_legacy_persistence_handling.patch
+38_do_not_check_for_forensic_in_readonly_mode.patch
+39_persistence_with_forensic.patch
index 37418ee..ac466aa 100755 (executable)
@@ -1,21 +1,34 @@
 #!/usr/bin/make -f
 
+build:
+       # regular build.
+       dh build
+
 %:
-       dh ${@}
+       dh ${@} --with quilt
 
 override_dh_auto_install:
        dh_auto_install -- DESTDIR=debian/tmp
 
        # Removing useless files
-       rm -f debian/tmp/usr/share/doc/live-boot/COPYING
+       rm -f debian/tmp/usr/share/doc/live-boot-grml/COPYING
        rm -f debian/lib/live/boot/FIXME
 
        # live-boot-initramfs-tools
-       mkdir -p debian/live-boot-initramfs-tools/usr/share
-       mv debian/tmp/usr/share/initramfs-tools debian/live-boot-initramfs-tools/usr/share
+       mkdir -p debian/live-boot-grml-initramfs-tools/usr/share
+       mv debian/tmp/usr/share/initramfs-tools debian/live-boot-grml-initramfs-tools/usr/share
+
+       # this is needed because dpatch doesn't do file modes on diffs
+       # and we can't execute this fix during build stage as new files
+       # might be installed during dh_quilt_patch
+       chmod a+rx debian/live-boot-grml-initramfs-tools/usr/share/initramfs-tools/scripts/live-bottom/*
+       chmod a+rx debian/live-boot-grml-initramfs-tools/usr/share/initramfs-tools/hooks/*
 
 override_dh_builddeb:
        dh_builddeb -- -Zxz -z9
 
 override_dh_install:
        dh_install --fail-missing
+
+override_dh_installinit:
+       dh_installinit -p live-boot-grml --no-restart-on-upgrade --no-start --update-rcd-params='start 89 0 6 .'
diff --git a/manpages/de/live-persistence.conf.de.5 b/manpages/de/live-persistence.conf.de.5
new file mode 100644 (file)
index 0000000..618a965
--- /dev/null
@@ -0,0 +1,210 @@
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH LIVE\-BOOT conf 2012\-04\-09 3.0~a27\-1 "Debian Live Project"
+
+.SH NAME
+\fBlive\-persistence.conf\fP \- Configuration file for persistence media in
+live\-boot
+
+.SH DESCRIPTION
+If live\-boot probes a persistence volume with the label (or GPT name, or
+file name, but from now on we will just say "label") "custom\-ov", that
+volume's persistence is fully customizable through the
+\fBlive\-persistence.conf\fP file stored on the root of its file system. Any
+such labeled volume must have such a file, or it will be ignored.
+.PP
+The format of \fBlive\-persistence.conf\fP allow empty lines and lines starting
+with a "#" (used for comments), both which will be ignored. A so called
+"custom mount" has the format:
+.PP
+.RS
+\fIDIR\fP [\fIOPTION\fP]...
+.RE
+.PP
+which roughly translates to "make \fIDIR\fP persistence in the way described by
+the list of \fIOPTION\fPs".
+.PP
+For each custom mount \fIDIR\fP must be an absolute path that cannot contain
+white spaces or the special . and .. path components, and cannot be /live
+(or any of its sub\-directories), or / (for the latter, use "full\-ov"
+persistence instead). Once activated all changes (file deletion, creation
+and modification) to \fIDIR\fP on the live file system are stored persistently
+into a path equivalent to \fIDIR\fP on the persistence media, called the source
+directory. The default way to achieve persistence is to simply bind\-mount
+the corresponding source directory to \fIDIR\fP, but this can be changed
+through the use of \fIOPTION\fPs.
+.PP
+All custom mounts will be done in an order so that no two custom mounts can
+"hide" each other. For instance, if we have the two \fIDIR\fP:s /a and /a/b it
+would always be the case that /a is mounted first, then /a/b. This remains
+true no matter how the lines in \fBlive\-persistence.conf\fP are ordered, or if
+several \fBlive\-persistence.conf\fP files on different persistence media are
+used at the same time. However, it is forbidden for custom mounts to have
+their source directory inside the source directory of another custom mount,
+so the source directories that are auto\-created by live\-boot does not
+support "nested" mounts like /a and /a/b on the same media. In this case you
+must use the \fBsource\fP option (see below) to make sure that they are stored
+in different source directories.
+.PP
+When a source directory doesn't exist on the persistence media for a certain
+custom mount, it will be created automatically, and permissions and
+ownership will be optimistically set according to \fIDIR\fP. It will also be
+bootstrapped by copying the contents of the \fIDIR\fP into its source directory
+on the persistence media. The bootstrapping will not happen when the \fBlink\fP
+or \fBunion\fP options are used (see below).
+
+.SH OPTIONS
+Custom mounts defined in \fBlive\-persistence.conf\fP accept the following
+options in a coma\-separated list:
+.IP \fBsource\fP=\fIPATH\fP 4
+When given, store the persistence changes into \fIPATH\fP on the persistence
+media. \fIPATH\fP must be a relative path (w.r.t. the persistence media root)
+that cannot contain white spaces or the special . or .. path components,
+with the exception that it can be just . which means the persistence media
+root. This option is mostly relevant if you want to nest custom mounts,
+which otherwise would cause errors, or if you want to make the whole media
+root available (similar to the now deprecated \fBhome\-rw\fP type of
+persistence).
+.PP
+The following options are mutually exclusive (only the last given one will
+be in effect):
+.IP \fBbind\fP 4
+Bind\-mount the source directory to \fIDIR\fP. This is the default.
+.IP \fBlink\fP 4
+Create the directory structure of the source directory on the persistence
+media in \fIDIR\fP and create symbolic links from the corresponding place in
+\fIDIR\fP to each file in the source directory.  Existing files or directories
+with the same name as any link will be overwritten. Note that deleting the
+links in \fIDIR\fP will only remove the link, not the corresponding file in the
+source; removed links will reappear after a reboot. To permanently add or
+delete a file one must do so directly in the source directory.
+.IP
+Effectively \fBlink\fP will make only files already in the source directory
+persistent, not any other files in \fIDIR\fP. These files must be manually
+added to the source directory to make use of this option, and they will
+appear in \fIDIR\fP in addition to files already there. This option is useful
+when only certain files need to be persistent, not the whole directory
+they're in, e.g. some configuration files in a user's home directory.
+.IP \fBunion\fP 4
+Save the rw branch of a union on the persistence media, so only the changes
+are stored persistently. This can potentially reduce disk usage compared to
+bind\-mounts, and will not hide files added to the read\-only media. One
+caveat is that the union will use \fIDIR\fP from the image's read\-only file
+system, not the real file system root, so files created after boot (e.g. by
+live\-config) will not appear in the union. This option will use the union
+file system specified by live\-boot's \fBunion\fP boot parameter, but is not
+supported with \fBunion=unionmount\fP.
+
+.SH DIRECTORIES
+.IP \fB/live/persistence\fP 4
+All persistence volumes will be mounted here (in a directory corresponding
+to the device name). The \fBlive\-persistence.conf\fP file can easily be edited
+through this mount, as well as any source directories (which is especially
+practical for custom mounts using the \fBlink\fP option).
+
+.SH EXAMPLES
+
+Let's say we have a persistence volume \fIVOL\fP with the a
+\fBlive\-persistence.conf\fP file containing the following four lines (numbered
+for ease of reference):
+.TP  7
+1.
+/home/user1 link,source=config\-files/user1
+.TP 
+2.
+/home/user2 link,source=config\-files/user2
+.TP 
+3.
+/home
+.TP 
+4.
+/usr union
+.PP
+The corresponding source directories are:
+.TP  7
+1.
+\fIVOL\fP/config\-files/user1 (but it would be \fIVOL\fP/home/user1 without the
+\fBsource\fP option)
+.TP 
+2.
+\fIVOL\fP/config\-files/user2 (but it would be \fIVOL\fP/home/user2 without the
+\fBsource\fP option)
+.TP 
+3.
+\fIVOL\fP/home
+.TP 
+4.
+\fIVOL\fP/usr
+.PP
+It was necessary to set the \fBsource\fP options for 1 and 2, since they
+otherwise would become nested with 3's source, which is invalid.
+.PP
+Line 3 will be taken care of before line 1 and 2 in order to prevent custom
+mounts 1 and 2 from being hidden by 3. When line 3 is handled, \fIVOL\fP/home
+is simply bind\-mounted on /home. To illustrate what happens for lines 1 and
+2, let's say that the following files exist:
+.TP  7
+a.
+\fIVOL\fP/config\-files/user1/.emacs
+.TP 
+b.
+\fIVOL\fP/config\-files/user2/.bashrc
+.TP 
+c.
+\fIVOL\fP/config\-files/user2/.ssh/config
+.PP
+Then the following links and directories will be created:
+.TP  7
+Link:
+/home/user1/.emacs \-> \fIVOL\fP/config\-files/user1/.emacs (from a)
+.TP 
+Link:
+/home/user2/.bashrc \-> \fIVOL\fP/config\-files/user2/.bashrc (from b)
+.TP 
+Dir:
+/homea/user2/.ssh (from c)
+.TP 
+Link:
+/home/user2/.ssh/config \-> \fIVOL\fP/config\-files/user2/.ssh/config (from
+c)
+.PP
+One could argue, though, that lines 1 and 2 in the example
+\fBlive\-persistence.conf\fP file above are unnecessary since line 3 already
+would make all of /home persistent. The \fBlink\fP option is intended for
+situations where you don't want a complete directory to be persistent, only
+certain files in it or its sub\-directories.
+.PP
+Line 4 can be mounted at any time since its \fIDIR\fP (and source directory) is
+completely disjoint from all the other custom mounts. When mounted,
+\fIVOL\fP/usr will be the rw branch due to the \fBunion\fP option, and will only
+contain the difference compared to the underlying read\-only file
+system. Hence packages could be installed into /usr with great space\-wise
+efficiency compared to bind\-mounts, since in the latter case all of /usr
+would have to be copied into \fIVOL\fP/usr during the initial bootstrap.
+
+.SH "SEE ALSO"
+\fIlive\-boot\fP(7)
+.PP
+\fIlive\-build\fP(7)
+.PP
+\fIlive\-config\fP(7)
+.PP
+\fIlive\-tools\fP(7)
+
+.SH HOMEPAGE
+More information about live\-boot and the Debian Live project can be found on
+the homepage at <\fIhttp://live.debian.net/\fP> and in the manual at
+<\fIhttp://live.debian.net/manual/\fP>.
+
+.SH BUGS
+Bugs can be reported by submitting a bugreport for the live\-boot package in
+the Debian Bug Tracking System at <\fIhttp://bugs.debian.org/\fP> or by
+writing a mail to the Debian Live mailing list at
+<\fIdebian\-live@lists.debian.org\fP>.
+
+.SH AUTHOR
+live.persist was written by anonym <\fIanonym@lavabit.com\fP> for the
+Debian project.
diff --git a/manpages/en/live-persistence.conf.5 b/manpages/en/live-persistence.conf.5
new file mode 100644 (file)
index 0000000..96afb50
--- /dev/null
@@ -0,0 +1,213 @@
+.TH LIVE\-BOOT conf 2012\-04\-09 3.0~a27-1 "Debian Live Project"
+
+.SH NAME
+\fBlive-persistence.conf\fR \- Configuration file for persistence media in
+live\-boot
+
+.SH DESCRIPTION
+If live-boot probes a persistence volume with the label (or GPT name,
+or file name, but from now on we will just say "label") "custom\-ov",
+that volume's persistence is fully customizable through the
+\fBlive-persistence.conf\fR file stored on the root of its file system. Any such
+labeled volume must have such a file, or it will be ignored.
+.PP
+The format of \fBlive-persistence.conf\fR allow empty lines and lines starting
+with a "#" (used for comments), both which will be ignored. A so
+called "custom mount" has the format:
+.PP
+.RS
+\fIDIR\fR [\fIOPTION\fR]...
+.RE
+.PP
+which roughly translates to "make \fIDIR\fR persistence in the way
+described by the list of \fIOPTION\fRs".
+.PP
+For each custom mount \fIDIR\fR must be an absolute path that cannot
+contain white spaces or the special . and .. path components, and
+cannot be /live (or any of its sub-directories), or / (for the latter,
+use "full-ov" persistence instead). Once activated all changes (file
+deletion, creation and modification) to \fIDIR\fR on the live file
+system are stored persistently into a path equivalent to \fIDIR\fR on
+the persistence media, called the source directory. The default way to
+achieve persistence is to simply bind-mount the corresponding source
+directory to \fIDIR\fR, but this can be changed through the use of
+\fIOPTION\fRs.
+.PP
+All custom mounts will be done in an order so that no two custom
+mounts can "hide" each other. For instance, if we have the two
+\fIDIR\fR:s /a and /a/b it would always be the case that /a is mounted
+first, then /a/b. This remains true no matter how the lines in
+\fBlive-persistence.conf\fR are ordered, or if several \fBlive-persistence.conf\fR files
+on different persistence media are used at the same time. However, it
+is forbidden for custom mounts to have their source directory inside
+the source directory of another custom mount, so the source
+directories that are auto-created by live-boot does not support
+"nested" mounts like /a and /a/b on the same media. In this case you
+must use the \fBsource\fR option (see below) to make sure that they
+are stored in different source directories.
+.PP
+When a source directory doesn't exist on the persistence media for a
+certain custom mount, it will be created automatically, and
+permissions and ownership will be optimistically set according to
+\fIDIR\fR. It will also be bootstrapped by copying the contents of the
+\fIDIR\fR into its source directory on the persistence media. The
+bootstrapping will not happen when the \fBlink\fR or \fBunion\fR
+options are used (see below).
+
+.SH OPTIONS
+Custom mounts defined in \fBlive-persistence.conf\fR accept the following
+options in a coma-separated list:
+.IP "\fBsource\fR=\fIPATH\fR" 4
+When given, store the persistence changes into \fIPATH\fR on the
+persistence media. \fIPATH\fR must be a relative path (w.r.t. the
+persistence media root) that cannot contain white spaces or the
+special . or .. path components, with the exception that it can be
+just . which means the persistence media root. This option is mostly
+relevant if you want to nest custom mounts, which otherwise would
+cause errors, or if you want to make the whole media root available
+(similar to the now deprecated \fBhome-rw\fR type of persistence).
+.PP
+The following options are mutually exclusive (only the last given one
+will be in effect):
+.IP "\fBbind\fR" 4
+Bind-mount the source directory to \fIDIR\fR. This is the default.
+.IP "\fBlink\fR" 4
+Create the directory structure of the source directory on the
+persistence media in \fIDIR\fR and create symbolic links from the
+corresponding place in \fIDIR\fR to each file in the source directory.
+Existing files or directories with the same name as any link will be
+overwritten. Note that deleting the links in \fIDIR\fR will only
+remove the link, not the corresponding file in the source; removed
+links will reappear after a reboot. To permanently add or delete a
+file one must do so directly in the source directory.
+.IP
+Effectively \fBlink\fR will make only files already in the source
+directory persistent, not any other files in \fIDIR\fR. These files
+must be manually added to the source directory to make use of this
+option, and they will appear in \fIDIR\fR in addition to files already
+there. This option is useful when only certain files need to be
+persistent, not the whole directory they're in, e.g. some
+configuration files in a user's home directory.
+.IP "\fBunion\fR" 4
+Save the rw branch of a union on the persistence media, so only the
+changes are stored persistently. This can potentially reduce disk
+usage compared to bind-mounts, and will not hide files added to the
+read-only media. One caveat is that the union will use \fIDIR\fR from
+the image's read-only file system, not the real file system root, so
+files created after boot (e.g. by live-config) will not appear in the
+union. This option will use the union file system specified by
+live-boot's \fBunion\fR boot parameter, but is not supported with
+\fBunion=unionmount\fR.
+
+.SH DIRECTORIES
+.IP "\fB/live/persistence\fR" 4
+All persistence volumes will be mounted here (in a directory
+corresponding to the device name). The \fBlive-persistence.conf\fR file can
+easily be edited through this mount, as well as any source directories
+(which is especially practical for custom mounts using the
+\fBlink\fR option).
+
+.SH EXAMPLES
+
+Let's say we have a persistence volume \fIVOL\fR with the a
+\fBlive-persistence.conf\fR file containing the following four lines (numbered
+for ease of reference):
+.TP 7
+1.
+/home/user1 link,source=config-files/user1
+.TP
+2.
+/home/user2 link,source=config-files/user2
+.TP
+3.
+/home
+.TP
+4.
+/usr union
+.PP
+The corresponding source directories are:
+.TP 7
+1.
+\fIVOL\fR/config-files/user1 (but it would be \fIVOL\fR/home/user1
+without the \fBsource\fR option)
+.TP
+2.
+\fIVOL\fR/config-files/user2 (but it would be \fIVOL\fR/home/user2
+without the \fBsource\fR option)
+.TP
+3.
+\fIVOL\fR/home
+.TP
+4.
+\fIVOL\fR/usr
+.PP
+It was necessary to set the \fBsource\fR options for 1 and 2, since
+they otherwise would become nested with 3's source, which is invalid.
+.PP
+Line 3 will be taken care of before line 1 and 2 in order to prevent
+custom mounts 1 and 2 from being hidden by 3. When line 3 is handled,
+\fIVOL\fR/home is simply bind-mounted on /home. To illustrate what
+happens for lines 1 and 2, let's say that the following files exist:
+.TP 7
+a.
+\fIVOL\fR/config-files/user1/.emacs
+.TP
+b.
+\fIVOL\fR/config-files/user2/.bashrc
+.TP
+c.
+\fIVOL\fR/config-files/user2/.ssh/config
+.PP
+Then the following links and directories will be created:
+.TP 7
+Link:
+/home/user1/.emacs -> \fIVOL\fR/config-files/user1/.emacs (from a)
+.TP
+Link:
+/home/user2/.bashrc -> \fIVOL\fR/config-files/user2/.bashrc (from b)
+.TP
+Dir:
+/homea/user2/.ssh (from c)
+.TP
+Link:
+/home/user2/.ssh/config -> \fIVOL\fR/config-files/user2/.ssh/config
+(from c)
+.PP
+One could argue, though, that lines 1 and 2 in the example
+\fBlive-persistence.conf\fR file above are unnecessary since line 3 already
+would make all of /home persistent. The \fBlink\fR option is
+intended for situations where you don't want a complete directory to
+be persistent, only certain files in it or its sub-directories.
+.PP
+Line 4 can be mounted at any time since its \fIDIR\fR (and source
+directory) is completely disjoint from all the other custom
+mounts. When mounted, \fIVOL\fR/usr will be the rw branch due to the
+\fBunion\fR option, and will only contain the difference compared to
+the underlying read-only file system. Hence packages could be
+installed into /usr with great space-wise efficiency compared to
+bind-mounts, since in the latter case all of /usr would have to be
+copied into \fIVOL\fR/usr during the initial bootstrap.
+
+.SH SEE ALSO
+\fIlive\-boot\fR(7)
+.PP
+\fIlive\-build\fR(7)
+.PP
+\fIlive\-config\fR(7)
+.PP
+\fIlive\-tools\fR(7)
+
+.SH HOMEPAGE
+More information about live\-boot and the Debian Live project can be
+found on the homepage at <\fIhttp://live.debian.net/\fR> and in the
+manual at <\fIhttp://live.debian.net/manual/\fR>.
+
+.SH BUGS
+Bugs can be reported by submitting a bugreport for the live\-boot
+package in the Debian Bug Tracking System at
+<\fIhttp://bugs.debian.org/\fR> or by writing a mail to the Debian
+Live mailing list at <\fIdebian-live@lists.debian.org\fR>.
+
+.SH AUTHOR
+live\.persist was written by anonym <\fIanonym@lavabit.com\fR> for the
+Debian project.
diff --git a/manpages/old/live-snapshot.it.1.txt b/manpages/old/live-snapshot.it.1.txt
deleted file mode 100644 (file)
index 2370de7..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-live-snapshot(1)
-================
-:man source: 1.157.3
-:man manual: Debian Live
-
-Name
-----
-live-snapshot - uno script per facilitare l'uso della persistenza sui sistemi live
-
-Synopsis
---------
-live-snapshot [-c|--cow **DIRECTORY**s] [-d|--device **DEVICE**] [-e|--exclude-list **FILE**] [-o|--output **FILE**] [-t|--type **TYPE**]
-
-live-snapshot [-r|--resync-string **STRING**]
-
-live-snapshot [-h|--help]
-
-live-snapshot [-u|--usage]
-
-live-snapshot [-v|--version]
-
-Description
------------
-
-live-snapshot `e uno script che pu`o essere usato per costruire un file immagine formattato
-correttamente per essere usato da live-initramfs(7); viene inoltre usato dallo script di
-init di live-initramfs in uscita per sincronizzare i device di snapshot riconosciuti al boot.
-
-Options
--------
-
-  -c, --cow **DIRECTORY**::
-
-specifica la directory da clonare nel file immagine. Il valore di default `e
-lo stesso default usato da live-initramfs per la sua directory COW (copy on
-write, un tempo situata in "/live/cow") ed `e sufficiente per gli usi comuni.
-Pu`o essere utile tuttavia specificare "/home" e come tipo "ext2" per
-preparare un file immagine adatto per essere montato da live-initramfs come
-"/home" al boot.
-
-  -d, --device **DEVICE**::
-
-seleziona il device dove il file/partizione di snapshot o persistenza dovr`a
-essere sistemato. Se il device non ha un filesystem, ne verr`a creato uno
-automaticamente, di tipo ext2 ed etichettato (label) in base al valore
-specificato nell'opzione "--output" o con un default. Se non viene specificato
-nessun device, verr`a usato un "tmpfs" linkato sul desktop dell'utente, in
-modo che port`a essere mosso dove si vuole.
-
-  -e, --exclude-list **FILE**::
-
-un file contenente una lista di file e percorsi che NON devono essere salvati.
-Questa lista verr`a inclusa nello snapshot per essere riutilizzata.
-
-  -o, --output **FILE**::
-
-il nome del file o l'etichetta (label) da usare per il file o la partizione di
-snapshot. Se non specificata, live-snapshot cercher\`a un file all'interno
-del device oppure user`a l'intera partizione.
-
-  -r, --resync-string **STRING**::
-
-usato internamente nelle sincronizzazioni dallo script di init di
-live-initramfs. Il formato pu\`o cambiare, usatelo a vostro rischio.
-
-  -f, --refresh::
-
-scatena la stessa operazione che verrebbe fatta al reboot o all'halt della
-macchina, provando a fare il resync degli snapshot trovati al boot, usabile
-per salvare le modifiche in vista di un crash o di una mancanza di corrente.
-
-  -t, --type **TYPE**::
-
-il tipo pu`o essere "cpio", "squashfs" o "ext2".
-
-  -h, --help::
-
-mostra l'aiuto ed esce
-
-  -u, --usage::
-
-mostra l'utilizzo ed esce
-
-  -v, --version::
-
-da informazioni sulla versione ed esce
-
-Files
------
-
-  /etc/live-snapshot.list
-
-Facoltativo, se presente cambia completamente il funzionamento di live-snapshot; solo i files e le directory elencate verranno effettivamente inclusi nello snapshot.
-Funziona attualmente solo con gli snapshot di tipo "cpio" e "partizione intera".
-
-  /etc/live-snapshot.exclude_list
-
-Facoltativo, se presente verrà utilizzato per filtrare i file da includere negli snapshot. Tutte i file che conterranno le stringhe elecate (come "grep -F -v") non verranno salvati da live-snapshot.
-Funziona attualmente solo con gli snapshot di tipo "cpio", "partizione intera" e "squashfs"; Ã¨ utile per filtrare contenuti poco significativi come i file temporanei e la cache.
-
-See also
---------
-
-live-initramfs(8)
-
-Questo programma fa parte di live-initramfs.
-
-Bugs
-----
-
-Riportate i bug sul pacchetto live-initramfs
-link:http://packages.qa.debian.org/live-initramfs[http://packages.qa.debian.org/live-initramfs].
-
-Homepage
---------
-
-Ulteriori informazioni su progetto Debian Live possono essere trovate su
-link:http://debian-live.alioth.debian.org/[http://debian-live.alioth.debian.org/] e
-link:http://wiki.debian.org/DebianLive/[http://wiki.debian.org/DebianLive/].
-
-Authors
--------
-
-live-initramfs `e mantenuto da Daniel Baumann <daniel@debian.org> per il
-progetto Debian. live-initramfs `e un fork di
-link:http://packages.ubuntu.com/casper[casper]. casper `e stato scritto
-originariamente da Tollef Fog Heen <tfheen@canonical.com> e Matt Zimmerman
-<mdz@canonical.com>.
diff --git a/manpages/po/de/live-persistence.conf.5.po b/manpages/po/de/live-persistence.conf.5.po
new file mode 100644 (file)
index 0000000..debbc07
--- /dev/null
@@ -0,0 +1,515 @@
+# German translations for live-boot package
+# Copyright (C) 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the live-boot package.
+# Automatically generated, 2012.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: live-boot VERSION\n"
+"POT-Creation-Date: 2012-04-09 18:57+0300\n"
+"PO-Revision-Date: 2012-04-08 22:48+0300\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: none\n"
+"Language: de\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ASCII\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. type: TH
+#: en/live-boot.7:1 en/live-persistence.conf.5:1 en/live-snapshot.1:1
+#, no-wrap
+msgid "LIVE-BOOT"
+msgstr ""
+
+#. type: TH
+#: en/live-boot.7:1 en/live-persistence.conf.5:1 en/live-snapshot.1:1
+#, no-wrap
+msgid "2012-04-09"
+msgstr ""
+
+#. type: TH
+#: en/live-boot.7:1 en/live-persistence.conf.5:1 en/live-snapshot.1:1
+#, no-wrap
+msgid "3.0~a27-1"
+msgstr ""
+
+#. type: TH
+#: en/live-boot.7:1 en/live-persistence.conf.5:1 en/live-snapshot.1:1
+#, no-wrap
+msgid "Debian Live Project"
+msgstr ""
+
+#. type: SH
+#: en/live-boot.7:3 en/live-persistence.conf.5:3 en/live-snapshot.1:3
+#, no-wrap
+msgid "NAME"
+msgstr ""
+
+#. type: SH
+#: en/live-boot.7:6 en/live-persistence.conf.5:7 en/live-snapshot.1:17
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr ""
+
+#. type: SH
+#: en/live-boot.7:28 en/live-persistence.conf.5:57 en/live-snapshot.1:20
+#, no-wrap
+msgid "OPTIONS"
+msgstr ""
+
+#. type: SH
+#: en/live-boot.7:160 en/live-persistence.conf.5:191 en/live-snapshot.1:54
+#, no-wrap
+msgid "SEE ALSO"
+msgstr ""
+
+#. type: Plain text
+#: en/live-boot.7:166 en/live-persistence.conf.5:195 en/live-snapshot.1:58
+msgid "I<live-build>(7)"
+msgstr ""
+
+#. type: Plain text
+#: en/live-boot.7:168 en/live-persistence.conf.5:197 en/live-snapshot.1:60
+msgid "I<live-config>(7)"
+msgstr ""
+
+#. type: Plain text
+#: en/live-boot.7:170 en/live-persistence.conf.5:199 en/live-snapshot.1:62
+msgid "I<live-tools>(7)"
+msgstr ""
+
+#. type: SH
+#: en/live-boot.7:171 en/live-persistence.conf.5:200 en/live-snapshot.1:63
+#, no-wrap
+msgid "HOMEPAGE"
+msgstr ""
+
+#. type: Plain text
+#: en/live-boot.7:173 en/live-persistence.conf.5:204 en/live-snapshot.1:65
+msgid ""
+"More information about live-boot and the Debian Live project can be found on "
+"the homepage at E<lt>I<http://live.debian.net/>E<gt> and in the manual at "
+"E<lt>I<http://live.debian.net/manual/>E<gt>."
+msgstr ""
+
+#. type: SH
+#: en/live-boot.7:174 en/live-persistence.conf.5:205 en/live-snapshot.1:66
+#, no-wrap
+msgid "BUGS"
+msgstr ""
+
+#. type: Plain text
+#: en/live-boot.7:176 en/live-persistence.conf.5:210 en/live-snapshot.1:68
+msgid ""
+"Bugs can be reported by submitting a bugreport for the live-boot package in "
+"the Debian Bug Tracking System at E<lt>I<http://bugs.debian.org/>E<gt> or by "
+"writing a mail to the Debian Live mailing list at E<lt>I<debian-live@lists."
+"debian.org>E<gt>."
+msgstr ""
+
+#. type: SH
+#: en/live-boot.7:177 en/live-persistence.conf.5:211 en/live-snapshot.1:69
+#, no-wrap
+msgid "AUTHOR"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:6
+msgid ""
+"B<live-persistence.conf> - Configuration file for persistence media in live-"
+"boot"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:13
+msgid ""
+"If live-boot probes a persistence volume with the label (or GPT name, or "
+"file name, but from now on we will just say \"label\") \"custom-ov\", that "
+"volume's persistence is fully customizable through the B<live-persistence."
+"conf> file stored on the root of its file system. Any such labeled volume "
+"must have such a file, or it will be ignored."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:17
+msgid ""
+"The format of B<live-persistence.conf> allow empty lines and lines starting "
+"with a \"#\" (used for comments), both which will be ignored. A so called "
+"\"custom mount\" has the format:"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:20
+msgid "I<DIR> [I<OPTION>]..."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:24
+msgid ""
+"which roughly translates to \"make I<DIR> persistence in the way described "
+"by the list of I<OPTION>s\"."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:35
+msgid ""
+"For each custom mount I<DIR> must be an absolute path that cannot contain "
+"white spaces or the special . and .. path components, and cannot be /live "
+"(or any of its sub-directories), or / (for the latter, use \"full-ov\" "
+"persistence instead). Once activated all changes (file deletion, creation "
+"and modification) to I<DIR> on the live file system are stored persistently "
+"into a path equivalent to I<DIR> on the persistence media, called the source "
+"directory. The default way to achieve persistence is to simply bind-mount "
+"the corresponding source directory to I<DIR>, but this can be changed "
+"through the use of I<OPTION>s."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:48
+msgid ""
+"All custom mounts will be done in an order so that no two custom mounts can "
+"\"hide\" each other. For instance, if we have the two I<DIR>:s /a and /a/b "
+"it would always be the case that /a is mounted first, then /a/b. This "
+"remains true no matter how the lines in B<live-persistence.conf> are "
+"ordered, or if several B<live-persistence.conf> files on different "
+"persistence media are used at the same time. However, it is forbidden for "
+"custom mounts to have their source directory inside the source directory of "
+"another custom mount, so the source directories that are auto-created by "
+"live-boot does not support \"nested\" mounts like /a and /a/b on the same "
+"media. In this case you must use the B<source> option (see below) to make "
+"sure that they are stored in different source directories."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:56
+msgid ""
+"When a source directory doesn't exist on the persistence media for a certain "
+"custom mount, it will be created automatically, and permissions and "
+"ownership will be optimistically set according to I<DIR>. It will also be "
+"bootstrapped by copying the contents of the I<DIR> into its source directory "
+"on the persistence media. The bootstrapping will not happen when the B<link> "
+"or B<union> options are used (see below)."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:60
+msgid ""
+"Custom mounts defined in B<live-persistence.conf> accept the following "
+"options in a coma-separated list:"
+msgstr ""
+
+#. type: IP
+#: en/live-persistence.conf.5:60
+#, no-wrap
+msgid "B<source>=I<PATH>"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:69
+msgid ""
+"When given, store the persistence changes into I<PATH> on the persistence "
+"media. I<PATH> must be a relative path (w.r.t. the persistence media root) "
+"that cannot contain white spaces or the special . or .. path components, "
+"with the exception that it can be just . which means the persistence media "
+"root. This option is mostly relevant if you want to nest custom mounts, "
+"which otherwise would cause errors, or if you want to make the whole media "
+"root available (similar to the now deprecated B<home-rw> type of "
+"persistence)."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:72
+msgid ""
+"The following options are mutually exclusive (only the last given one will "
+"be in effect):"
+msgstr ""
+
+#. type: IP
+#: en/live-persistence.conf.5:72
+#, no-wrap
+msgid "B<bind>"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:74
+msgid "Bind-mount the source directory to I<DIR>. This is the default."
+msgstr ""
+
+#. type: IP
+#: en/live-persistence.conf.5:74
+#, no-wrap
+msgid "B<link>"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:83
+msgid ""
+"Create the directory structure of the source directory on the persistence "
+"media in I<DIR> and create symbolic links from the corresponding place in "
+"I<DIR> to each file in the source directory.  Existing files or directories "
+"with the same name as any link will be overwritten. Note that deleting the "
+"links in I<DIR> will only remove the link, not the corresponding file in the "
+"source; removed links will reappear after a reboot. To permanently add or "
+"delete a file one must do so directly in the source directory."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:91
+msgid ""
+"Effectively B<link> will make only files already in the source directory "
+"persistent, not any other files in I<DIR>. These files must be manually "
+"added to the source directory to make use of this option, and they will "
+"appear in I<DIR> in addition to files already there. This option is useful "
+"when only certain files need to be persistent, not the whole directory "
+"they're in, e.g. some configuration files in a user's home directory."
+msgstr ""
+
+#. type: IP
+#: en/live-persistence.conf.5:91
+#, no-wrap
+msgid "B<union>"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:101
+msgid ""
+"Save the rw branch of a union on the persistence media, so only the changes "
+"are stored persistently. This can potentially reduce disk usage compared to "
+"bind-mounts, and will not hide files added to the read-only media. One "
+"caveat is that the union will use I<DIR> from the image's read-only file "
+"system, not the real file system root, so files created after boot (e.g. by "
+"live-config) will not appear in the union. This option will use the union "
+"file system specified by live-boot's B<union> boot parameter, but is not "
+"supported with B<union=unionmount>."
+msgstr ""
+
+#. type: SH
+#: en/live-persistence.conf.5:102
+#, no-wrap
+msgid "DIRECTORIES"
+msgstr ""
+
+#. type: IP
+#: en/live-persistence.conf.5:103
+#, no-wrap
+msgid "B</live/persistence>"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:109
+msgid ""
+"All persistence volumes will be mounted here (in a directory corresponding "
+"to the device name). The B<live-persistence.conf> file can easily be edited "
+"through this mount, as well as any source directories (which is especially "
+"practical for custom mounts using the B<link> option)."
+msgstr ""
+
+#. type: SH
+#: en/live-persistence.conf.5:110
+#, no-wrap
+msgid "EXAMPLES"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:115
+msgid ""
+"Let's say we have a persistence volume I<VOL> with the a B<live-persistence."
+"conf> file containing the following four lines (numbered for ease of "
+"reference):"
+msgstr ""
+
+#. type: TP
+#: en/live-persistence.conf.5:115 en/live-persistence.conf.5:129
+#, no-wrap
+msgid "1."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:118
+msgid "/home/user1 link,source=config-files/user1"
+msgstr ""
+
+#. type: TP
+#: en/live-persistence.conf.5:118 en/live-persistence.conf.5:133
+#, no-wrap
+msgid "2."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:121
+msgid "/home/user2 link,source=config-files/user2"
+msgstr ""
+
+#. type: TP
+#: en/live-persistence.conf.5:121 en/live-persistence.conf.5:137
+#, no-wrap
+msgid "3."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:124
+msgid "/home"
+msgstr ""
+
+#. type: TP
+#: en/live-persistence.conf.5:124 en/live-persistence.conf.5:140
+#, no-wrap
+msgid "4."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:127
+msgid "/usr union"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:129
+msgid "The corresponding source directories are:"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:133
+msgid ""
+"I<VOL>/config-files/user1 (but it would be I<VOL>/home/user1 without the "
+"B<source> option)"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:137
+msgid ""
+"I<VOL>/config-files/user2 (but it would be I<VOL>/home/user2 without the "
+"B<source> option)"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:140
+msgid "I<VOL>/home"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:143
+msgid "I<VOL>/usr"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:146
+msgid ""
+"It was necessary to set the B<source> options for 1 and 2, since they "
+"otherwise would become nested with 3's source, which is invalid."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:151
+msgid ""
+"Line 3 will be taken care of before line 1 and 2 in order to prevent custom "
+"mounts 1 and 2 from being hidden by 3. When line 3 is handled, I<VOL>/home "
+"is simply bind-mounted on /home. To illustrate what happens for lines 1 and "
+"2, let's say that the following files exist:"
+msgstr ""
+
+#. type: TP
+#: en/live-persistence.conf.5:151
+#, no-wrap
+msgid "a."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:154
+msgid "I<VOL>/config-files/user1/.emacs"
+msgstr ""
+
+#. type: TP
+#: en/live-persistence.conf.5:154
+#, no-wrap
+msgid "b."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:157
+msgid "I<VOL>/config-files/user2/.bashrc"
+msgstr ""
+
+#. type: TP
+#: en/live-persistence.conf.5:157
+#, no-wrap
+msgid "c."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:160
+msgid "I<VOL>/config-files/user2/.ssh/config"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:162
+msgid "Then the following links and directories will be created:"
+msgstr ""
+
+#. type: TP
+#: en/live-persistence.conf.5:162 en/live-persistence.conf.5:165
+#: en/live-persistence.conf.5:171
+#, no-wrap
+msgid "Link:"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:165
+msgid "/home/user1/.emacs -E<gt> I<VOL>/config-files/user1/.emacs (from a)"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:168
+msgid "/home/user2/.bashrc -E<gt> I<VOL>/config-files/user2/.bashrc (from b)"
+msgstr ""
+
+#. type: TP
+#: en/live-persistence.conf.5:168
+#, no-wrap
+msgid "Dir:"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:171
+msgid "/homea/user2/.ssh (from c)"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:175
+msgid ""
+"/home/user2/.ssh/config -E<gt> I<VOL>/config-files/user2/.ssh/config (from c)"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:181
+msgid ""
+"One could argue, though, that lines 1 and 2 in the example B<live-"
+"persistence.conf> file above are unnecessary since line 3 already would make "
+"all of /home persistent. The B<link> option is intended for situations where "
+"you don't want a complete directory to be persistent, only certain files in "
+"it or its sub-directories."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:190
+msgid ""
+"Line 4 can be mounted at any time since its I<DIR> (and source directory) is "
+"completely disjoint from all the other custom mounts. When mounted, I<VOL>/"
+"usr will be the rw branch due to the B<union> option, and will only contain "
+"the difference compared to the underlying read-only file system. Hence "
+"packages could be installed into /usr with great space-wise efficiency "
+"compared to bind-mounts, since in the latter case all of /usr would have to "
+"be copied into I<VOL>/usr during the initial bootstrap."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:193
+msgid "I<live-boot>(7)"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:213
+msgid ""
+"live.persist was written by anonym E<lt>I<anonym@lavabit.com>E<gt> for the "
+"Debian project."
+msgstr ""
diff --git a/manpages/pot/live-persistence.conf.5.pot b/manpages/pot/live-persistence.conf.5.pot
new file mode 100644 (file)
index 0000000..44a1e25
--- /dev/null
@@ -0,0 +1,515 @@
+# SOME DESCRIPTIVE TITLE
+# Copyright (C) YEAR Free Software Foundation, Inc.
+# This file is distributed under the same license as the live-boot package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: live-boot VERSION\n"
+"POT-Creation-Date: 2012-04-09 18:57+0300\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. type: TH
+#: en/live-boot.7:1 en/live-persistence.conf.5:1 en/live-snapshot.1:1
+#, no-wrap
+msgid "LIVE-BOOT"
+msgstr ""
+
+#. type: TH
+#: en/live-boot.7:1 en/live-persistence.conf.5:1 en/live-snapshot.1:1
+#, no-wrap
+msgid "2012-04-09"
+msgstr ""
+
+#. type: TH
+#: en/live-boot.7:1 en/live-persistence.conf.5:1 en/live-snapshot.1:1
+#, no-wrap
+msgid "3.0~a27-1"
+msgstr ""
+
+#. type: TH
+#: en/live-boot.7:1 en/live-persistence.conf.5:1 en/live-snapshot.1:1
+#, no-wrap
+msgid "Debian Live Project"
+msgstr ""
+
+#. type: SH
+#: en/live-boot.7:3 en/live-persistence.conf.5:3 en/live-snapshot.1:3
+#, no-wrap
+msgid "NAME"
+msgstr ""
+
+#. type: SH
+#: en/live-boot.7:6 en/live-persistence.conf.5:7 en/live-snapshot.1:17
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr ""
+
+#. type: SH
+#: en/live-boot.7:28 en/live-persistence.conf.5:57 en/live-snapshot.1:20
+#, no-wrap
+msgid "OPTIONS"
+msgstr ""
+
+#. type: SH
+#: en/live-boot.7:160 en/live-persistence.conf.5:191 en/live-snapshot.1:54
+#, no-wrap
+msgid "SEE ALSO"
+msgstr ""
+
+#. type: Plain text
+#: en/live-boot.7:166 en/live-persistence.conf.5:195 en/live-snapshot.1:58
+msgid "I<live-build>(7)"
+msgstr ""
+
+#. type: Plain text
+#: en/live-boot.7:168 en/live-persistence.conf.5:197 en/live-snapshot.1:60
+msgid "I<live-config>(7)"
+msgstr ""
+
+#. type: Plain text
+#: en/live-boot.7:170 en/live-persistence.conf.5:199 en/live-snapshot.1:62
+msgid "I<live-tools>(7)"
+msgstr ""
+
+#. type: SH
+#: en/live-boot.7:171 en/live-persistence.conf.5:200 en/live-snapshot.1:63
+#, no-wrap
+msgid "HOMEPAGE"
+msgstr ""
+
+#. type: Plain text
+#: en/live-boot.7:173 en/live-persistence.conf.5:204 en/live-snapshot.1:65
+msgid ""
+"More information about live-boot and the Debian Live project can be found on "
+"the homepage at E<lt>I<http://live.debian.net/>E<gt> and in the manual at "
+"E<lt>I<http://live.debian.net/manual/>E<gt>."
+msgstr ""
+
+#. type: SH
+#: en/live-boot.7:174 en/live-persistence.conf.5:205 en/live-snapshot.1:66
+#, no-wrap
+msgid "BUGS"
+msgstr ""
+
+#. type: Plain text
+#: en/live-boot.7:176 en/live-persistence.conf.5:210 en/live-snapshot.1:68
+msgid ""
+"Bugs can be reported by submitting a bugreport for the live-boot package in "
+"the Debian Bug Tracking System at E<lt>I<http://bugs.debian.org/>E<gt> or by "
+"writing a mail to the Debian Live mailing list at E<lt>I<debian-live@lists."
+"debian.org>E<gt>."
+msgstr ""
+
+#. type: SH
+#: en/live-boot.7:177 en/live-persistence.conf.5:211 en/live-snapshot.1:69
+#, no-wrap
+msgid "AUTHOR"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:6
+msgid ""
+"B<live-persistence.conf> - Configuration file for persistence media in live-"
+"boot"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:13
+msgid ""
+"If live-boot probes a persistence volume with the label (or GPT name, or "
+"file name, but from now on we will just say \"label\") \"custom-ov\", that "
+"volume's persistence is fully customizable through the B<live-persistence."
+"conf> file stored on the root of its file system. Any such labeled volume "
+"must have such a file, or it will be ignored."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:17
+msgid ""
+"The format of B<live-persistence.conf> allow empty lines and lines starting "
+"with a \"#\" (used for comments), both which will be ignored. A so called "
+"\"custom mount\" has the format:"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:20
+msgid "I<DIR> [I<OPTION>]..."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:24
+msgid ""
+"which roughly translates to \"make I<DIR> persistence in the way described "
+"by the list of I<OPTION>s\"."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:35
+msgid ""
+"For each custom mount I<DIR> must be an absolute path that cannot contain "
+"white spaces or the special . and .. path components, and cannot be /live "
+"(or any of its sub-directories), or / (for the latter, use \"full-ov\" "
+"persistence instead). Once activated all changes (file deletion, creation "
+"and modification) to I<DIR> on the live file system are stored persistently "
+"into a path equivalent to I<DIR> on the persistence media, called the source "
+"directory. The default way to achieve persistence is to simply bind-mount "
+"the corresponding source directory to I<DIR>, but this can be changed "
+"through the use of I<OPTION>s."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:48
+msgid ""
+"All custom mounts will be done in an order so that no two custom mounts can "
+"\"hide\" each other. For instance, if we have the two I<DIR>:s /a and /a/b "
+"it would always be the case that /a is mounted first, then /a/b. This "
+"remains true no matter how the lines in B<live-persistence.conf> are "
+"ordered, or if several B<live-persistence.conf> files on different "
+"persistence media are used at the same time. However, it is forbidden for "
+"custom mounts to have their source directory inside the source directory of "
+"another custom mount, so the source directories that are auto-created by "
+"live-boot does not support \"nested\" mounts like /a and /a/b on the same "
+"media. In this case you must use the B<source> option (see below) to make "
+"sure that they are stored in different source directories."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:56
+msgid ""
+"When a source directory doesn't exist on the persistence media for a certain "
+"custom mount, it will be created automatically, and permissions and "
+"ownership will be optimistically set according to I<DIR>. It will also be "
+"bootstrapped by copying the contents of the I<DIR> into its source directory "
+"on the persistence media. The bootstrapping will not happen when the B<link> "
+"or B<union> options are used (see below)."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:60
+msgid ""
+"Custom mounts defined in B<live-persistence.conf> accept the following "
+"options in a coma-separated list:"
+msgstr ""
+
+#. type: IP
+#: en/live-persistence.conf.5:60
+#, no-wrap
+msgid "B<source>=I<PATH>"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:69
+msgid ""
+"When given, store the persistence changes into I<PATH> on the persistence "
+"media. I<PATH> must be a relative path (w.r.t. the persistence media root) "
+"that cannot contain white spaces or the special . or .. path components, "
+"with the exception that it can be just . which means the persistence media "
+"root. This option is mostly relevant if you want to nest custom mounts, "
+"which otherwise would cause errors, or if you want to make the whole media "
+"root available (similar to the now deprecated B<home-rw> type of "
+"persistence)."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:72
+msgid ""
+"The following options are mutually exclusive (only the last given one will "
+"be in effect):"
+msgstr ""
+
+#. type: IP
+#: en/live-persistence.conf.5:72
+#, no-wrap
+msgid "B<bind>"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:74
+msgid "Bind-mount the source directory to I<DIR>. This is the default."
+msgstr ""
+
+#. type: IP
+#: en/live-persistence.conf.5:74
+#, no-wrap
+msgid "B<link>"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:83
+msgid ""
+"Create the directory structure of the source directory on the persistence "
+"media in I<DIR> and create symbolic links from the corresponding place in "
+"I<DIR> to each file in the source directory.  Existing files or directories "
+"with the same name as any link will be overwritten. Note that deleting the "
+"links in I<DIR> will only remove the link, not the corresponding file in the "
+"source; removed links will reappear after a reboot. To permanently add or "
+"delete a file one must do so directly in the source directory."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:91
+msgid ""
+"Effectively B<link> will make only files already in the source directory "
+"persistent, not any other files in I<DIR>. These files must be manually "
+"added to the source directory to make use of this option, and they will "
+"appear in I<DIR> in addition to files already there. This option is useful "
+"when only certain files need to be persistent, not the whole directory "
+"they're in, e.g. some configuration files in a user's home directory."
+msgstr ""
+
+#. type: IP
+#: en/live-persistence.conf.5:91
+#, no-wrap
+msgid "B<union>"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:101
+msgid ""
+"Save the rw branch of a union on the persistence media, so only the changes "
+"are stored persistently. This can potentially reduce disk usage compared to "
+"bind-mounts, and will not hide files added to the read-only media. One "
+"caveat is that the union will use I<DIR> from the image's read-only file "
+"system, not the real file system root, so files created after boot (e.g. by "
+"live-config) will not appear in the union. This option will use the union "
+"file system specified by live-boot's B<union> boot parameter, but is not "
+"supported with B<union=unionmount>."
+msgstr ""
+
+#. type: SH
+#: en/live-persistence.conf.5:102
+#, no-wrap
+msgid "DIRECTORIES"
+msgstr ""
+
+#. type: IP
+#: en/live-persistence.conf.5:103
+#, no-wrap
+msgid "B</live/persistence>"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:109
+msgid ""
+"All persistence volumes will be mounted here (in a directory corresponding "
+"to the device name). The B<live-persistence.conf> file can easily be edited "
+"through this mount, as well as any source directories (which is especially "
+"practical for custom mounts using the B<link> option)."
+msgstr ""
+
+#. type: SH
+#: en/live-persistence.conf.5:110
+#, no-wrap
+msgid "EXAMPLES"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:115
+msgid ""
+"Let's say we have a persistence volume I<VOL> with the a B<live-persistence."
+"conf> file containing the following four lines (numbered for ease of "
+"reference):"
+msgstr ""
+
+#. type: TP
+#: en/live-persistence.conf.5:115 en/live-persistence.conf.5:129
+#, no-wrap
+msgid "1."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:118
+msgid "/home/user1 link,source=config-files/user1"
+msgstr ""
+
+#. type: TP
+#: en/live-persistence.conf.5:118 en/live-persistence.conf.5:133
+#, no-wrap
+msgid "2."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:121
+msgid "/home/user2 link,source=config-files/user2"
+msgstr ""
+
+#. type: TP
+#: en/live-persistence.conf.5:121 en/live-persistence.conf.5:137
+#, no-wrap
+msgid "3."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:124
+msgid "/home"
+msgstr ""
+
+#. type: TP
+#: en/live-persistence.conf.5:124 en/live-persistence.conf.5:140
+#, no-wrap
+msgid "4."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:127
+msgid "/usr union"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:129
+msgid "The corresponding source directories are:"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:133
+msgid ""
+"I<VOL>/config-files/user1 (but it would be I<VOL>/home/user1 without the "
+"B<source> option)"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:137
+msgid ""
+"I<VOL>/config-files/user2 (but it would be I<VOL>/home/user2 without the "
+"B<source> option)"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:140
+msgid "I<VOL>/home"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:143
+msgid "I<VOL>/usr"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:146
+msgid ""
+"It was necessary to set the B<source> options for 1 and 2, since they "
+"otherwise would become nested with 3's source, which is invalid."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:151
+msgid ""
+"Line 3 will be taken care of before line 1 and 2 in order to prevent custom "
+"mounts 1 and 2 from being hidden by 3. When line 3 is handled, I<VOL>/home "
+"is simply bind-mounted on /home. To illustrate what happens for lines 1 and "
+"2, let's say that the following files exist:"
+msgstr ""
+
+#. type: TP
+#: en/live-persistence.conf.5:151
+#, no-wrap
+msgid "a."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:154
+msgid "I<VOL>/config-files/user1/.emacs"
+msgstr ""
+
+#. type: TP
+#: en/live-persistence.conf.5:154
+#, no-wrap
+msgid "b."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:157
+msgid "I<VOL>/config-files/user2/.bashrc"
+msgstr ""
+
+#. type: TP
+#: en/live-persistence.conf.5:157
+#, no-wrap
+msgid "c."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:160
+msgid "I<VOL>/config-files/user2/.ssh/config"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:162
+msgid "Then the following links and directories will be created:"
+msgstr ""
+
+#. type: TP
+#: en/live-persistence.conf.5:162 en/live-persistence.conf.5:165
+#: en/live-persistence.conf.5:171
+#, no-wrap
+msgid "Link:"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:165
+msgid "/home/user1/.emacs -E<gt> I<VOL>/config-files/user1/.emacs (from a)"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:168
+msgid "/home/user2/.bashrc -E<gt> I<VOL>/config-files/user2/.bashrc (from b)"
+msgstr ""
+
+#. type: TP
+#: en/live-persistence.conf.5:168
+#, no-wrap
+msgid "Dir:"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:171
+msgid "/homea/user2/.ssh (from c)"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:175
+msgid ""
+"/home/user2/.ssh/config -E<gt> I<VOL>/config-files/user2/.ssh/config (from c)"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:181
+msgid ""
+"One could argue, though, that lines 1 and 2 in the example B<live-"
+"persistence.conf> file above are unnecessary since line 3 already would make "
+"all of /home persistent. The B<link> option is intended for situations where "
+"you don't want a complete directory to be persistent, only certain files in "
+"it or its sub-directories."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:190
+msgid ""
+"Line 4 can be mounted at any time since its I<DIR> (and source directory) is "
+"completely disjoint from all the other custom mounts. When mounted, I<VOL>/"
+"usr will be the rw branch due to the B<union> option, and will only contain "
+"the difference compared to the underlying read-only file system. Hence "
+"packages could be installed into /usr with great space-wise efficiency "
+"compared to bind-mounts, since in the latter case all of /usr would have to "
+"be copied into I<VOL>/usr during the initial bootstrap."
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:193
+msgid "I<live-boot>(7)"
+msgstr ""
+
+#. type: Plain text
+#: en/live-persistence.conf.5:213
+msgid ""
+"live.persist was written by anonym E<lt>I<anonym@lavabit.com>E<gt> for the "
+"Debian project."
+msgstr ""