#!/bin/sh ## live-build(7) - System Build Scripts ## Copyright (C) 2006-2011 Daniel Baumann ## ## live-build comes with ABSOLUTELY NO WARRANTY; for details see COPYING. ## This is free software, and you are welcome to redistribute it ## under certain conditions; see COPYING for details. set -e # Including common functions . "${LB_BASE:-/usr/share/live/build}"/scripts/build.sh # Read meta config if [ "${1}" != "noauto" ] && [ -x auto/config ] then Echo_message "Executing auto/config script." ./auto/config "${@}" exit ${?} fi if [ "${1}" = "noauto" ] then shift fi # Setting static variables PROGRAM="lb config" DESCRIPTION="$(Echo 'create configuration for live-build(7)')" USAGE="${PROGRAM} [--apt apt|aptitude]\n\ \t [--apt-ftp-proxy URL]\n\ \t [--apt-http-proxy URL]\n\ \t [--apt-pdiffs true|false]\n\ \t [--apt-options OPTION|\"OPTIONS\"]\n\ \t [--aptitude-options OPTION|\"OPTIONS\"]\n\ \t [--apt-pipeline DEPTH]\n\ \t [--apt-recommends true|false]\n\ \t [--apt-secure true|false]\n\ \t [-a|--architecture ARCHITECTURE]\n\ \t [-b|--binary-images iso|iso-hybrid|net|tar|usb-hdd]\n\ \t [--binary-filesystem fat16|fat32|ext2]\n\ \t [--binary-indices true|false|none]\n\ \t [--bootappend-install PARAMETER|\"PARAMETERS\"]\n\ \t [--bootappend-live PARAMETER|\"PARAMETERS\"]\n\ \t [--bootloader grub|grub2|burg|syslinux|yaboot]\n\ \t [--bootstrap cdebootstrap|cdebootstrap-static|debootstrap|copy]\n\ \t [--bootstrap-config FILE]\n\ \t [-f|--bootstrap-flavour minimal|standard]\n\ \t [--bootstrap-keyring PACKAGE]\n\ \t [--cache true|false]\n\ \t [--cache-indices true|false]\n\ \t [--cache-packages true|false]\n\ \t [--cache-stages STAGE|\"STAGES\"]\n\ \t [--checksums md5|sha1|sha256|none]\n\ \t [--build-with-chroot true|false]\n\ \t [--chroot-filesystem ext2|ext3|squashfs|plain|jffs2]\n\ \t [--clean]\n\ \t [-c|--conffile FILE]\n\ \t [--debconf-frontend dialog|editor|noninteractive|readline]\n\ \t [--debconf-nowarnings true|false]\n\ \t [--debconf-priority low|medium|high|critical]\n\ \t [--debian-installer true|cdrom|netinst|netboot|businesscard|live|false]\n\ \t [--debian-installer-distribution daily|CODENAME]\n\ \t [--debian-installer-preseedfile FILE|URL]\n\ \t [--debian-installer-gui true|false]\n\ \t [--debug]\n\ \t [-d|--distribution CODENAME]\n\ \t [--dump]\n\ \t [-e|--encryption false|aes128|aes192|aes256]\n\ \t [--fdisk fdisk|fdisk.dist]\n\ \t [--force]\n\ \t [--grub-splash FILE]\n\ \t [--gzip-options OPTION|\"OPTIONS\"]\n\ \t [--hooks FILE]\n\ \t [--hostname NAME]\n\ \t [--ignore-system-defaults]\n\ \t [--includes PATH|none]\n\ \t [--initramfs auto|none|live-boot|live-initramfs|casper]\n\ \t [--interactive shell]\n\ \t [--isohybrid-options OPTION|\"OPTIONS\"]\n\ \t [--iso-application NAME]\n\ \t [--iso-preparer NAME]\n\ \t [--iso-publisher NAME]\n\ \t [--iso-volume NAME]\n\ \t [--jffs2-eraseblock SIZE]\n\ \t [--keyring-packages PACKAGE|\"PACKAGES\"]\n\ \t [-l|--language LANGUAGE]\n\ \t [-k|--linux-flavours FLAVOUR|\"FLAVOURS\"]\n\ \t [--linux-packages \"PACKAGES\"]\n\ \t [--losetup losetup|losetup.orig]\n\ \t [--memtest memtest86+|memtest86|none]\n\ \t [-m|--mirror-bootstrap URL]\n\ \t [--mirror-chroot URL]\n\ \t [--mirror-chroot-security URL]\n\ \t [--mirror-chroot-volatile URL]\n\ \t [--mirror-chroot-backports URL]\n\ \t [--mirror-binary URL]\n\ \t [--mirror-binary-security URL]\n\ \t [--mirror-binary-volatile URL]\n\ \t [--mirror-binary-backports URL]\n\ \t [--mirror-debian-installer URL]\n\ \t [--mode debian|emdebian|ubuntu]\n\ \t [--net-root-filesystem nfs|cfs]\n\ \t [--net-root-mountoptions OPTIONS]\n\ \t [--net-root-path PATH]\n\ \t [--net-root-server IP|HOSTNAME]\n\ \t [--net-cow-filesystem nfs|cfs]\n\ \t [--net-cow-mountoptions OPTIONS]\n\ \t [--net-cow-path PATH]\n\ \t [--net-cow-server IP|HOSTNAME]\n\ \t [--net-tarball bzip2|gzip|tar|none]\n\ \t [-p|--packages-lists LIST|\"LISTS\"]\n\ \t [--packages PACKAGE|\"PACKAGES\"]\n\ \t [--quiet]\n\ \t [-r|--repositories REPOSITORY|\"REPOSITORIES\"]\n\ \t [--root-command sudo]\n\ \t [--use-fakeroot true|false]\n\ \t [--archive-areas ARCHIVE_AREA|\"ARCHIVE_AREAS\"]\n\ \t [--security true|false]\n\ \t [--source true|false]\n\ \t [-s|--source-images iso|net|tar|usb-hdd]\n\ \t [--symlinks true|false]\n\ \t [--syslinux-splash FILE]\n\ \t [--syslinux-timeout SECONDS]\n\ \t [--syslinux-menu true|false]\n\ \t [--sysvinit true|false]\n\ \t [--tasksel aptitude|tasksel]\n\ \t [--tasks TASK|\"TASKS\"]\n\ \t [--templates PATH]\n\ \t [--virtual-root-size MB]\n\ \t [--volatile true|false]\n\ \t [--backports true|false]\n\ \t [--exposed-root true|false]\n\ \t [--username NAME]\n\ \t [--verbose]\n\ \t [--win32-loader true|false]" Local_arguments () { LONG_OPTIONS="apt:,apt-ftp-proxy:,apt-http-proxy:,apt-pdiffs:,apt-options:,aptitute-options:, apt-pipeline:,apt-recommends:,apt-secure:,bootstrap:,cache:,cache-indices:,cache-packages:, cache-stages:,debconf-frontend:,debconf-nowarnings:,debconf-priority:,dump, initramfs:,fdisk:,losetup:,mode:,repositories:,root-command:,use-fakeroot:,tasksel:,includes:, templates:,architecture:,bootstrap-config:,bootstrap-flavour:,bootstrap-keyring:,clean, distribution:,mirror-bootstrap:,mirror-chroot:,mirror-chroot-security:,mirror-chroot-volatile:,mirror-chroot-backports:,mirror-binary:, mirror-binary-security:,mirror-binary-volatile:,mirror-binary-backports:,mirror-debian-installer:,archive-areas:,chroot-filesystem:,exposed-root:,virtual-root-size:, gzip-options:,hooks:,interactive:,keyring-packages:,language:,linux-flavours:,linux-packages:, packages:,packages-lists:,tasks:,security:,volatile:,backports:,symlinks:,sysvinit:,binary-filesystem:,binary-images:, binary-indices:,bootappend-install:,bootappend-live:,bootloader:,checksums:,build-with-chroot:, debian-installer:,debian-installer-distribution:,debian-installer-preseedfile:,debian-installer-gui:, encryption:,grub-splash:,hostname:,isohybrid-options:,iso-application:,iso-preparer:,iso-publisher:, iso-volume:,jffs2-eraseblock:,memtest:,net-root-filesystem:,net-root-mountoptions:, net-root-path:,net-root-server:,net-cow-filesystem:,net-cow-mountoptions:,net-cow-path:, net-cow-server:,net-tarball:,syslinux-splash:,syslinux-timeout:,syslinux-menu:, username:,win32-loader:,source:,source-images:,breakpoints,conffile:,debug,force, help,ignore-system-defaults,quiet,usage,verbose,version" # Remove spaces added by indentation LONG_OPTIONS="$(echo ${LONG_OPTIONS} | tr -d ' ')" ARGUMENTS="$(getopt --longoptions ${LONG_OPTIONS} --name="${PROGRAM}" --options a:f:d:m:l:k:p:b:e:r:s:c:huv --shell sh -- "${@}")" if [ "${?}" != "0" ] then Echo_error "terminating" >&2 exit 1 fi eval set -- "${ARGUMENTS}" while true do case "${1}" in --dump) # Dump version if [ -x "$(which dpkg-query 2>/dev/null)" ] then VERSION_DPKG="$(dpkg-query -f='${Version}' --show live-build)" fi Echo "%s: This is live-build version %s" "${0}" "${VERSION_DPKG:-${VERSION}}" # Dump conffile contents Print_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source # Dump contents of directories that contain text files for DIRECTORY in config/binary_local-packageslists config/chroot_local-packageslists config/chroot_apt config/chroot_local-patches config/chroot_local-preseed config/binary_rootfs do if Find_files "${DIRECTORY}" then Echo_file "${DIRECTORY}"/* fi done # Dump directory listings of all directories under config/ for DIRECTORY in $(find config/ -mindepth 1 -maxdepth 1 -type d) do if Find_files "${DIRECTORY}" then ls -lR "${DIRECTORY}" | while read LINE do echo "${DIRECTORY}: ${LINE}" done fi done exit 0 ;; --clean) _CLEAN="true" shift ;; # config/common --apt) LB_APT="${2}" shift 2 ;; --apt-ftp-proxy) LB_APT_FTP_PROXY="${2}" shift 2 ;; --apt-http-proxy) LB_APT_HTTP_PROXY="${2}" shift 2 ;; --apt-pdiffs) LB_APT_PDIFFS="${2}" shift 2 ;; --apt-options) APT_OPTIONS="${2}" shift 2 ;; --aptitude-options) LB_APTITUDE_OPTIONS="${2}" shift 2 ;; --apt-pipeline) LB_APT_PIPELINE="${2}" shift 2 ;; --apt-recommends) LB_APT_RECOMMENDS="${2}" shift 2 ;; --apt-secure) LB_APT_SECURE="${2}" shift 2 ;; --bootstrap) LB_BOOTSTRAP="${2}" shift 2 ;; --cache) LB_CACHE="${2}" shift 2 ;; --cache-indices) LB_CACHE_INDICES="${2}" shift 2 ;; --cache-packages) LB_CACHE_PACKAGES="${2}" shift 2 ;; --cache-stages) LB_CACHE_STAGES="${2}" shift 2 ;; --debconf-frontend) LB_DEBCONF_FRONTEND="${2}" shift 2 ;; --debconf-nowarnings) LB_DEBCONF_NOWARNINGS="${2}" shift 2 ;; --debconf-priority) LB_DEBCONF_PRIORITY="${2}" shift 2 ;; --initramfs) LB_INITRAMFS="${2}" shift 2 ;; --fdisk) LB_FDISK="${2}" shift 2 ;; --losetup) LB_LOSETUP="${2}" shift 2 ;; --mode) LB_MODE="${2}" shift 2 ;; -r|--repositories) LB_REPOSITORIES="${2}" shift 2 ;; --root-command) LB_ROOT_COMMAND="${2}" shift 2 ;; --use-fakeroot) LB_USE_FAKEROOT="${2}" shift 2 ;; --tasksel) LB_TASKSEL="${2}" shift 2 ;; --includes) LB_INCLUDES="${2}" shift 2 ;; --templates) LB_TEMPLATES="${2}" shift 2 ;; -v|--version) Version shift ;; # config/bootstrap -a|--architecture) LB_ARCHITECTURE="${2}" shift 2 ;; --bootstrap-config) LB_BOOTSTRAP_CONFIG="${2}" shift 2 ;; -f|--bootstrap-flavour) LB_BOOTSTRAP_FLAVOUR="${2}" shift 2 ;; --bootstrap-keyring) LB_BOOTSTRAP_KEYRING="${2}" shift 2 ;; -d|--distribution) LB_DISTRIBUTION="${2}" BACKPORTS="false" shift 2 case "${LB_DISTRIBUTION}" in lenny-backports) LB_DISTRIBUTION="lenny" BACKPORTS="true" ;; squeeze-backports) LB_DISTRIBUTION="squeeze" BACKPORTS="true" ;; esac ;; -m|--mirror-bootstrap) LB_MIRROR_BOOTSTRAP="${2}" shift 2 ;; --mirror-chroot) LB_MIRROR_CHROOT="${2}" shift 2 ;; --mirror-chroot-security) LB_MIRROR_CHROOT_SECURITY="${2}" shift 2 ;; --mirror-chroot-volatile) LB_MIRROR_CHROOT_VOLATILE="${2}" shift 2 ;; --mirror-chroot-backports) LB_MIRROR_CHROOT_BACKPORTS="${2}" shift 2 ;; --mirror-binary) LB_MIRROR_BINARY="${2}" shift 2 ;; --mirror-binary-security) LB_MIRROR_BINARY_SECURITY="${2}" shift 2 ;; --mirror-binary-volatile) LB_MIRROR_BINARY_VOLATILE="${2}" shift 2 ;; --mirror-binary-backports) LB_MIRROR_BINARY_BACKPORTS="${2}" shift 2 ;; --mirror-debian-installer) LB_MIRROR_DEBIAN_INSTALLER="${2}" shift 2 ;; --archive-areas) LB_ARCHIVE_AREAS="${2}" shift 2 ;; # config/chroot --chroot-filesystem) LB_CHROOT_FILESYSTEM="${2}" shift 2 ;; --virtual-root-size) LB_VIRTUAL_ROOT_SIZE="${2}" shift 2 ;; --exposed-root) LB_EXPOSED_ROOT="${2}" shift 2 ;; --gzip-options) GZIP_OPTIONS="${2}" shift 2 ;; --hooks) LB_HOOKS="${2}" shift 2 ;; --interactive) LB_INTERACTIVE="${2}" shift 2 ;; --keyring-packages) LB_KEYRING_PACKAGES="${2}" shift 2 ;; -l|--language) LB_LANGUAGE="${2}" shift 2 ;; -k|--linux-flavours) LB_LINUX_FLAVOURS="${2}" shift 2 ;; --linux-packages) LB_LINUX_PACKAGES="${2}" shift 2 ;; --packages) LB_PACKAGES="${2}" shift 2 ;; -p|--packages-lists) LB_PACKAGES_LISTS="${2}" shift 2 ;; --tasks) LB_TASKS="${2}" shift 2 ;; --security) LB_SECURITY="${2}" shift 2 ;; --volatile) LB_VOLATILE="${2}" shift 2 ;; --backports) LB_BACKPORTS="${2}" shift 2 ;; --symlinks) LB_SYMLINKS="${2}" shift 2 ;; --sysvinit) LB_SYSVINIT="${2}" shift 2 ;; # config/binary --binary-filesystem) LB_BINARY_FILESYSTEM="${2}" shift 2 ;; -b|--binary-images) LB_BINARY_IMAGES="${2}" shift 2 ;; --binary-indices) LB_BINARY_INDICES="${2}" shift 2 ;; --bootappend-live) LB_BOOTAPPEND_LIVE="${2}" shift 2 ;; --bootappend-install) LB_BOOTAPPEND_INSTALL="${2}" shift 2 ;; --bootloader) LB_BOOTLOADER="${2}" shift 2 ;; --checksums) LB_CHECKSUMS="${2}" shift 2 ;; --build-with-chroot) LB_BUILD_WITH_CHROOT="${2}" shift 2 ;; --debian-installer) LB_DEBIAN_INSTALLER="${2}" shift 2 ;; --debian-installer-distribution) LB_DEBIAN_INSTALLER_DISTRIBUTION="${2}" shift 2 ;; --debian-installer-preseedfile) LB_DEBIAN_INSTALLER_PRESEEDFILE="${2}" shift 2 ;; --debian-installer-gui) LB_DEBIAN_INSTALLER_GUI="${2}" shift 2 ;; -e|--encryption) LB_ENCRYPTION="${2}" shift 2 ;; --grub-splash) LB_GRUB_SPLASH="${2}" shift 2 ;; --hostname) LB_HOSTNAME="${2}" shift 2 ;; --isohybrid-options) LB_ISOHYBRID_OPTIONS="${2}" shift 2 ;; --iso-application) LB_ISO_APPLICATION="${2}" shift 2 ;; --iso-preparer) LB_ISO_PREPARER="${2}" shift 2 ;; --iso-publisher) LB_ISO_PUBLISHER="${2}" shift 2 ;; --iso-volume) LB_ISO_VOLUME="${2}" shift 2 ;; --jffs2-eraseblock) LB_JFFS2_ERASEBLOCK="${2}" shift 2 ;; --memtest) LB_MEMTEST="${2}" shift 2 ;; --net-root-filesystem) LB_NET_ROOT_FILESYSTEM="${2}" shift 2 ;; --net-root-mountoptions) LB_NET_ROOT_MOUNTOPTIONS="${2}" shift 2 ;; --net-root-path) LB_NET_ROOT_PATH="${2}" shift 2 ;; --net-root-server) LB_NET_ROOT_SERVER="${2}" shift 2 ;; --net-cow-filesystem) LB_NET_COW_FILESYSTEM="${2}" shift 2 ;; --net-cow-mountoptions) LB_NET_COW_MOUNTOPTIONS="${2}" shift 2 ;; --net-cow-path) LB_NET_COW_PATH="${2}" shift 2 ;; --net-cow-server) LB_NET_COW_SERVER="${2}" shift 2 ;; --net-tarball) LB_NET_TARBALL="${2}" shift 2 ;; --syslinux-splash) LB_SYSLINUX_SPLASH="${2}" shift 2 ;; --syslinux-timeout) LB_SYSLINUX_TIMEOUT="${2}" shift 2 ;; --syslinux-menu) LB_SYSLINUX_MENU="${2}" shift 2 ;; --username) LB_USERNAME="${2}" shift 2 ;; --win32-loader) LB_WIN32_LOADER="${2}" shift 2 ;; # config/source --source) LB_SOURCE="${2}" shift 2 ;; -s|--source-images) LB_SOURCE_IMAGES="${2}" shift 2 ;; # other --breakpoints) _BREAKPOINTS="true" shift ;; -c|--conffile) _CONFFILE="${2}" shift 2 ;; --color) _COLOR="true" shift ;; --debug) _DEBUG="true" shift ;; --force) _FORCE="true" shift ;; -h|--help) Help shift ;; --ignore-system-defaults) shift ;; --quiet) _QUIET="true" shift ;; -u|--usage) Usage shift ;; --verbose) _VERBOSE="true" shift ;; -v|--version) Version shift ;; --) shift break ;; *) Echo_error "internal error %s" "${0}" exit 1 ;; esac done } # Reading system configuration if ! In_list "--ignore-system-defaults" "${@}" then Echo_message "Considering defaults defined in %s" "/etc/live/build.conf" Read_conffiles /etc/live/build.conf /etc/live/build.d/* fi # Reading existing configuration Read_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source Local_arguments "${@}" if [ -n "${_CONFFILE}" ] then Read_conffiles "${_CONFFILE}" fi # Setting defaults Set_defaults # Checking defaults Check_defaults if [ ! -e config ] then Echo_message "Creating config tree" else Echo_message "Updating config tree" fi # Creating bootstrap configuration mkdir -p config mkdir -p config/includes mkdir -p config/templates # Creating live-build configuration cat > config/common << EOF # config/common - common options for live-build(7) # LB_CONFIG_VERSION: internal version of the configuration file format LB_CONFIG_VERSION="${CONFIG_VERSION}" # \$LB_APT: set package manager # (Default: ${LB_APT}) LB_APT="${LB_APT}" # \$LB_APT_FTP_PROXY: set apt/aptitude ftp proxy # (Default: autodetected or empty) LB_APT_FTP_PROXY="${LB_APT_FTP_PROXY}" # \$LB_APT_HTTP_PROXY: set apt/aptitude http proxy # (Default: autodetected or empty) LB_APT_HTTP_PROXY="${LB_APT_HTTP_PROXY}" # \$LB_APT_PDIFFS: set apt/aptitude pdiff indices # (Default: ${LB_APT_PDIFFS}) LB_APT_PDIFFS="${LB_APT_PDIFFS}" # \$LB_APT_PIPELINE: set apt/aptitude pipeline depth # (Default: ${LB_APT_PIPELINE}) LB_APT_PIPELINE="${LB_APT_PIPELINE}" # \$LB_APT_RECOMMENDS: set apt/aptitude recommends # (Default: ${LB_APT_RECOMMENDS}) LB_APT_RECOMMENDS="${LB_APT_RECOMMENDS}" # \$LB_APT_SECURE: set apt/aptitude security # (Default: ${LB_APT_SECURE}) LB_APT_SECURE="${LB_APT_SECURE}" # \$LB_BOOTSTRAP: set bootstrap program # (Default: ${LB_BOOTSTRAP}) LB_BOOTSTRAP="${LB_BOOTSTRAP}" # \$LB_CACHE: control cache # (Default: ${LB_CACHE}) LB_CACHE="${LB_CACHE}" # \$LB_CACHE_INDICES: control if downloaded package indices should be cached # (Default: ${LB_CACHE_INDICES}) LB_CACHE_INDICES="${LB_CACHE_INDICES}" # \$LB_CACHE_PACKAGES: control if downloaded packages files should be cached # (Default: ${LB_CACHE_PACKAGES}) LB_CACHE_PACKAGES="${LB_CACHE_PACKAGES}" # \$LB_CACHE_STAGES: control if completed stages should be cached # (Default: ${LB_CACHE_STAGES}) LB_CACHE_STAGES="${LB_CACHE_STAGES}" # \$LB_DEBCONF_FRONTEND: set debconf(1) frontend to use # (Default: ${LB_DEBCONF_FRONTEND}) LB_DEBCONF_FRONTEND="${LB_DEBCONF_FRONTEND}" # \$LB_DEBCONF_NOWARNINGS: set debconf(1) warnings # (Default: ${LB_DEBCONF_NOWARNINGS}) LB_DEBCONF_NOWARNINGS="${LB_DEBCONF_NOWARNINGS}" # \$LB_DEBCONF_PRIORITY: set debconf(1) priority to use # (Default: ${LB_DEBCONF_PRIORITY}) LB_DEBCONF_PRIORITY="${LB_DEBCONF_PRIORITY}" # \$LB_INITRAMFS: set initramfs hook # (Default: ${LB_INITRAMFS}) LB_INITRAMFS="${LB_INITRAMFS}" # \$LB_FDISK: set fdisk program # (Default: autodetected) LB_FDISK="${LB_FDISK}" # \$LB_LOSETUP: set losetup program # (Default: autodetected) LB_LOSETUP="${LB_LOSETUP}" # \$LB_MODE: set distribution mode # (Default: ${LB_MODE}) LB_MODE="${LB_MODE}" # \$LB_ROOT_COMMAND: use sudo or equivalent # (Default: empty) #LB_ROOT_COMMAND="sudo" # \$LB_USE_FAKEROOT: use fakeroot/fakechroot # (Default: ${LB_USE_FAKEROOT}) LB_USE_FAKEROOT="${LB_USE_FAKEROOT}" # \$LB_TASKSEL: set tasksel program # (Default: ${LB_TASKSEL}) LB_TASKSEL="${LB_TASKSEL}" # \$LB_INCLUDES: set includes # (Default: ${LB_INCLUDES}) LB_INCLUDES="${LB_INCLUDES}" # \$LB_TEMPLATES: set templates # (Default: ${LB_TEMPLATES}) LB_TEMPLATES="${LB_TEMPLATES}" # live-build options # \$_BREAKPOINTS: enable breakpoints # (Default: ${_BREAKPOINTS}) #_BREAKPOINTS="${_BREAKPOINTS}" # \$_DEBUG: enable debug # (Default: ${_DEBUG}) #_DEBUG="${_DEBUG}" # \$_COLOR: enable color # (Default: ${_COLOR}) #_COLOR="${_COLOR}" # \$_FORCE: enable force # (Default: ${_FORCE}) #_FORCE="${_FORCE}" # \$_QUIET: enable quiet # (Default: ${_QUIET}) _QUIET="${_QUIET}" # \$_VERBOSE: enable verbose # (Default: ${_VERBOSE}) #_VERBOSE="${_VERBOSE}" # Internal stuff (FIXME) APT_OPTIONS="${APT_OPTIONS}" APTITUDE_OPTIONS="${APTITUDE_OPTIONS}" GZIP_OPTIONS="${GZIP_OPTIONS}" ISOHYBRID_OPTIONS="${ISOHYBRID_OPTIONS}" EOF # Creating lb_bootstrap_* configuration cat > config/bootstrap << EOF # config/bootstrap - options for live-build(7), bootstrap stage # \$LB_ARCHITECTURE: select chroot architecture # (Default: autodetected) LB_ARCHITECTURE="${LB_ARCHITECTURE}" # \$LB_BOOTSTRAP_CONFIG: set distribution config directory # (Default: empty) LB_BOOTSTRAP_CONFIG="${LB_BOOTSTRAP_CONFIG}" # \$LB_BOOTSTRAP_INCLUDE: include packages on base # (Default: empty) LB_BOOTSTRAP_INCLUDE="${LB_BOOTSTRAP_INCLUDE}" # \$LB_BOOTSTRAP_EXCLUDE: exclude packages on base # (Default: empty) LB_BOOTSTRAP_EXCLUDE="${LB_BOOTSTRAP_EXCLUDE}" # \$LB_BOOTSTRAP_FLAVOUR: select flavour to use # (Default: empty) LB_BOOTSTRAP_FLAVOUR="${LB_BOOTSTRAP_FLAVOUR}" # \$LB_BOOTSTRAP_KEYRING: set distribution keyring # (Default: empty) LB_BOOTSTRAP_KEYRING="${LB_BOOTSTRAP_KEYRING}" # \$LB_DISTRIBUTION: select distribution to use # (Default: ${LB_DISTRIBUTION}) LB_DISTRIBUTION="${LB_DISTRIBUTION}" # \$LB_MIRROR_BOOTSTRAP: set mirror to bootstrap from # (Default: ${LB_MIRROR_BOOTSTRAP}) LB_MIRROR_BOOTSTRAP="${LB_MIRROR_BOOTSTRAP}" # \$LB_MIRROR_CHROOT: set mirror to fetch packages from # (Default: ${LB_MIRROR_CHROOT}) LB_MIRROR_CHROOT="${LB_MIRROR_CHROOT}" # \$LB_MIRROR_CHROOT_SECURITY: set security mirror to fetch packages from # (Default: ${LB_MIRROR_CHROOT_SECURITY}) LB_MIRROR_CHROOT_SECURITY="${LB_MIRROR_CHROOT_SECURITY}" # \$LB_MIRROR_CHROOT_VOLATILE: set volatile mirror to fetch packages from # (Default: ${LB_MIRROR_CHROOT_VOLATILE}) LB_MIRROR_CHROOT_VOLATILE="${LB_MIRROR_CHROOT_VOLATILE}" # \$LB_MIRROR_CHROOT_BACKPORTS: set backports mirror to fetch packages from # (Default: ${LB_MIRROR_CHROOT_BACKPORTS}) LB_MIRROR_CHROOT_BACKPORTS="${LB_MIRROR_CHROOT_BACKPORTS}" # \$LB_MIRROR_BINARY: set mirror which ends up in the image # (Default: ${LB_MIRROR_BINARY}) LB_MIRROR_BINARY="${LB_MIRROR_BINARY}" # \$LB_MIRROR_BINARY_SECURITY: set security mirror which ends up in the image # (Default: ${LB_MIRROR_BINARY_SECURITY}) LB_MIRROR_BINARY_SECURITY="${LB_MIRROR_BINARY_SECURITY}" # \$LB_MIRROR_BINARY_VOLATILE: set volatile mirror which ends up in the image # (Default: ${LB_MIRROR_BINARY_VOLATILE}) LB_MIRROR_BINARY_VOLATILE="${LB_MIRROR_BINARY_VOLATILE}" # \$LB_MIRROR_BINARY_BACKPORTS: set backports mirror which ends up in the image # (Default: ${LB_MIRROR_BINARY_BACKPORTS}) LB_MIRROR_BINARY_BACKPORTS="${LB_MIRROR_BINARY_BACKPORTS}" # \$LB_MIRROR_DEBIAN_INSTALLER: set debian-installer mirror # (Default: ${LB_MIRROR_BOOTSTRAP}) LB_MIRROR_DEBIAN_INSTALLER="${LB_MIRROR_DEBIAN_INSTALLER}" # \$LB_ARCHIVE_AREAS: select archive areas to use # (Default: ${LB_ARCHIVE_AREAS}) LB_ARCHIVE_AREAS="${LB_ARCHIVE_AREAS}" EOF # Creating lb_chroot_* configuration mkdir -p config/chroot_apt mkdir -p config/chroot_local-hooks mkdir -p config/chroot_local-includes mkdir -p config/chroot_local-patches mkdir -p config/chroot_local-packages mkdir -p config/chroot_local-packageslists mkdir -p config/chroot_local-preseed mkdir -p config/chroot_sources cat > config/chroot << EOF # config/chroot - options for live-build(7), chroot stage # \$LB_CHROOT_FILESYSTEM: set chroot filesystem # (Default: ${LB_CHROOT_FILESYSTEM}) LB_CHROOT_FILESYSTEM="${LB_CHROOT_FILESYSTEM}" # \$LB_UNION_FILESYSTEM: set union filesystem # (Default: ${LB_UNION_FILESYSTEM}) LB_UNION_FILESYSTEM="${LB_UNION_FILESYSTEM}" # \$LB_VIRTUAL_ROOT_SIZE: set virtual-hdd filesystem size # (Default: ${LB_VIRTUAL_ROOT_SIZE}) LB_VIRTUAL_ROOT_SIZE="${LB_VIRTUAL_ROOT_SIZE}" # \$LB_EXPOSED_ROOT: expose root as read only # (Default: ${LB_EXPOSED_ROOT}) LB_EXPOSED_ROOT="${LB_EXPOSED_ROOT}" # \$LB_HOOKS: set hook commands # (Default: empty) LB_HOOKS="${LB_HOOKS}" # \$LB_INTERACTIVE: set interactive build # (Default: ${LB_INTERACTIVE}) LB_INTERACTIVE="${LB_INTERACTIVE}" # \$LB_KEYRING_PACKAGES: set keyring packages # (Default: empty) LB_KEYRING_PACKAGES="${LB_KEYRING_PACKAGES}" # \$LB_LANGUAGE: set language to use # (Default: empty) LB_LANGUAGE="${LB_LANGUAGE}" # \$LB_LINUX_FLAVOURS: set kernel flavour to use # (Default: autodetected) LB_LINUX_FLAVOURS="${LB_LINUX_FLAVOURS}" # \$LB_LINUX_PACKAGES: set kernel packages to use # (Default: autodetected) LB_LINUX_PACKAGES="${LB_LINUX_PACKAGES}" # \$LB_REPOSITORIES: enable available third-party repositories # (Default: empty) LB_REPOSITORIES="${LB_REPOSITORIES}" # \$LB_PACKAGES: set packages to install # (Default: empty) LB_PACKAGES="${LB_PACKAGES}" # \$LB_PACKAGES_LISTS: set package list to install # (Default: ${LB_PACKAGES_LISTS}) LB_PACKAGES_LISTS="${LB_PACKAGES_LISTS}" # \$LB_TASKS: set tasks to install # (Default: empty) LB_TASKS="${LB_TASKS}" # \$LB_SECURITY: enable security updates # (Default: ${LB_SECURITY}) LB_SECURITY="${LB_SECURITY}" # \$LB_VOLATILE: enable volatile updates # (Default: ${LB_VOLATILE}) LB_VOLATILE="${LB_VOLATILE}" # \$LB_BACKPORTS: enable backports updates # (Default: ${LB_BACKPORTS}) LB_BACKPORTS="${LB_BACKPORTS}" # \$LB_SYMLINKS: enable symlink convertion # (Default: ${LB_SYMLINKS}) LB_SYMLINKS="${LB_SYMLINKS}" # \$LB_SYSVINIT: enable sysvinit # (Default: ${LB_SYSVINIT}) LB_SYSVINIT="${LB_SYSVINIT}" EOF # Creating lb_binary_* configuration mkdir -p config/binary_debian-installer mkdir -p config/binary_debian-installer-includes mkdir -p config/binary_grub mkdir -p config/binary_local-debs mkdir -p config/binary_local-hooks mkdir -p config/binary_local-includes mkdir -p config/binary_local-packageslists mkdir -p config/binary_local-udebs mkdir -p config/binary_rootfs mkdir -p config/binary_syslinux cat > config/binary << EOF # config/binary - options for live-build(7), binary stage # \$LB_BINARY_FILESYSTEM: set image filesystem # (Default: ${LB_BINARY_FILESYSTEM}) LB_BINARY_FILESYSTEM="${LB_BINARY_FILESYSTEM}" # \$LB_BINARY_IMAGES: set image type # (Default: ${LB_BINARY_IMAGES}) LB_BINARY_IMAGES="${LB_BINARY_IMAGES}" # \$LB_BINARY_INDICES: set apt/aptitude generic indices # (Default: ${LB_BINARY_INDICES}) LB_BINARY_INDICES="${LB_BINARY_INDICES}" # \$LB_BOOTAPPEND_LIVE: set boot parameters # (Default: empty) LB_BOOTAPPEND_LIVE="${LB_BOOTAPPEND_LIVE}" # \$LB_BOOTAPPEND_INSTALL: set boot parameters # (Default: empty) LB_BOOTAPPEND_INSTALL="${LB_BOOTAPPEND_INSTALL}" # \$LB_BOOTLOADER: set bootloader # (Default: ${LB_BOOTLOADER}) LB_BOOTLOADER="${LB_BOOTLOADER}" # \$LB_CHECKSUMS: set checksums # (Default: ${LB_CHECKSUMS}) LB_CHECKSUMS="${LB_CHECKSUMS}" # \${LB_BUILD_WITH_CHROOT: control if we build binary images chrooted # (Default: ${LB_BUILD_WITH_CHROOT}) # DO NEVER, *NEVER*, *N*E*V*E*R* SET THIS OPTION to false. LB_BUILD_WITH_CHROOT="${LB_BUILD_WITH_CHROOT}" # \$LB_DEBIAN_INSTALLER: set debian-installer # (Default: ${LB_DEBIAN_INSTALLER}) LB_DEBIAN_INSTALLER="${LB_DEBIAN_INSTALLER}" # \$LB_DEBIAN_INSTALLER_DISTRIBUTION: set debian-installer suite # (Default: empty) LB_DEBIAN_INSTALLER_DISTRIBUTION="${LB_DEBIAN_INSTALLER_DISTRIBUTION}" # \$LB_DEBIAN_INSTALLER_PRESEEDFILE: set debian-installer preseed filename/url # (Default: ${LB_DEBIAN_INSTALLER_PRESEEDFILE}) LB_DEBIAN_INSTALLER_PRESEEDFILE="${LB_DEBIAN_INSTALLER_PRESEEDFILE}" # \$LB_DEBIAN_INSTALLER_GUI: toggle use of GUI debian-installer # (Default: ${LB_DEBIAN_INSTALLER_GUI}) LB_DEBIAN_INSTALLER_GUI="${LB_DEBIAN_INSTALLER_GUI}" # \$LB_ENCRYPTION: set encryption # (Default: ${LB_ENCRYPTION}) LB_ENCRYPTION="${LB_ENCRYPTION}" # \$LB_GRUB_SPLASH: set custom grub splash # (Default: empty) LB_GRUB_SPLASH="${LB_GRUB_SPLASH}" # \$LB_HOSTNAME: set hostname # (Default: ${LB_HOSTNAME}) LB_HOSTNAME="${LB_HOSTNAME}" # \$LB_ISO_APPLICATION: set iso author # (Default: ${LB_ISO_APPLICATION}) LB_ISO_APPLICATION="${LB_ISO_APPLICATION}" # \$LB_ISO_PREPARER: set iso preparer # (Default: ${LB_ISO_PREPARER}) LB_ISO_PREPARER="${LB_ISO_PREPARER}" # \$LB_ISO_PUBLISHER: set iso publisher # (Default: ${LB_ISO_PUBLISHER}) LB_ISO_PUBLISHER="${LB_ISO_PUBLISHER}" # \$LB_ISO_VOLUME: set iso volume (max 32 chars) # (Default: ${LB_ISO_VOLUME}) LB_ISO_VOLUME="${LB_ISO_VOLUME}" # \$LB_JFFS2_ERASEBLOCK: set jffs2 eraseblock size # (Default: unset) LB_JFFS2_ERASEBLOCK="" # \$LB_MEMTEST: set memtest # (Default: ${LB_MEMTEST}) LB_MEMTEST="${LB_MEMTEST}" # \$LB_WIN32_LOADER: set win32-loader # (Default: ${LB_WIN32_LOADER}) LB_WIN32_LOADER="${LB_WIN32_LOADER}" # \$LB_NET_ROOT_FILESYSTEM: set netboot filesystem # (Default: ${LB_NET_ROOT_FILESYSTEM}) LB_NET_ROOT_FILESYSTEM="${LB_NET_ROOT_FILESYSTEM}" # \$LB_NET_ROOT_MOUNTOPTIONS: set nfsopts # (Default: empty) LB_NET_ROOT_MOUNTOPTIONS="${LB_NET_ROOT_MOUNTOPTIONS}" # \$LB_NET_ROOT_PATH: set netboot server directory # (Default: ${LB_NET_ROOT_PATH}) LB_NET_ROOT_PATH="${LB_NET_ROOT_PATH}" # \$LB_NET_ROOT_SERVER: set netboot server address # (Default: ${LB_NET_ROOT_SERVER}) LB_NET_ROOT_SERVER="${LB_NET_ROOT_SERVER}" # \$LB_NET_COW_FILESYSTEM: set net client cow filesystem # (Default: ${LB_NET_COW_FILESYSTEM}) LB_NET_COW_FILESYSTEM="${LB_NET_COW_FILESYSTEM}" # \$LB_NET_COW_MOUNTOPTIONS: set cow mount options # (Default: empty) LB_NET_COW_MOUNTOPTIONS="${LB_NET_COW_MOUNTOPTIONS}" # \$LB_NET_COW_PATH: set cow directory # (Default: ${LB_NET_COW_PATH}) LB_NET_COW_PATH="${LB_NET_COW_PATH}" # \$LB_NET_COW_SERVER: set cow server # (Default: ${LB_NET_COW_SERVER}) LB_NET_COW_SERVER="${LB_NET_COW_SERVER}" # \$LB_NET_TARBALL: set net tarball # (Default: ${LB_NET_TARBALL}) LB_NET_TARBALL="${LB_NET_TARBALL}" # \$LB_SYSLINUX_SPLASH: set custom syslinux splash # (Default: empty) LB_SYSLINUX_SPLASH="${LB_SYSLINUX_SPLASH}" # \$LB_SYSLINUX_TIMEOUT: set custom syslinux timeout in seconds # (Default: 0) LB_SYSLINUX_TIMEOUT="${LB_SYSLINUX_TIMEOUT}" # \$LB_SYSLINUX_CFG: set custom syslinux configuration file # (Default: empty) LB_SYSLINUX_CFG="${LB_SYSLINUX_CFG}" # \$LB_SYSLINUX_MENU: set syslinux menu # (Default: ${LB_SYSLINUX_MENU}) LB_SYSLINUX_MENU="${LB_SYSLINUX_MENU}" # \$LB_SYSLINUX_MENU_LIVE_ENTRY: set text to be used on the menu for live entries # (Default: ${LB_SYSLINUX_MENU_LIVE_ENTRY}) LB_SYSLINUX_MENU_LIVE_ENTRY="${LB_SYSLINUX_MENU_LIVE_ENTRY}" # \$LB_SYSLINUX_MENU_LIVE_FAILSAFE_ENTRY: set text to be used on the menu for live entries (failsafe ones) # (Default: ${LB_SYSLINUX_MENU_LIVE_FAILSAFE_ENTRY}) LB_SYSLINUX_MENU_LIVE_FAILSAFE_ENTRY="${LB_SYSLINUX_MENU_LIVE_FAILSAFE_ENTRY}" # \$LB_SYSLINUX_MENU_MEMTEST_ENTRY: set text to be used on the menu for memtest entry # (Default: ${LB_SYSLINUX_MENU_MEMTEST_ENTRY}) LB_SYSLINUX_MENU_MEMTEST_ENTRY="${LB_SYSLINUX_MENU_MEMTEST_ENTRY}" # \$LB_USERNAME: set username # (Default: ${LB_USERNAME}) LB_USERNAME="${LB_USERNAME}" EOF # Creating lb_source_* configuration cat > config/source << EOF # config/source - options for live-build(7), source stage # \$LB_SOURCE: set source option # (Default: ${LB_SOURCE}) LB_SOURCE="${LB_SOURCE}" # \$LB_SOURCE_IMAGES: set image type # (Default: ${LB_SOURCE_IMAGES}) LB_SOURCE_IMAGES="${LB_SOURCE_IMAGES}" EOF mkdir -p auto/functions mkdir -p auto/scripts if [ "${CONFIG}" = "clone" ] # FIXME then # Read package selection echo $(dpkg --get-selections | awk '{ print $1 }') > config/chroot_local-packageslists/local-system LB_PACKAGES_LISTS="${LB_PACKAGES_LISTS} local-system" # Read debconf questions if [ ! -f /usr/bin/debconf-get-selections ] then Echo_warning "Please install 'debconf-utils' in order to use this feature." else debconf-get-selections | grep -v deinstall | cut -f1 > config/chroot_local-preseed/local-system fi fi if [ "${BACKPORTS}" = "true" ] then # Adding sources.list entry cat > config/chroot_sources/${LB_DISTRIBUTION}-backports.chroot << EOF # Backports Maintainers deb http://backports.debian.org/debian-backports/ ${LB_DISTRIBUTION}-backports ${LB_ARCHIVE_AREAS} deb-src http://backports.debian.org/debian-backports/ ${LB_DISTRIBUTION}-backports ${LB_ARCHIVE_AREAS} EOF cp config/chroot_sources/${LB_DISTRIBUTION}-backports.chroot config/chroot_sources/${LB_DISTRIBUTION}-backports.binary # Adding apt preferences if ! grep -qs "^Pin: release o=Debian Backports" config/chroot_apt/preferences then cat >> config/chroot_apt/preferences << EOF Package: * Pin: release o=Debian Backports Pin-Priority: 999 EOF fi fi # Checking defaults again Check_defaults if [ "${_CLEAN}" = "true" ] then # Remove empty directories in config tree rmdir --ignore-fail-on-non-empty config/*/ > /dev/null 2>&1 || true rmdir --ignore-fail-on-non-empty config > /dev/null 2>&1 || true rmdir --ignore-fail-on-non-empty auto/functions > /dev/null 2>&1 || true rmdir --ignore-fail-on-non-empty auto/scripts > /dev/null 2>&1 || true rmdir --ignore-fail-on-non-empty auto > /dev/null 2>&1 || true fi # Creating stage file Create_stagefile .stage/config