From 152d608f61fd22a1414c3a90ba061b790200350a Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 26 Sep 2010 12:38:38 +0200 Subject: Adding debian version 3.0~a1-1. --- examples/cron/cron.daily | 155 +++++++ examples/cron/default | 16 + examples/cron/images.sh | 192 ++++++++ .../hooks/all_binary_debian-installer-banner.sh | 34 ++ examples/hooks/all_binary_live-helper.sh | 24 + examples/hooks/all_chroot_hal-automount.sh | 16 + examples/hooks/all_chroot_kernel-purge.sh | 10 + examples/hooks/all_chroot_linux-modules.sh | 15 + examples/hooks/all_chroot_localepurge.sh | 22 + examples/hooks/all_chroot_losetup-lukshome.sh | 515 +++++++++++++++++++++ examples/hooks/all_chroot_rt2570-modules.sh | 19 + examples/hooks/all_chroot_sun-java6.sh | 31 ++ examples/hooks/all_chroot_udev-generators.sh | 8 + examples/hooks/all_chroot_update-initramfs.sh | 15 + examples/hooks/all_chroot_virtualbox-ose.sh | 8 + examples/hooks/squeeze_chroot_okular-nodrm.sh | 18 + 16 files changed, 1098 insertions(+) create mode 100755 examples/cron/cron.daily create mode 100644 examples/cron/default create mode 100755 examples/cron/images.sh create mode 100755 examples/hooks/all_binary_debian-installer-banner.sh create mode 100755 examples/hooks/all_binary_live-helper.sh create mode 100755 examples/hooks/all_chroot_hal-automount.sh create mode 100755 examples/hooks/all_chroot_kernel-purge.sh create mode 100755 examples/hooks/all_chroot_linux-modules.sh create mode 100755 examples/hooks/all_chroot_localepurge.sh create mode 100755 examples/hooks/all_chroot_losetup-lukshome.sh create mode 100755 examples/hooks/all_chroot_rt2570-modules.sh create mode 100755 examples/hooks/all_chroot_sun-java6.sh create mode 100755 examples/hooks/all_chroot_udev-generators.sh create mode 100755 examples/hooks/all_chroot_update-initramfs.sh create mode 100755 examples/hooks/all_chroot_virtualbox-ose.sh create mode 100755 examples/hooks/squeeze_chroot_okular-nodrm.sh (limited to 'examples') 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 -- cgit v1.2.3