summaryrefslogtreecommitdiff
path: root/examples/hooks
diff options
context:
space:
mode:
authorDaniel Baumann <daniel@debian.org>2009-11-22 14:36:42 +0100
committerDaniel Baumann <daniel@debian.org>2009-11-22 14:38:00 +0100
commita62f12110b19a52a58d7eae871012202cfa16055 (patch)
tree0bd188079c808ee8956fb5304c46ce8266b49f75 /examples/hooks
downloadvyos-live-build-a62f12110b19a52a58d7eae871012202cfa16055.tar.gz
vyos-live-build-a62f12110b19a52a58d7eae871012202cfa16055.zip
Renaming categories to archive areas (Closes: #519690).
Diffstat (limited to 'examples/hooks')
-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.sh460
-rwxr-xr-xexamples/hooks/all_chroot_rt2570-modules.sh19
-rwxr-xr-xexamples/hooks/all_chroot_sun-java6.sh28
-rwxr-xr-xexamples/hooks/all_chroot_update-initramfs.sh15
-rwxr-xr-xexamples/hooks/all_chroot_virtualbox-ose.sh8
-rwxr-xr-xexamples/hooks/etch_chroot_beryl.sh80
-rwxr-xr-xexamples/hooks/etch_chroot_ipw2100-modules.sh32
-rwxr-xr-xexamples/hooks/etch_chroot_ipw2200-modules.sh32
-rwxr-xr-xexamples/hooks/etch_chroot_ipw3945-modules.sh29
-rwxr-xr-xexamples/hooks/etch_chroot_unionfs-modules.sh23
-rwxr-xr-xexamples/hooks/lenny_binary_live-installer-usbfix.sh96
-rwxr-xr-xexamples/hooks/lenny_chroot_aufs-modules.sh23
-rwxr-xr-xexamples/hooks/lenny_chroot_kpdf-nodrm.sh18
-rwxr-xr-xexamples/hooks/lenny_chroot_madwifi-modules.sh26
-rwxr-xr-xexamples/hooks/lenny_chroot_nvidia-legacy-modules.sh56
-rwxr-xr-xexamples/hooks/lenny_chroot_squashfs-modules.sh23
-rwxr-xr-xexamples/hooks/lenny_chroot_sun-java5.sh28
-rwxr-xr-xexamples/hooks/squeeze_chroot_okular-nodrm.sh18
24 files changed, 1135 insertions, 0 deletions
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..7be8682c1
--- /dev/null
+++ b/examples/hooks/all_binary_debian-installer-banner.sh
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+# This is an binary hook for live-helper(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..c1823b303
--- /dev/null
+++ b/examples/hooks/all_binary_live-helper.sh
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+# This is a hook for live-helper(7) to install live-helper 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-helper ]
+then
+ cp -a live-helper "${DIRECTORY}"
+else
+ mkdir -p "${DIRECTORY}"/live-helper/bin
+ cp -a /usr/bin/lh* "${DIRECTORY}"/live-helper/bin
+
+ cp -a /usr/share/live-helper "${DIRECTORY}"/live-helper/share
+
+ cp -a /usr/share/doc/live-helper "${DIRECTORY}"/live-helper/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..0fec6f9da
--- /dev/null
+++ b/examples/hooks/all_chroot_hal-automount.sh
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+# This is a hook for live-helper(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..188f6a452
--- /dev/null
+++ b/examples/hooks/all_chroot_kernel-purge.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# This is a hook for live-helper(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..159e9bc52
--- /dev/null
+++ b/examples/hooks/all_chroot_linux-modules.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# This is a hook for live-helper(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..3fbb4c497
--- /dev/null
+++ b/examples/hooks/all_chroot_localepurge.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# This is a hook for live-helper(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..55424383c
--- /dev/null
+++ b/examples/hooks/all_chroot_losetup-lukshome.sh
@@ -0,0 +1,460 @@
+#!/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-helper 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 in using "persistent" boot option with a home-rw file in some partition.
+#
+
+
+echo "I: to see how 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 is to create an encrypted filesystem in a file to
+# be used as /home in a live system built with Debian Live Helper with
+# the lukshome 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.
+#
+# 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,51p' /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 know to 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 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
+
+# search for a partition labeled "lukshome"
+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)" = "lukshome" ]
+ then
+ # found one partition named "lukshome"
+ 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 lukshome 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 /luks-home/luks-home.img in ${FREE_LOOP}."
+
+if [ -f /luks-home/luks-home.img ]
+then
+ /sbin/losetup ${FREE_LOOP} /luks-home/luks-home.img
+
+ 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 luks-home.img file in ${CRYPTHOME}!"
+ echo "Proceeding with no encrypted /home."
+ 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
+ ;;
+ 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 scripts, not needed anymore
+# rm -f /root/usr/local/sbin/lukshome.sh
+# rm -f /root/usr/local/sbin/create-lukshome-file.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..408b1383f
--- /dev/null
+++ b/examples/hooks/all_chroot_rt2570-modules.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+# This is a hook for live-helper(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..c86066fba
--- /dev/null
+++ b/examples/hooks/all_chroot_sun-java6.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# This is a hook for live-helper(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-helper 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
diff --git a/examples/hooks/all_chroot_update-initramfs.sh b/examples/hooks/all_chroot_update-initramfs.sh
new file mode 100755
index 000000000..5179f77e9
--- /dev/null
+++ b/examples/hooks/all_chroot_update-initramfs.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# This is a hook for live-helper(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..bcf7289b5
--- /dev/null
+++ b/examples/hooks/all_chroot_virtualbox-ose.sh
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+# This is a hook for live-helper(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/etch_chroot_beryl.sh b/examples/hooks/etch_chroot_beryl.sh
new file mode 100755
index 000000000..ad4cb81dd
--- /dev/null
+++ b/examples/hooks/etch_chroot_beryl.sh
@@ -0,0 +1,80 @@
+#!/bin/sh
+
+# This is a hook for live-helper(7) to install beryl and enable aiglx.
+# It was originally written by Inigo Tejedor Arrondo <inigo@navarrux.org>.
+#
+# To enable it, copy or symlink this hook into your config/chroot_local-hooks
+# directory.
+#
+# For forcing aiglx activation type at boot prompt "live forceaiglx".
+# For forcing aiglx deactivation type "live noaiglx".
+
+# Importing archive signing key
+wget -O - http://debian.beryl-project.org/root@lupine.me.uk.gpg | apt-key add -
+
+# Updating indices
+apt-get update
+
+# Installing packages
+PACKAGES="beryl beryl-core beryl-manager beryl-plugins beryl-settings beryl-settings-bindings beryl-settings-simple mesa-utils"
+
+dpkg -s gnome-core > /dev/null 2>&1 && PACKAGES="${PACKAGES} emerald emerald-themes heliodor"
+dpkg -s kde-core > /dev/null 2>&1 && PACKAGES="${PACKAGES} aquamarine"
+
+apt-get install --yes ${PACKAGES}
+
+# Adding init script
+cat > /etc/init.d/aiglx << EOF
+#!/bin/sh
+activate_3d()
+{
+ activate_aiglx
+ activate_beryl
+}
+
+activate_aiglx()
+{
+ echo "" >> /etc/X11/xorg.conf
+ echo "# Added by beryl-hook.sh" >> /etc/X11/xorg.conf
+ echo "Section \"Extensions\"" >> /etc/X11/xorg.conf
+ echo " Option \"Composite\" \"Enable\"" >> /etc/X11/xorg.conf
+ echo "EndSection" >> /etc/X11/xorg.conf
+
+ sed -i -e "s/Section \"Device\""/"Section \"Device\"\n\t Option \"XAANoOffscreenPixmaps\" \"true\"\n\t Option \"AddARGBGLXVisuals\" \"on\"\n\t Option \"AllowGLXWithComposite\" \"true\"/" -e "s/Section \"Module\""/"Section \"Module\"\n\t Load \"i2c\"\n\t Load \"int10\"\n\t Load \"xtrap\"\n\t Load \"vbe\"/" /etc/X11/xorg.conf
+}
+
+activate_beryl()
+{
+ # http://standards.freedesktop.org/autostart-spec/autostart-spec-latest.html
+ ! [ -d /etc/xdg/autostart ] && mkdir -p /etc/xdg/autostart
+
+cat > /etc/xdg/autostart/beryl-manager.desktop << EOS
+[Desktop Entry]
+Encoding=UTF-8
+Name=Beryl Manager
+GenericName=3D Window Manager
+Comment=Beryl Manager daemon
+Icon=
+Exec=beryl-starter
+Terminal=false
+Type=Application
+Categories=
+EOS
+
+cat > /usr/local/bin/beryl-starter << EOS
+#!/bin/sh
+glxinfo > /dev/null 2>&1 && beryl-manager
+EOS
+
+chmod 0755 /usr/local/bin/beryl-starter
+}
+
+if ! cat /proc/cmdline | grep noaiglx > /dev/null
+then
+ echo "Configuring xorg for aiglx..."
+ activate_3d
+fi
+EOF
+
+chmod 0755 /etc/init.d/aiglx
+update-rc.d aiglx defaults
diff --git a/examples/hooks/etch_chroot_ipw2100-modules.sh b/examples/hooks/etch_chroot_ipw2100-modules.sh
new file mode 100755
index 000000000..e246eb251
--- /dev/null
+++ b/examples/hooks/etch_chroot_ipw2100-modules.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+# This is a hook for live-helper(7) to install ipw2100 drivers
+# To enable it, copy or symlink this hook into your config/chroot_local-hooks
+# directory.
+#
+# Note: This hook requires packages from the contrib category. Make sure you enabled
+# it in your configuration.
+
+apt-get install --yes build-essential
+
+# Building kernel module
+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 ipw2100 -l ${VERSION}
+done
+
+module-assistant clean ipw2100
+
+# Installing firmware (http://ipw2100.sourceforge.net/firmware.php)
+wget --referer "http://ipw2100.sourceforge.net/firmware.php" "http://ipw2100.sourceforge.net/firmware.php?i_agree_to_the_license=yes&f=ipw2100-fw-1.3.tgz" -O /tmp/ipw2100-fw-1.3.tgz
+
+cd /tmp
+tar xfvz ipw2100-fw-1.3.tgz
+mv ipw2100-1.3* /lib/firmware
+rm -f ipw2100-fw-1.3.tgz
+cd ${OLDPWD}
diff --git a/examples/hooks/etch_chroot_ipw2200-modules.sh b/examples/hooks/etch_chroot_ipw2200-modules.sh
new file mode 100755
index 000000000..145ca8b80
--- /dev/null
+++ b/examples/hooks/etch_chroot_ipw2200-modules.sh
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+# This is a hook for live-helper(7) to install ipw2200 drivers
+# To enable it, copy or symlink this hook into your config/chroot_local-hooks
+# directory.
+#
+# Note: This hook requires packages from the contrib category. Make sure you enabled
+# it in your configuration.
+
+apt-get install --yes build-essential
+
+# Building kernel mdoule
+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 ipw2200 -l ${VERSION}
+done
+
+module-assistant clean ipw2200
+
+# Installing firmware (http://ipw2200.sourceforge.net/firmware.php)
+wget --referer "http://ipw2200.sourceforge.net/firmware.php" "http://ipw2200.sourceforge.net/firmware.php?i_agree_to_the_license=yes&f=ipw2200-fw-3.0.tgz" -O /tmp/ipw2200-fw-3.0.tgz
+
+cd /tmp
+tar xfvz ipw2200-fw-3.0.tgz
+cp ipw2200-fw-3.0/*.fw /lib/firmware/
+rm -rf ipw2200-fw-3.0*
+cd ${OLDPWD}
diff --git a/examples/hooks/etch_chroot_ipw3945-modules.sh b/examples/hooks/etch_chroot_ipw3945-modules.sh
new file mode 100755
index 000000000..f805cf956
--- /dev/null
+++ b/examples/hooks/etch_chroot_ipw3945-modules.sh
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# This is a hook for live-helper(7) to install ipw3945 drivers
+# To enable it, copy or symlink this hook into your config/chroot_local-hooks
+# directory.
+#
+# Note: This hook requires packages from the contrib and non-free category. Make
+# sure you enabled it in your configuration.
+
+apt-get install --yes build-essential
+
+# Building kernel module
+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 ipw3945 -l ${VERSION}
+done
+
+module-assistant clean ipw3945
+
+# Installing additional stuff
+apt-get install firmware-ipw3945 ipw3945d
+
+# hackish, autorun regulatory daemon, update-rc.d will reject that
+ln -s /etc/init.d/ipw3945d /etc/rc2.d/S19ipw3945d
diff --git a/examples/hooks/etch_chroot_unionfs-modules.sh b/examples/hooks/etch_chroot_unionfs-modules.sh
new file mode 100755
index 000000000..20f088670
--- /dev/null
+++ b/examples/hooks/etch_chroot_unionfs-modules.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+# This is a hook for live-helper(7) to install unionfs drivers
+# To enable it, copy or symlink this hook into your config/chroot_local-hooks
+# directory.
+#
+# Note: You only want to use this hook if there is no prebuild unionfs-modules-*
+# package available for your kernel flavour.
+
+apt-get install --yes build-essential
+
+# Building kernel module
+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 unionfs -l ${VERSION}
+done
+
+module-assistant clean unionfs
diff --git a/examples/hooks/lenny_binary_live-installer-usbfix.sh b/examples/hooks/lenny_binary_live-installer-usbfix.sh
new file mode 100755
index 000000000..ded8b80ed
--- /dev/null
+++ b/examples/hooks/lenny_binary_live-installer-usbfix.sh
@@ -0,0 +1,96 @@
+#!/bin/sh
+
+echo "BINARY-HOOK: fix install from USB in Lenny."
+
+# This is a *binary-hook* to allow disk installations from USB for
+# Debian 5.0.x Lenny. Place this file in config/binary_local-hooks/,
+# make it executable and rebuild your live image (binary only).
+
+# This workaround for debian-installer was adapted from Chris Lamb
+original patch:
+# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=498143#5
+
+# It works by fooling apt-setup. With an existing /hd-media directory
+# apt-setup will not try to umount /cdrom. Enable live installer with
+# lh_config:
+#
+# lh_config --debian-installer "live"
+#
+# Rebuild your binary image. No options needed on boot.
+
+cat > cdrom-detect.postinst.patch << 'EOF'
+@@ -44,6 +44,30 @@ do
+ fi
+ done
+
++ # Try disk partitions masquerading as Debian CDs for Debian Live
++ # "usb-hdd" images. Only vfat and ext are supported.
++ modprobe vfat >/dev/null 2>&1 || true
++ for device in $(list-devices partition); do
++ if mount -t vfat -o ro,exec $device /cdrom ||
++ mount -t ext2 -o ro,exec $device /cdrom; then
++ log "Pseudo CD-ROM mount succeeded: device=$device"
++
++ # Test whether it's a Debian CD
++ if [ -e /cdrom/.disk/info ]; then
++ mounted=1
++ db_set cdrom-detect/cdrom_device $device
++ # fake hd-media install so that apt-setup doesn't break.
++ mkdir /hd-media
++ break
++ else
++ log "Ignoring pseudo CD-ROM device $device - it is not a Debian CD"
++ umount /cdrom 2>/dev/null || true
++ fi
++ else
++ log "Psuedo CD-ROM mount failed: device=$device"
++ fi
++ done
++
+ if [ "$mounted" = "1" ]; then
+ break
+ fi
+
+EOF
+
+# for the syslinux installer
+mkdir usb-install-syslinux
+cd usb-install-syslinux
+zcat ../binary/install/initrd.gz | cpio -iv
+patch ./var/lib/dpkg/info/cdrom-detect.postinst < ../cdrom-detect.postinst.patch
+PATCH_ERROR=${?}
+if [ "${PATCH_ERROR}" != 0 ]
+then
+ # if there was an error, say it and undo everything.
+ echo "ERROR: error while patching cdrom-detect.postinst."
+ cd ..
+ rmdir -rf usb-install-syslinux
+ exit 0
+fi
+# rebuild the initrd
+find . -print0 | cpio -0 -H newc -ov | gzip -c > ../initrd-new.gz
+cd ..
+mv initrd-new.gz binary/install/initrd.gz
+rm -rf usb-install-syslinux
+
+# for the gtk installer
+mkdir usb-install-gtk
+cd usb-install-gtk
+zcat ../binary/install/gtk/initrd.gz | cpio -iv
+patch ./var/lib/dpkg/info/cdrom-detect.postinst < ../cdrom-detect.postinst.patch
+PATCH_ERROR=${?}
+if [ "${PATCH_ERROR}" != 0 ]
+then
+ # if there was an error, say it and undo everything
+ echo "ERROR: error while patching cdrom-detect.postinst."
+ cd ..
+ rmdir -rf usb-install-gtk
+ exit 0
+fi
+# rebuild the initrd
+find . -print0 | cpio -0 -H newc -ov | gzip -c > ../initrd-new.gz
+cd ..
+mv initrd-new.gz binary/install/gtk/initrd.gz
+rm -rf usb-install-gtk
+
+rm cdrom-detect.postinst.patch
diff --git a/examples/hooks/lenny_chroot_aufs-modules.sh b/examples/hooks/lenny_chroot_aufs-modules.sh
new file mode 100755
index 000000000..e70dcc749
--- /dev/null
+++ b/examples/hooks/lenny_chroot_aufs-modules.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+# This is a hook for live-helper(7) to install aufs drivers
+# To enable it, copy or symlink this hook into your config/chroot_local-hooks
+# directory.
+#
+# Note: You only want to use this hook if there is no prebuild aufs-modules-*
+# package available for your kernel flavour.
+
+apt-get install --yes build-essential
+
+# Building kernel module
+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 aufs -l ${VERSION}
+done
+
+module-assistant clean aufs
diff --git a/examples/hooks/lenny_chroot_kpdf-nodrm.sh b/examples/hooks/lenny_chroot_kpdf-nodrm.sh
new file mode 100755
index 000000000..99fa3e9f2
--- /dev/null
+++ b/examples/hooks/lenny_chroot_kpdf-nodrm.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+# This is a hook for live-helper(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/config ]
+then
+ # KDE3 (etch/lenny)
+
+cat > /usr/share/config/kpdfpartrc << EOF
+[General]
+ObeyDRM=false
+EOF
+
+fi
diff --git a/examples/hooks/lenny_chroot_madwifi-modules.sh b/examples/hooks/lenny_chroot_madwifi-modules.sh
new file mode 100755
index 000000000..0686c122b
--- /dev/null
+++ b/examples/hooks/lenny_chroot_madwifi-modules.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+# This is a hook for live-helper(7) to install madwifi drivers
+# To enable it, copy or symlink this hook into your config/chroot_local-hooks
+# directory.
+#
+# Note: This hook requires packages from the contrib category. Make sure you enabled
+# it in your configuration.
+
+apt-get install --yes build-essential
+
+# Building kernel module
+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 madwifi -l ${VERSION}
+done
+
+module-assistant clean madwifi
+
+# Installing additional stuff
+apt-get install --yes madwifi-tools
diff --git a/examples/hooks/lenny_chroot_nvidia-legacy-modules.sh b/examples/hooks/lenny_chroot_nvidia-legacy-modules.sh
new file mode 100755
index 000000000..66d67bcb5
--- /dev/null
+++ b/examples/hooks/lenny_chroot_nvidia-legacy-modules.sh
@@ -0,0 +1,56 @@
+#!/bin/sh
+
+# This is a hook for live-helper(7) to install nvidia-kernel-legacy drivers
+# 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.
+
+apt-get install --yes build-essential
+
+# Building kernel module
+which module-assistant || apt-get install --yes module-assistant nvidia-kernel-common
+module-assistant update
+
+for KERNEL in /boot/vmlinuz-*
+do
+ VERSION="$(basename ${KERNEL} | sed -e 's|vmlinuz-||')"
+
+ module-assistant --non-inter --quiet auto-install nvidia-kernel-legacy -l ${VERSION}
+done
+
+module-assistant clean nvidia-kernel-legacy
+
+# Installing additional stuff
+apt-get install --yes nvidia-glx-legacy nvidia-xconfig discover
+
+# Fix #421028
+if [ -f /usr/lib/xorg/modules/drivers/nvidia_drv.o ]
+then
+ cd /usr/lib/xorg/modules/drivers
+ gcc -shared -o nvidia_drv.so nvidia_drv.o
+ cd ${OLDPWD}
+fi
+
+# Adding init script
+cat > /etc/init.d/nvidia-debian-live << EOF
+#!/bin/sh
+# script that modify xorg configuration enabling
+# the nvidia proprietary module if the card is detected
+# as an NVidia
+
+if discover --type-summary display | grep -i nvidia
+then
+ # forcing depth to 24, bad detection on some card (e.g my GeForce4 440 Go)
+ echo "Configuring Xorg for nvidia ..."
+ nvidia-xconfig -d 24
+else
+ # not with nvidia h/w ? remove those GLX diversions
+ # (FIXME)
+ apt-get --quiet --yes remove nvidia-glx-legacy
+fi
+EOF
+
+chmod 0755 /etc/init.d/nvidia-debian-live
+update-rc.d nvidia-debian-live defaults
diff --git a/examples/hooks/lenny_chroot_squashfs-modules.sh b/examples/hooks/lenny_chroot_squashfs-modules.sh
new file mode 100755
index 000000000..20667e25b
--- /dev/null
+++ b/examples/hooks/lenny_chroot_squashfs-modules.sh
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+# This is a hook for live-helper(7) to install squashfs drivers
+# To enable it, copy or symlink this hook into your config/chroot_local-hooks
+# directory.
+#
+# Note: You only want to use this hook if there is no prebuild
+# squashfs-modules-* package available for your kernel flavour.
+
+apt-get install --yes build-essential
+
+# Building kernel module
+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 squashfs -l ${VERSION}
+done
+
+module-assistant clean squashfs
diff --git a/examples/hooks/lenny_chroot_sun-java5.sh b/examples/hooks/lenny_chroot_sun-java5.sh
new file mode 100755
index 000000000..139efd5ee
--- /dev/null
+++ b/examples/hooks/lenny_chroot_sun-java5.sh
@@ -0,0 +1,28 @@
+#!/bin/sh
+
+# This is a hook for live-helper(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-helper 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-java5-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-java5-bin sun-java5-demo \
+ sun-java5-doc sun-java5-fonts sun-java5-jdk sun-java5-jre \
+ sun-java5-plugin sun-java5-source
+
+# Ensure that /tmp has the right permissions; apparently sun-java5-doc tampers
+# with it
+chmod 1777 /tmp
diff --git a/examples/hooks/squeeze_chroot_okular-nodrm.sh b/examples/hooks/squeeze_chroot_okular-nodrm.sh
new file mode 100755
index 000000000..782133c29
--- /dev/null
+++ b/examples/hooks/squeeze_chroot_okular-nodrm.sh
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+# This is a hook for live-helper(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