summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorDaniel Baumann <daniel@debian.org>2010-09-26 12:38:38 +0200
committerDaniel Baumann <daniel@debian.org>2010-09-26 15:11:45 +0200
commit152d608f61fd22a1414c3a90ba061b790200350a (patch)
tree44a6d3a12cd11067aea2a4d43eb9133cc25bad2f /examples
downloadvyos-live-build-152d608f61fd22a1414c3a90ba061b790200350a.tar.gz
vyos-live-build-152d608f61fd22a1414c3a90ba061b790200350a.zip
Adding debian version 3.0~a1-1.
Diffstat (limited to 'examples')
-rwxr-xr-xexamples/cron/cron.daily155
-rw-r--r--examples/cron/default16
-rwxr-xr-xexamples/cron/images.sh192
-rwxr-xr-xexamples/hooks/all_binary_debian-installer-banner.sh34
-rwxr-xr-xexamples/hooks/all_binary_live-helper.sh24
-rwxr-xr-xexamples/hooks/all_chroot_hal-automount.sh16
-rwxr-xr-xexamples/hooks/all_chroot_kernel-purge.sh10
-rwxr-xr-xexamples/hooks/all_chroot_linux-modules.sh15
-rwxr-xr-xexamples/hooks/all_chroot_localepurge.sh22
-rwxr-xr-xexamples/hooks/all_chroot_losetup-lukshome.sh515
-rwxr-xr-xexamples/hooks/all_chroot_rt2570-modules.sh19
-rwxr-xr-xexamples/hooks/all_chroot_sun-java6.sh31
-rwxr-xr-xexamples/hooks/all_chroot_udev-generators.sh8
-rwxr-xr-xexamples/hooks/all_chroot_update-initramfs.sh15
-rwxr-xr-xexamples/hooks/all_chroot_virtualbox-ose.sh8
-rwxr-xr-xexamples/hooks/squeeze_chroot_okular-nodrm.sh18
16 files changed, 1098 insertions, 0 deletions
diff --git a/examples/cron/cron.daily b/examples/cron/cron.daily
new file mode 100755
index 000000000..561075687
--- /dev/null
+++ b/examples/cron/cron.daily
@@ -0,0 +1,155 @@
+#!/bin/sh
+
+set -e
+
+BUILD="daily"
+HOST="$(hostname)"
+
+# Checking for live-build availability
+if [ ! -x /usr/bin/lb ]
+then
+ exit 0
+fi
+
+# Checking for live-build defaults
+if [ -r /etc/default/live-build_autobuild ]
+then
+ . /etc/default/live-build_autobuild
+else
+ echo "E: /etc/default/live-build_autobuild missing."
+ exit 1
+fi
+
+# Checking for autobuild
+if [ "${AUTOBUILD}" != "true" ]
+then
+ exit 0
+fi
+
+# Checking for build directory
+if [ ! -d "${TEMPDIR}" ]
+then
+ mkdir -p "${TEMPDIR}"/debian-live
+else
+ # FIXME: maybe we should just remove the left overs.
+ echo "E: ${TEMPDIR} needs cleanup."
+ exit 1
+fi
+
+echo "$(date +%b\ %d\ %H:%M:%S) ${HOST} live-build: begin daily build." >> /var/log/live
+
+for ARCHITECTURE in ${ARCHITECTURES}
+do
+ for DISTRIBUTION in ${DISTRIBUTIONS}
+ do
+ for PACKAGES_LIST in ${PACKAGES_LISTS}
+ do
+ if [ ! -f "${DESTDIR}"/"${BUILD}"-builds/${DATE}/log/debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${PACKAGES_LIST}_${DATE}-iso-log.txt ]
+ then
+ # Creating build directory
+ mkdir -p "${TEMPDIR}"/debian-live
+
+ cd "${TEMPDIR}"/debian-live
+ echo "Begin: $(date -R)" > "${TEMPDIR}"/debian-live/log.txt
+
+ # Generating images
+ lh_config -b iso -s tar --distribution ${DISTRIBUTION} --packages-lists ${PACKAGES_LIST} --mirror-bootstrap ${MIRROR_BOOTSTRAP} --mirror-binary ${MIRROR_BINARY} --mirror-binary-security ${MIRROR_BINARY_SECURITY} --source true ${OPTIONS}
+ lh_build >> "${TEMPDIR}"/debian-live/log.txt 2>&1
+
+ echo "End: $(date -R)" >> "${TEMPDIR}"/debian-live/log.txt
+ fi
+
+ if [ -f "${TEMPDIR}"/debian-live/binary.iso ] && [ -f "${TEMPDIR}"/debian-live/source.tar ]
+ then
+ # Creating log directory
+ mkdir -p "${DESTDIR}"/"${BUILD}"-builds/${DATE}/log
+
+ # Moving logs
+ mv "${TEMPDIR}"/debian-live/log.txt "${DESTDIR}"/"${BUILD}"-builds/${DATE}/log/debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${PACKAGES_LIST}_${DATE}-iso-log.txt
+ mv "${TEMPDIR}"/debian-live/packages.txt "${DESTDIR}"/"${BUILD}"-builds/${DATE}/log/debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${PACKAGES_LIST}_${DATE}-iso-packages.txt
+
+ # Creating images directory
+ mkdir -p "${DESTDIR}"/"${BUILD}"-builds/${DATE}/${ARCHITECTURE}
+ mkdir -p "${DESTDIR}"/"${BUILD}"-builds/${DATE}/source
+
+ # Moving images
+ mv "${TEMPDIR}"/debian-live/binary.iso "${DESTDIR}"/"${BUILD}"-builds/${DATE}/${ARCHITECTURE}/debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${PACKAGES_LIST}.iso
+ mv "${TEMPDIR}"/debian-live/source.tar "${DESTDIR}"/"${BUILD}"-builds/${DATE}/source/debian-live-${DISTRIBUTION}-source-${PACKAGES_LIST}.tar
+ fi
+
+ if [ ! -f "${DESTDIR}"/"${BUILD}"-builds/${DATE}/log/debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${PACKAGES_LIST}_${DATE}-usb-hdd-log.txt ]
+ then
+ # Workaround of missing multi-binary support in live-build
+ mv "${TEMPDIR}"/debian-live/binary/casper "${TEMPDIR}"/debian-live/casper.tmp
+ rm -rf "${TEMPDIR}"/debian-live/binary* "${TEMPDIR}"/debian-live/.stage/binary_*
+ mkdir "${TEMPDIR}"/debian-live/binary
+ mv "${TEMPDIR}"/debian-live/casper.tmp "${TEMPDIR}"/debian-live/binary/casper
+ touch "${TEMPDIR}"/debian-live/.stage/binary_chroot
+ touch "${TEMPDIR}"/debian-live/.stage/binary_rootfs
+
+ # Creating build directory
+ mkdir -p "${TEMPDIR}"/debian-live
+
+ cd "${TEMPDIR}"/debian-live
+ echo "Begin: $(date -R)" > "${TEMPDIR}"/debian-live/log.txt
+
+ # Generating images
+ lh_config -b usb-hdd -s tar --distribution ${DISTRIBUTION} --packages-lists ${PACKAGES_LIST} --mirror-bootstrap ${MIRROR_BOOTSTRAP} --mirror-binary ${MIRROR_BINARY} --mirror-binary-security ${MIRROR_BINARY_SECURITY} --source false ${OPTIONS}
+ lh_build >> "${TEMPDIR}"/debian-live/log.txt 2>&1
+
+ echo "End: $(date -R)" >> "${TEMPDIR}"/debian-live/log.txt
+ fi
+
+ if [ -f "${TEMPDIR}"/debian-live/binary.img ]
+ then
+ # Creating log directory
+ mkdir -p "${DESTDIR}"/"${BUILD}"-builds/${DATE}/log
+
+ # Moving logs
+ mv "${TEMPDIR}"/debian-live/log.txt "${DESTDIR}"/"${BUILD}"-builds/${DATE}/log/debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${PACKAGES_LIST}_${DATE}-usb-hdd-log.txt
+ cp "${DESTDIR}"/"${BUILD}"-builds/${DATE}/log/debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${PACKAGES_LIST}_${DATE}-iso-packages.txt "${DESTDIR}"/"${BUILD}"-builds/${DATE}/log/debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${PACKAGES_LIST}_${DATE}-usb-hdd-packages.txt
+
+ # Creating image directory
+ mkdir -p "${DESTDIR}"/"${BUILD}"-builds/${DATE}/${ARCHITECTURE}
+
+ # Moving images
+ mv "${TEMPDIR}"/debian-live/binary.img "${DESTDIR}"/"${BUILD}"-builds/${DATE}/${ARCHITECTURE}/debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${PACKAGES_LIST}.img
+ fi
+
+ # Cleanup
+ cd "${TEMPDIR}"/debian-live
+ lh_clean
+ done
+
+ # Cleanup
+ cd "${TEMPDIR}"/debian-live
+ lh_clean purge
+ done
+done
+
+# Cleaning up
+if [ -f "${TEMPDIR}"/debian-live/chroot/proc/version ]
+then
+ umount "${TEMPDIR}"/debian-live/chroot/proc
+fi
+
+if [ -d "${TEMPDIR}"/debian-live/chroot/sys/kernel ]
+then
+ umount "${TEMPDIR}"/debian-live/chroot/sys
+fi
+
+# Removing build directory
+rm -rf "${TEMPDIR}"
+
+# Creating md5sums
+for DIRECTORY in "${DESTDIR}"/"${BUILD}"-builds/${DATE}/*
+do
+ cd "${DIRECTORY}"
+ md5sum * > MD5SUMS
+done
+
+# Creating current symlink
+rm -f "${DESTDIR}"/"${BUILD}"-builds/current
+ln -s ${DATE} "${DESTDIR}"/"${BUILD}"-builds/current
+
+echo "$(date +%b\ %d\ %H:%M:%S) ${HOST} live-build: end daily build." >> /var/log/live
diff --git a/examples/cron/default b/examples/cron/default
new file mode 100644
index 000000000..1778b5e89
--- /dev/null
+++ b/examples/cron/default
@@ -0,0 +1,16 @@
+# Defaults for /etc/cron.daily/live-build_autobuild
+
+AUTOBUILD="false"
+
+DATE="$(date +%Y%m%d)"
+DESTDIR="/srv/debian-live"
+TEMPDIR="/srv/tmp/live-build"
+
+OPTIONS="--binary-indices false"
+
+ARCHITECTURES="$(dpkg --print-architecture)"
+DISTRIBUTIONS="sid"
+MIRROR_BOOTSTRAP="http://ftp.debian.org/debian/"
+MIRROR_BINARY="http://ftp.debian.org/debian/"
+MIRROR_BINARY_SECURITY="http://security.debian.org/"
+PACKAGES_LISTS="standard rescue gnome-desktop kde-desktop xfce-desktop"
diff --git a/examples/cron/images.sh b/examples/cron/images.sh
new file mode 100755
index 000000000..a6aebd95d
--- /dev/null
+++ b/examples/cron/images.sh
@@ -0,0 +1,192 @@
+#!/bin/sh
+
+set -e
+
+# Static variables
+DISTRIBUTIONS="${DISTRIBUTIONS:-lenny squeeze sid}"
+FLAVOURS="${FLAVOURS:-standard rescue gnome-desktop kde-desktop lxde-desktop xfce-desktop}"
+SOURCE="${SOURCE:-true}"
+
+MIRROR="${MIRROR:-http://cdn.debian.net/debian/}"
+MIRROR_SECURITY="${MIRROR_SECURITY:-http://security.debian.org/}"
+
+# Dynamic variables
+ARCHITECTURE="$(dpkg --print-architecture)"
+DATE="$(date +%Y%m%d)"
+
+Set_defaults ()
+{
+ # Distribution defaults
+ APT_RECOMMENDS="true"
+ BINARY_INDICES="true"
+ DEBIAN_INSTALLER="live"
+ DEBIAN_INSTALLER_GUI="true"
+ PACKAGES="--packages live-installer-launcher"
+ TASKSEL="tasksel"
+
+ # Distribution specific options (ugly!)
+ case "${DISTRIBUTION}" in
+ lenny)
+ APT_RECOMMENDS="false"
+ BINARY_INDICES="true"
+ DEBIAN_INSTALLER="false"
+ PACKAGES=""
+ TASKSEL="aptitude"
+
+ case "${ARCHITECTURE}" in
+ amd64)
+ case "${FLAVOUR}" in
+ gnome-desktop)
+ BINARY_INDICES="false"
+
+ mkdir -p config/chroot_local-hooks
+ cd config/chroot_local-hooks
+ echo "apt-get remove --yes --purge openoffice.org-help-en-us" > package-removals
+ echo "apt-get remove --yes --purge epiphany-browser epiphany-browser-data epiphany-extensions epiphany-gecko" >> package-removals
+ echo "apt-get remove --yes --purge gnome-user-guide" >> package-removals
+ cd -
+ ;;
+
+ kde-desktop)
+ BINARY_INDICES="false"
+ ;;
+ esac
+ ;;
+
+ i386)
+ case "${FLAVOUR}" in
+ gnome-desktop|kde-desktop)
+ BINARY_INDICES="false"
+ KERNEL="-k 686"
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+
+ squeeze)
+ DEBIAN_INSTALLER_DISTRIBUTION="daily"
+ DEBIAN_INSTALLER_GUI="false"
+
+ LIVE_INSTALLER="20"
+ LIVE_BOOT="2.0~a15-1"
+ LIVE_CONFIG="2.0~a15-1"
+
+ mkdir -p config/binary_local-udebs
+ cd config/binary_local-udebs
+ wget -c http://live.debian.net/archive/packages/live-installer/${LIVE_INSTALLER}/live-installer_${LIVE_INSTALLER}.dsc
+ wget -c http://live.debian.net/archive/packages/live-installer/${LIVE_INSTALLER}/live-installer_${LIVE_INSTALLER}.tar.gz
+ wget -c http://live.debian.net/archive/packages/live-installer/${LIVE_INSTALLER}/live-installer_${LIVE_INSTALLER}_i386.udeb
+ cd -
+
+ mkdir -p config/chroot_local-packages
+ cd config/chroot_local-packages
+
+ wget -c http://live.debian.net/archive/packages/live-installer/${LIVE_INSTALLER}/live-installer_${LIVE_INSTALLER}.dsc
+ wget -c http://live.debian.net/archive/packages/live-installer/${LIVE_INSTALLER}/live-installer_${LIVE_INSTALLER}.tar.gz
+ wget -c http://live.debian.net/archive/packages/live-installer/${LIVE_INSTALLER}/live-installer-launcher_${LIVE_INSTALLER}_all.deb
+
+ wget -c http://live.debian.net/archive/packages/live-boot/${LIVE_BOOT}/live-boot_${LIVE_BOOT}.dsc
+ wget -c http://live.debian.net/archive/packages/live-boot/${LIVE_BOOT}/live-boot_${LIVE_BOOT}.diff.gz
+ wget -c http://live.debian.net/archive/packages/live-boot/${LIVE_BOOT}/live-boot_$(echo ${LIVE_BOOT} | awk -F- '{ print $1 }').orig.tar.gz
+ wget -c http://live.debian.net/archive/packages/live-boot/${LIVE_BOOT}/live-boot_${LIVE_BOOT}_all.deb
+ wget -c http://live.debian.net/archive/packages/live-boot/${LIVE_BOOT}/live-boot-initramfs-tools_${LIVE_BOOT}_all.deb
+ wget -c http://live.debian.net/archive/packages/live-boot/${LIVE_BOOT}/live-initramfs_${LIVE_BOOT}_all.deb
+
+ wget -c http://live.debian.net/archive/packages/live-config/${LIVE_CONFIG}/live-config_${LIVE_CONFIG}.dsc
+ wget -c http://live.debian.net/archive/packages/live-config/${LIVE_CONFIG}/live-config_${LIVE_CONFIG}.diff.gz
+ wget -c http://live.debian.net/archive/packages/live-config/${LIVE_CONFIG}/live-config_$(echo ${LIVE_CONFIG} | awk -F- '{ print $1 }').orig.tar.gz
+ wget -c http://live.debian.net/archive/packages/live-config/${LIVE_CONFIG}/live-config_${LIVE_CONFIG}_all.deb
+ wget -c http://live.debian.net/archive/packages/live-config/${LIVE_CONFIG}/live-config-sysvinit_${LIVE_CONFIG}_all.deb
+
+ cd -
+ ;;
+ esac
+}
+
+# Build images
+for DISTRIBUTION in ${DISTRIBUTIONS}
+do
+ rm -rf cache/stages*
+
+ for FLAVOUR in ${FLAVOURS}
+ do
+ if [ -e .stage ]
+ then
+ lb clean
+ fi
+
+ if [ -e config ]
+ then
+ rm -f config/* || true
+ rmdir --ignore-fail-on-non-empty config/* || true
+ fi
+
+ rm -rf cache/packages*
+ rm -rf cache/stages_rootfs
+
+ Set_defaults
+
+ lb config \
+ --apt-recommends ${APT_RECOMMENDS} \
+ --binary-indices ${BINARY_INDICES} \
+ --cache-stages "bootstrap rootfs" \
+ --debian-installer ${DEBIAN_INSTALLER} \
+ --debian-installer-distribution ${DEBIAN_INSTALLER_DISTRIBUTION} \
+ --debian-installer-gui ${DEBIAN_INSTALLER_GUI} \
+ --distribution ${DISTRIBUTION} \
+ --mirror-bootstrap ${MIRROR} \
+ --mirror-chroot ${MIRROR} \
+ --mirror-chroot-security ${MIRROR_SECURITY} \
+ ${PACKAGES} \
+ --packages-lists ${FLAVOUR} \
+ --tasksel ${TASKSEL} ${KERNEL}
+
+ lb build 2>&1 | tee debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.iso.log
+
+ mv binary*.iso debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.iso
+ mv binary.list debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.iso.list
+ mv binary.packages debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.iso.packages
+
+ if [ "${DISTRIBUTION}" = "lenny" ] && [ "${ARCHITECTURE}" != "powerpc" ]
+ then
+ lb clean --binary
+ lb config -binary-images usb-hdd
+ lb binary 2>&1 | tee debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.img.log
+
+ mv binary.img debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.img
+ mv binary.list debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.img.list
+ mv binary.packages debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.img.packages
+ fi
+
+ if [ "${ARCHITECTURE}" != "powerpc" ]
+ then
+ lb clean
+ rm -rf cache/stages_rootfs
+ lb config --binary-images net
+
+ lb build 2>&1 | tee debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.tar.gz.log
+
+ mv binary-net.tar.gz debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.tar.gz
+ mv binary.list debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.tar.gz.list
+ mv binary.packages debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.tar.gz.packages
+
+ mv binary/*/filesystem.squashfs debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.squashfs
+ for memtest in tftpboot/debian-live/${ARCHITECTURE}/memtest*; do cp -f ${memtest} debian-live-${DISTRIBUTION}-${ARCHITECTURE}.$(basename ${memtest}); done || true
+ for kernel in tftpboot/debian-live/${ARCHITECTURE}/vmlinuz*; do cp -f ${kernel} debian-live-${DISTRIBUTION}-${ARCHITECTURE}.$(basename ${kernel}); done
+ for initrd in tftpboot/debian-live/${ARCHITECTURE}/initrd*; do cp ${initrd} debian-live-${DISTRIBUTION}-${ARCHITECTURE}-${FLAVOUR}.$(basename ${initrd}); done
+ fi
+
+ if [ "${SOURCE}" = "true" ]
+ then
+ lb config --source true
+
+ lb source 2>&1 | tee debian-live-${DISTRIBUTION}-source-${FLAVOUR}.log
+
+ mv source.debian.tar.gz debian-live-${DISTRIBUTION}-source-${FLAVOUR}.debian.tar.gz
+ mv source.debian.list debian-live-${DISTRIBUTION}-source-${FLAVOUR}.debian.tar.gz.list
+ mv source.debian-live.tar.gz debian-live-${DISTRIBUTION}-source-${FLAVOUR}.debian-live.tar.gz
+ mv source.debian-live.list debian-live-${DISTRIBUTION}-source-${FLAVOUR}.debian-live.tar.gz.list
+ fi
+ done
+done
diff --git a/examples/hooks/all_binary_debian-installer-banner.sh b/examples/hooks/all_binary_debian-installer-banner.sh
new file mode 100755
index 000000000..76c5d0785
--- /dev/null
+++ b/examples/hooks/all_binary_debian-installer-banner.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+# This is an binary hook for live-build(7) to overwrite the banner
+# in the graphical Debian Installer.
+# To enable it, copy or symlink this hook into your config/binary_local-hooks
+# directory and add a replacement banner.png at:
+#
+# config/binary_local-includes/binary/install/banner.png
+#
+# The file should be a PNG image of dimensions 800 x 75.
+
+set -e
+
+if [ -e config/binary_debian-installer/banner.png ]
+then
+ TARGET_INITRD="binary/install/gtk/initrd.gz"
+ REPACK_TMPDIR="binary.initrd"
+
+ if [ -e "${TARGET_INITRD}" ]
+ then
+ # cpio does not have a "extract to directory", so we must change
+ # directory
+ mkdir -p ${REPACK_TMPDIR}
+ cd ${REPACK_TMPDIR}
+ gzip -d < ../${TARGET_INITRD} | cpio -i --make-directories --no-absolute-filenames
+
+ # Overwrite banner
+ cp ../config/binary_debian-installer/banner.png ./usr/share/graphics/logo_debian.png
+
+ find | cpio -H newc -o | gzip -9 > ../${TARGET_INITRD}
+ cd ..
+ rm -rf ${REPACK_TMPDIR}
+ fi
+fi
diff --git a/examples/hooks/all_binary_live-helper.sh b/examples/hooks/all_binary_live-helper.sh
new file mode 100755
index 000000000..b60f4a339
--- /dev/null
+++ b/examples/hooks/all_binary_live-helper.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+# This is a hook for live-build(7) to install live-build and its config into
+# the binary image.
+# To enable it, copy or symlink this hook into your config/chroot_local-hooks
+# directory.
+
+DIRECTORY="binary/tools/live"
+
+mkdir -p "${DIRECTORY}"
+
+cp -a config "${DIRECTORY}"
+
+if [ -e live-build ]
+then
+ cp -a live-build "${DIRECTORY}"
+else
+ mkdir -p "${DIRECTORY}"/live-build/bin
+ cp -a /usr/bin/lh* "${DIRECTORY}"/live-build/bin
+
+ cp -a /usr/share/live/build "${DIRECTORY}"/live-build/share
+
+ cp -a /usr/share/doc/live-build "${DIRECTORY}"/live-build/doc
+fi
diff --git a/examples/hooks/all_chroot_hal-automount.sh b/examples/hooks/all_chroot_hal-automount.sh
new file mode 100755
index 000000000..2a66fe9d0
--- /dev/null
+++ b/examples/hooks/all_chroot_hal-automount.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+# This is a hook for live-build(7) to enable automaunting with hal for block devices.
+#
+# To enable it, copy or symlink this hook into your config/chroot_local-hooks
+# directory.
+
+# Remove automount disabling
+rm -f /usr/share/hal/fdi/policy/10osvendor/debian-storage-policy-fixed-drives.fdi
+
+# Use ntfs-3g by default to mount ntfs partitions
+if [ -x /usr/bin/ntfs-3g ]
+then
+ rm -f /sbin/mount.ntfs
+ ln -s /usr/bin/ntfs-3g /sbin/mount.ntfs
+fi
diff --git a/examples/hooks/all_chroot_kernel-purge.sh b/examples/hooks/all_chroot_kernel-purge.sh
new file mode 100755
index 000000000..6d8204eea
--- /dev/null
+++ b/examples/hooks/all_chroot_kernel-purge.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# This is a hook for live-build(7) to remove any kernel except the newest one.
+# To enable it, copy or symlink this hook into your config/chroot_local-hooks
+# directory.
+
+for VERSION in $(basename $(ls /boot/vmlinuz-* | head -n-1) | sed -e 's|^vmlinuz-||g')
+do
+ echo apt-get remove --purge linux-image-${VERSION}
+done
diff --git a/examples/hooks/all_chroot_linux-modules.sh b/examples/hooks/all_chroot_linux-modules.sh
new file mode 100755
index 000000000..8b07294bf
--- /dev/null
+++ b/examples/hooks/all_chroot_linux-modules.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# This is a hook for live-build(7) to add entries to /etc/modules.
+# To enable it, copy or symlink this hook into your config/chroot_local-hooks
+# directory.
+
+MODULES=""
+
+for MODULE in ${MODULES}
+do
+ if ! grep -qs /etc/modules ${MODULE}
+ then
+ echo ${MODULE} >> /etc/modules
+ fi
+done
diff --git a/examples/hooks/all_chroot_localepurge.sh b/examples/hooks/all_chroot_localepurge.sh
new file mode 100755
index 000000000..d820330c6
--- /dev/null
+++ b/examples/hooks/all_chroot_localepurge.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# This is a hook for live-build(7) to install localepurge.
+# To enable it, copy or symlink this hook into your config/chroot_local-hooks
+# directory.
+#
+
+cat > /tmp/localepurge.preseed << EOF
+localepurge localepurge/nopurge multiselect en
+#localepurge localepurge/mandelete boolean true
+#localepurge localepurge/dontbothernew boolean false
+localepurge localepurge/showfreedspace boolean false
+#localepurge localepurge/quickndirtycalc boolean true
+#localepurge localepurge/verbose boolean false
+EOF
+debconf-set-selections < /tmp/localepurge.preseed
+rm -f /tmp/localepurge.preseed
+
+apt-get install --yes localepurge
+dpkg-reconfigure localepurge
+
+localepurge
diff --git a/examples/hooks/all_chroot_losetup-lukshome.sh b/examples/hooks/all_chroot_losetup-lukshome.sh
new file mode 100755
index 000000000..95d3c053a
--- /dev/null
+++ b/examples/hooks/all_chroot_losetup-lukshome.sh
@@ -0,0 +1,515 @@
+#!/bin/sh
+
+# This hook was based and adapted from:
+# http://lists.debian.org/debian-live/2009/04/msg00186.html
+# ---------------------------------------------------------
+#
+#
+# NOTE 1: this was not tested with persistent boot option,
+# but it seems logic that persistent and lukshome can't
+# coexist as boot options (because of snapshots and others), so lukshome
+# won't be executed if any persistent option is given on boot.
+#
+# NOTE 2: if using an USB key, it will eventualy end up failing someday.
+# You should backup the encrypted disk image file itself (luks-home.img) to
+# prevent loosing your data.
+#
+# This hook will create 3 files:
+#
+# /usr/local/sbin/create-lukshome-file.sh
+# script to create an disk file image (luks-home.img) with a
+# LUKS encrypted ext2 filesystem inside to be placed in a
+# partition labeled lukshome.
+#
+# /usr/local/sbin/lukshome.sh
+# detects a partition with lukshome label, updates fstab and crypttab so
+# the encrypted file is mounted later in a loopback device (/dev/loopX).
+# It also changes /etc/init.d/umountfs so the encrypted home is correctly
+# umounted.
+#
+# /usr/share/initramfs-tools/scripts/live-bottom/13live_luks_home
+# a live-initramfs hook to execute lukshome.sh script
+# in initrd.
+#
+#
+# HOWTO lukshome
+# --------------
+#
+# First build your live system with this hook inside config/chroot_local-hooks/.
+# If you have an existing live-build build directory with a previous live
+# build, you might have to run
+#
+# lh_clean
+# lh_clean --stage
+#
+# to make sure this hook is included in the live system. Then (re)build your
+# live system.
+#
+# lh_build
+#
+# After booting your (re)built live system, setup the encrypted losetup
+# filesystem to be used as /home using the instructions present in the
+# create-lukshome-file.sh script.
+#
+# Reboot and now use the "lukshome" boot option to mount the encrypted /home,
+# like when using "persistent" boot option with a home-rw file in some partition.
+#
+
+
+# install needed packages (in case apt recommends are off)
+# make sure that cryptsetup is installed
+echo "I: checking for cryptsetup."
+if [ ! -x /sbin/cryptsetup ]
+then
+ echo "I: installing cryptsetup."
+ DEBIAN_FRONTEND="dialog" apt-get install --yes --force-yes -y cryptsetup
+fi
+
+
+echo "I: to see how to use lukshome hook run create-lukshome-file.sh as root."
+echo "I: creating script /usr/local/sbin/create-lukshome-file.sh"
+cat > /usr/local/sbin/create-lukshome-file.sh << 'EOF'
+#!/bin/sh
+
+# This script will create an encrypted filesystem in a file to
+# be used as /home in a live system built with Debian Live Helper with
+# this hook in config/chroot_local-hooks/.
+#
+# The lukshome boot option will do the following:
+# - search for a partition with label 'lukshome'
+# (btw, you can't use the live system partition itself)
+# - mount the partition as /luks-home in the live system
+# - open /luks-home/luks-home.img file as a loopback device (/dev/loop)
+# - open the loopback device with cryptsetup
+# - mount the encrypted filesystem as /home
+#
+# This script will only create the luks-home.img file. Next are details of how
+# to use this script.
+#
+# CAUTION! THIS CAN WIPE YOUR DATA, backup first!
+# Be sure to understand what you will do, or you can end up
+# wiping disks or partitions you don't want to!
+#
+# Login as root:
+# $ sudo -i
+#
+# Create a mountpoint (don't use /mnt, it will be used by this script):
+# # mkdir /media/target
+#
+# !!! *** Skip the next line if you don't want to wipe a partition *** !!!
+# !!! * Just change the partition label to 'lukshome' (without quotes) * !!!
+# Create an ext2 filesystem in a partition with 'lukshome' label:
+# # mkfs.ext2 -L lukshome /dev/the_partition_to_be_used
+#
+# Mount the partition and cd into it:
+# # mount /dev/the_partition_to_be_used /media/target
+# # cd /media/target
+#
+# Create the encrypted file:
+# # create-lukshome-file.sh
+#
+# The script is located in /usr/local/sbin/, so it's in root $PATH.
+# It will copy the directories in /home/* into the file.
+# Now return to $HOME to be able to umount the target partition:
+# # cd
+#
+# Umount the target partition:
+# # umount /media/target
+#
+# Reboot and use the "lukshome" boot option to mount the encrypted /home,
+# like in using "persistent" boot option with a home-rw file in some partition.
+#
+# To use another partition label use the following boot options:
+# lukshome lukspart=partition_label
+#
+# If you want to use another filename instead of luks-home.img, rename (mv)
+# the file and use the following boot options:
+# lukshome luksfile=filename
+#
+# Both boot options can be used at the same time, but always with lukshome:
+# lukshome lukspart=partition_label luksfile=filename
+#
+# By default, if just the lukshome boot option is used, the script will
+# search for a partition labeled 'lukshome' and a file named 'luks-home.img'.
+#
+# Press Shift-PgUp/Shift-PgDn to scrool the instructions on the screen.
+
+
+# check if root/sudo
+if [ "${USER}" != "root" ]
+then
+ echo " ** Please run this script as root or with sudo."
+ exit 1
+fi
+
+# check if /mnt is available and empty
+mount | grep "/mnt" > /dev/null
+MNT_IS_MOUNTED=${?}
+if [ "${MNT_IS_MOUNTED}" == 0 ]
+then
+ echo "** ERROR: /mnt is mounted at the moment. Please umount it to use this script."
+ exit 1
+fi
+if [ "$(ls -A /mnt)" ]
+then
+ echo "** ERROR: /mnt is not empty. An empty /mnt is needed to use this script."
+ exit 1
+fi
+
+# check if /dev/mapper/luks-home is available
+if [ -f /dev/mapper/luks-home ]
+then
+ echo "** ERROR: /dev/mapper/luks-home is being used at the moment. Please run «cryptsetup remove luks-home» to use this script."
+ exit 1
+fi
+
+
+# show instructions
+echo ""
+echo "** Instructions to use create-lukshome-file.sh (this script):"
+sed -n '2,64p' /usr/local/sbin/create-lukshome-file.sh | sed 's/^.//'
+echo ""
+
+
+# proceed?
+echo "** Do you want to proceed with this script? (y/N)"
+read CONFIRM
+
+case "${CONFIRM}" in
+ y*|Y*)
+ echo ""
+ ;;
+ *)
+ exit 0
+ ;;
+esac
+
+
+# create file
+echo ""
+echo "** Please type the size of the file disk image."
+echo "Size of the file in MB: "
+read FILE_SIZE
+
+echo ""
+echo "** Creating file luks-home.img."
+echo "** Filling file image with /dev/urandom output. It will take some time."
+echo "(Edit this script to use /dev/random. It's known to be more secure but "
+echo "it will take a *very* long time to complete."
+dd if=/dev/urandom of=luks-home.img bs=1M count=${FILE_SIZE}
+# To use /dev/random comment the line above and uncomment the next line
+#dd if=/dev/random of=luks-home.img ibs=128 obs=128 count=$((8192*${FILE_SIZE}))
+# You might have to increase kernel entropy by moving the mouse, typing keyboard,
+# make the computer read the disk or use network connections.
+echo "** Done."
+echo ""
+
+# losetup
+FREE_LOSETUP=$(losetup -f)
+echo "** Using ${FREE_LOSETUP} to open luks-home.img"
+losetup ${FREE_LOSETUP} ./luks-home.img
+echo "** Done."
+echo ""
+
+# cryptsetup
+echo "** Running cryptsetup."
+echo ""
+echo "** luksFormat"
+cryptsetup luksFormat ${FREE_LOSETUP}
+EXIT_CODE=${?}
+if [ "${EXIT_CODE}" != 0 ]
+then
+ echo "** ERROR: Error while trying to format disk file image."
+ losetup -d ${FREE_LOSETUP}
+ exit 1
+fi
+echo ""
+
+echo "** luksOpen"
+cryptsetup luksOpen ${FREE_LOSETUP} luks-home
+EXIT_CODE=${?}
+if [ "${EXIT_CODE}" != 0 ]
+then
+ echo "** ERROR: Error while trying to open LUKS file image."
+ losetup -d ${FREE_LOSETUP}
+ exit 1
+fi
+echo ""
+
+# format encrypted filesystem
+echo "** Now formating /dev/mapper/luks-home"
+mkfs.ext2 /dev/mapper/luks-home
+EXIT_CODE=${?}
+if [ "${EXIT_CODE}" != 0 ]
+then
+ echo "** ERROR: Error while trying to format LUKS file."
+ cryptsetup remove luks-home
+ losetup -d ${FREE_LOSETUP}
+ exit 1
+fi
+echo ""
+
+# mount in /mnt
+echo "** Now mounting luks-home.img in /mnt"
+mount /dev/mapper/luks-home /mnt
+EXIT_CODE=${?}
+if [ "${EXIT_CODE}" != 0 ]
+then
+ echo "** ERROR: Error while trying to mount LUKS file in /mnt."
+ umount /mnt
+ cryptsetup remove luks-home
+ losetup -d ${FREE_LOSETUP}
+ exit 1
+fi
+echo ""
+
+# copy files
+HOME_DIR="/home/*"
+
+echo "** Copying ${HOME_DIR}."
+cp -rav ${HOME_DIR} /mnt
+EXIT_CODE=${?}
+if [ "${EXIT_CODE}" != 0 ]
+then
+ echo "** ERROR: Error while trying to copy files to /mnt."
+ umount /mnt
+ cryptsetup remove luks-home
+ losetup -d ${FREE_LOSETUP}
+ exit 1
+fi
+echo "** Done."
+echo ""
+
+echo "** All done."
+echo "** Closing losetup, cryptsetup and mounted /mnt."
+# umount and close
+umount /mnt
+cryptsetup remove luks-home
+losetup -d ${FREE_LOSETUP}
+echo "** The disk file image luks-home.img is done and ready. Move it into a partition"
+echo "** with 'lukshome' as label and reboot with lukshome boot option to use it."
+echo ""
+
+EOF
+
+chmod 0755 /usr/local/sbin/create-lukshome-file.sh
+
+
+
+echo "I: creating script /usr/local/sbin/lukshome.sh"
+cat > /usr/local/sbin/lukshome.sh << 'EOF'
+#!/bin/sh
+
+# this script is to be executed by a hook in live-initramfs. It searches
+# for a partition with 'lukshome' label, mounts it as /luks-home, then opens an
+# encrypted disk image file called luks-home.img as a loopback device, opens it
+# with cryptsetup and finally mounts the present filesystem as /home.
+# It also changes /etc/init.d/umountfs to umount the lukshome partition
+# (/luks-home) and clear the loopback device on shutdown.
+
+# functions taken from live-helpers
+. /usr/share/initramfs-tools/scripts/live-helpers
+
+# set default values
+LUKSPART="lukshome"
+LUKSFILE="luks-home.img"
+
+# get boot option lukshome - adapted from live-helpers
+for ARGUMENT in $(cat /proc/cmdline)
+do
+ case "${ARGUMENT}" in
+ lukshome)
+ LUKSHOME=1
+ ;;
+ luksfile=*)
+ LUKSFILE="${ARGUMENT#luksfile=}"
+ LUKSHOME=1
+ ;;
+ lukspart=*)
+ LUKSPART="${ARGUMENT#lukspart=}"
+ LUKSHOME=1
+ ;;
+
+ esac
+done
+
+# search for a partition labeled "lukshome" or $LUKSPART
+for sysblock in $(echo /sys/block/* | tr ' ' '\n' | grep -v loop | grep -v ram | grep -v fd)
+do
+ for dev in $(subdevices "${sysblock}")
+ do
+ devname=$(sys2dev "${dev}")
+ # find partition name and filesystem type
+ if [ "$(/lib/udev/vol_id -l ${devname} 2>/dev/null)" = "${LUKSPART}" ]
+ then
+ # found one partition with correct label
+ CRYPTHOME="${devname}"
+ # don't search further
+ break
+ fi
+ done
+ # if already found, don't search further
+ if [ -n "${CRYPTHOME}" ]
+ then
+ break
+ fi
+done
+
+# if no partition found, exit
+if [ -z "${CRYPTHOME}" ]
+then
+ echo "Could not find any partition with ${LUKSPART} label. "
+ echo "Proceeding with no encrypted /home."
+ exit 0
+fi
+
+# mount partition where file container is
+echo "Mounting /luks-home with ${CRYPTHOME}."
+mkdir -p /luks-home
+mount -t $(get_fstype "${CRYPTHOME}") "${CRYPTHOME}" /luks-home
+
+# mount losetup encrypted file
+FREE_LOOP="$(/sbin/losetup -f)"
+echo "Opening file /luks-home/${LUKSFILE} in ${FREE_LOOP}."
+
+if [ -f /luks-home/"${LUKSFILE}" ]
+then
+ /sbin/losetup ${FREE_LOOP} /luks-home/"${LUKSFILE}"
+
+ echo "Adding ${FREE_LOOP} home to /etc/crypttab and setting it as /home in /etc/fstab."
+
+ # update crypttab
+ echo "home ${FREE_LOOP} none luks,check,timeout" >> /etc/crypttab
+
+ # update fstab
+ echo "/dev/mapper/home /home ext2 defaults,noatime 0 0" >> /etc/fstab
+else
+ echo "Did not found any file named ${LUKSFILE} in ${CRYPTHOME}!"
+ echo "Proceeding with no encrypted /home."
+ sleep 2
+ umount -r /luks-home
+ exit 0
+fi
+
+# changes to /etc/init.d/umountfs to make /luks-home being umounted on shutdown
+sed -i 's/[\t]do_stop/CHANGE_HERE/' /etc/init.d/umountfs
+sed -i 's|CHANGE_HERE| \
+ # added by lukshome hook - umount \/luks-home to prevent busy device on shutdown \
+ LOOP_LUKSHOME=$(losetup -a \| grep luks-home \|cut -c 1-10) \
+ if [ -n ${LOOP_LUKSHOME} ] \
+ then \
+ umount -r -d \/home \
+ cryptsetup remove home \
+ losetup -d ${LOOP_LUKSHOME} \
+ umount -r \/luks-home \
+ fi \
+\
+ do_stop \
+|' /etc/init.d/umountfs
+
+EOF
+
+chmod 0755 /usr/local/sbin/lukshome.sh
+
+
+
+# scripts/live-bottom/13live_luks_home, right after 12fstab
+echo "I: creating /usr/share/initramfs-tools/scripts/live-bottom/13live_luks_home"
+
+cat > /usr/share/initramfs-tools/scripts/live-bottom/13live_luks_home << 'EOF'
+#!/bin/sh
+
+#set -e
+
+# initramfs-tools header
+
+PREREQ=""
+
+prereqs()
+{
+ echo "${PREREQ}"
+}
+
+case "${1}" in
+ prereqs)
+ prereqs
+ exit 0
+ ;;
+esac
+
+. /scripts/live-functions
+
+# live-initramfs hook to use an disk image file with encrypted filesystem as /home.
+
+log_begin_msg "Executing losetup-lukshome"
+
+# get boot option lukshome - adapted from live-helpers
+for ARGUMENT in $(cat /proc/cmdline)
+do
+ case "${ARGUMENT}" in
+ lukshome)
+ LUKSHOME=1
+ ;;
+ luksfile=*)
+ LUKSFILE="${ARGUMENT#luksfile=}"
+ LUKSHOME=1
+ ;;
+ lukspart=*)
+ LUKSPART="${ARGUMENT#lukspart=}"
+ LUKSHOME=1
+ ;;
+
+ esac
+done
+
+# don't use persistent* and lukshome
+if [ -n "${PERSISTENT}" ] && [ -n "${LUKSHOME}" ]
+then
+ echo "You should not use persistent and lukshome at the same time."
+ echo "Skipping lukshome. Persistent medium, if any, will be used instead."
+ log_end_msg
+ exit 0
+fi
+
+# if no lukshome boot option, exit
+if [ -z "${LUKSHOME}" ]
+then
+ log_end_msg
+ exit 0
+fi
+
+log_begin_msg "Executing lukshome.sh script."
+
+mount -o bind /sys /root/sys
+mount -o bind /proc /root/proc
+mount -o bind /dev /root/dev
+
+# lukshome.sh detects lukshome partition and file location, mounts it
+# and opens the file and then updates fstab and crypttab to use it as /home.
+chroot /root /usr/local/sbin/lukshome.sh
+
+umount /root/sys
+umount /root/proc
+umount /root/dev
+
+# delete the lukshome.sh script, not needed anymore
+# rm -f /root/usr/local/sbin/lukshome.sh
+
+log_end_msg
+
+EOF
+
+chmod 0755 /usr/share/initramfs-tools/scripts/live-bottom/13live_luks_home
+
+
+
+echo "I: update-initramfs to include 13live_luks_home."
+# if you already have installed the update-initramfs.sh hook, you can remove
+# this.
+
+for KERNEL in /boot/vmlinuz-*
+do
+ VERSION="$(basename ${KERNEL} | sed -e 's|vmlinuz-||')"
+
+ update-initramfs -k ${VERSION} -t -u
+done
diff --git a/examples/hooks/all_chroot_rt2570-modules.sh b/examples/hooks/all_chroot_rt2570-modules.sh
new file mode 100755
index 000000000..b8ffdadb7
--- /dev/null
+++ b/examples/hooks/all_chroot_rt2570-modules.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+# This is a hook for live-build(7) to install ralink rt2570 drivers
+# To enable it, copy or symlink this hook into your config/chroot_local-hooks
+# directory.
+
+apt-get install --yes build-essential
+
+which module-assistant || apt-get install --yes module-assistant
+module-assistant update
+
+for KERNEL in /boot/vmlinuz-*
+do
+ VERSION="$(basename ${KERNEL} | sed -e 's|vmlinuz-||')"
+
+ module-assistant --non-inter --quiet auto-install rt2570-source -l ${VERSION}
+done
+
+module-assistant clean rt2570-source
diff --git a/examples/hooks/all_chroot_sun-java6.sh b/examples/hooks/all_chroot_sun-java6.sh
new file mode 100755
index 000000000..4faff163f
--- /dev/null
+++ b/examples/hooks/all_chroot_sun-java6.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+# This is a hook for live-build(7) to install sun-java.
+# To enable it, copy or symlink this hook into your config/chroot_local-hooks
+# directory.
+#
+# Note: This hook requires packages from the non-free category. Make sure you
+# enabled it in your configuration.
+
+# live-build sets DEBIAN_FRONTEND to 'noninteractive' to advise debconf to not
+# ask any questions while installing packages. Suns redistribution terms for
+# Java do not allow this, therefore we need to overwrite DEBIAN_FRONTEND for
+# this apt-get call only.
+
+# In case you do accept the license terms, you can also preseed the values
+# for a complete non-interactive build, by uncommenting the following three lines:
+
+#echo "sun-java6-bin shared/accepted-sun-dlj-v1-1 boolean true" > /root/preseed
+#debconf-set-selections < /root/preseed
+#rm -f /root/preseed
+
+DEBIAN_FRONTEND="dialog" apt-get install --yes sun-java6-bin sun-java6-demo \
+ sun-java6-doc sun-java6-fonts sun-java6-jdk sun-java6-jre \
+ sun-java6-plugin sun-java6-source
+
+# Ensure that /tmp has the right permissions; apparently sun-java5-doc tampers
+# with it
+chmod 1777 /tmp
+
+# Set sun-java as default java
+update-alternatives --set java /usr/lib/jvm/java-6-sun/jre/bin/java
diff --git a/examples/hooks/all_chroot_udev-generators.sh b/examples/hooks/all_chroot_udev-generators.sh
new file mode 100755
index 000000000..9a5fed2ca
--- /dev/null
+++ b/examples/hooks/all_chroot_udev-generators.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# This is a hook for live-build(7) to remove udev persistent device generator
+# rules.
+# To enable it, copy or symlink this hook into your config/chroot_local-hooks
+# directory.
+
+rm -f /etc/udev/rules.d/*persistent-net-generator.rules
diff --git a/examples/hooks/all_chroot_update-initramfs.sh b/examples/hooks/all_chroot_update-initramfs.sh
new file mode 100755
index 000000000..b75b135bc
--- /dev/null
+++ b/examples/hooks/all_chroot_update-initramfs.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# This is a hook for live-build(7) to rebuild the initramfs image.
+# To enable it, copy or symlink this hook into your config/chroot_local-hooks
+# directory.
+#
+# Note: You only want to use this hook if you have modified any initramfs-script
+# during the build and need to refresh the initrd.img for that purpose.
+
+for KERNEL in /boot/vmlinuz-*
+do
+ VERSION="$(basename ${KERNEL} | sed -e 's|vmlinuz-||')"
+
+ update-initramfs -k ${VERSION} -t -u
+done
diff --git a/examples/hooks/all_chroot_virtualbox-ose.sh b/examples/hooks/all_chroot_virtualbox-ose.sh
new file mode 100755
index 000000000..e1dab4ad4
--- /dev/null
+++ b/examples/hooks/all_chroot_virtualbox-ose.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# This is a hook for live-build(7) to enable virtualbox-ose module.
+# To enable it, copy or symlink this hook into your config/chroot_local-hooks
+# directory.
+
+# Enabling loading of vboxdrv
+sed -i -e 's|^LOAD_VBOXDRV_MODULE=.*$|LOAD_VBOXDRV_MODULE=1|' /etc/default/virtualbox-ose
diff --git a/examples/hooks/squeeze_chroot_okular-nodrm.sh b/examples/hooks/squeeze_chroot_okular-nodrm.sh
new file mode 100755
index 000000000..96ce09458
--- /dev/null
+++ b/examples/hooks/squeeze_chroot_okular-nodrm.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+# This is a hook for live-build(7) to configure KDE's PDF viewer to ignore
+# manipulation restriction on "DRM protect" PDF documents.
+#
+# To enable it, copy or symlink this hook into your config/chroot_local-hooks
+# directory.
+
+if [ -d /usr/share/kde4/config ]
+then
+ # KDE4 (squeeze/sid)
+
+cat > /usr/share/kde4/config/okularpartrc << EOF
+[General]
+ObeyDRM=false
+EOF
+
+fi