371 lines
10 KiB
Bash
Executable File
371 lines
10 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# make-live(1) - utility to build Debian Live systems
|
|
# Copyright (C) 2006-2007 Daniel Baumann <daniel@debian.org>
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 2 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software
|
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|
#
|
|
# On Debian systems, the complete text of the GNU General Public License
|
|
# can be found in /usr/share/common-licenses/GPL file.
|
|
|
|
set -e
|
|
|
|
# Source common functions
|
|
for FUNCTION in /usr/share/live-helper/functions/*.sh
|
|
do
|
|
. ${FUNCTION}
|
|
done
|
|
|
|
# Set static variables
|
|
PROGRAM="`basename ${0}`"
|
|
DESCRIPTION="utility to build Debian Live systems"
|
|
USAGE="${PROGRAM} [config] [--mode MODE] [--apt apt|aptitude] [--apt-ftpproxy URL] [--apt-httpproxy URL] [--apt-generic enabled|disabled] [--apt-pdiffs enabled|disabled] [--apt-recommends enabled|disabled] [--apt-secure enabled|disabled] [--bootstrap cdebootstrap|deboostrap] [--cache enabled|disabled] [--debconf-frontend dialog|readline|noninteractive] [--debconf-priority low|medium|high|critical] [--genisoimage genisoimage|mkisofs] [--losetup losetup|losetup.org] [-r|--root DIRECTORY] [-a|--architecture ARCHITECTURE] [-d|--distribution testing|unstable|etch|sid] [--distribution-config DIRECTORY] [-f|--bootstrap-flavour minimal|standard] [-m|--mirror-build URL] [--mirror-build-security URL] [--mirror-image URL] [--mirror-image-security URL] [--sections SECTION|\"SECTIONS\"] [--interactive shell|x11|xnest] [-k|--kernel-flavour FLAVOUR] [--kernel-packages PACKAGE|\"PACKAGES\"] [--keyring-packages PACKAGE|\"PACKAGES\"] [-l|--language LANGUAGE] [--packages PACKAGE|\"PACKAGES\"] [-p|--packages-lists LIST|\"LISTS\"] [--tasks TASK|\"TASKS\"] [--security enabled|disabled] [--symlinks enabled|disabled] [--sysvinit enabled|disabled] [--bootappend KERNEL_PARAMETER|\"KERNEL_PARAMETERS\"] [-e|--encryption ALGORITHM] [--username NAME] [--hostname NAME] [--filesystem ext2|plain|squashfs] [--memtest86 enabled|disabled] [--iso-volume STRING] [--server-address HOSTNAME|IP] [--server-path DIRECTORY] [--source enabled|disabled] [--bootloader grub|syslinux] [--grub-splash FILE] [--syslinux-splash FILE] [-b|--binary-image hdd|iso|usb|net] [-s|--source-image generic|hdd|iso|usb|net] [--includes PATH] [--templates PATH] [--breakpoints] [--debug] [--force] [--quiet] [--verbose]"
|
|
|
|
HELP="Lists: gnome, gnome-core, gnome-desktop, gnome-full, gnome-junior, gnustep, kde, kde-core, kde-desktop, kde-extra, kde-full, kde-junior, mini, minimal, minimal-net, rescue, standard, standard-x11, xfce, xfce-desktop, xfce-junior"
|
|
|
|
Local_arguments ()
|
|
{
|
|
ARGUMENTS="`getopt --longoptions mode:,apt:,apt-ftpproxy:,apt-httpproxy:,apt-generic:,apt-pdiffs:,apt-recommends:,apt-secure:,bootstrap:,cache:,debconf-frontend:,debconf-priority:,genisoimage:,losetup:,root:,architecture:,distribution:,distribution-config:,flavour:,mirror-local:,mirror-local-security:,mirror-generic:,mirror-generic-security:,sections:,interactive:,kernel:,kernel-packages:,keyring-packages:,language:,packages:,packages-lists:,tasks:,security:,symlinks:,sysvinit:,bootappend:,encryption:,username:,hostname:,filesystem:,memtest86:,iso-volume:,server-address:,server-path:,source:,bootloader:,grub-splash:,syslinux-splash:,binary-image:,binary-source:,includes:,templates:,help,usage,version,force,breakpoints,debug,quiet,verbose --name=${PROGRAM} --options r:a:d:f:m:k:l:p:e:b:s:huv --shell sh -- "${@}"`"
|
|
|
|
if [ "${?}" != "0" ]
|
|
then
|
|
echo "Terminating." >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ "${1}" = "config" ]
|
|
then
|
|
CONFIG="true"
|
|
fi
|
|
|
|
eval set -- "${ARGUMENTS}"
|
|
|
|
while true
|
|
do
|
|
case "${1}" in
|
|
# common
|
|
--mode)
|
|
LH_MODE="${2}"; shift 2
|
|
;;
|
|
|
|
--apt)
|
|
LH_APT="${2}"; shift 2
|
|
;;
|
|
|
|
--apt-ftpproxy)
|
|
LH_APT_FTPPROXY="${2}"; shift 2
|
|
;;
|
|
|
|
--apt-httpproxy)
|
|
LH_APT_HTTPPROXY="${2}"; shift 2
|
|
;;
|
|
|
|
--apt-generic)
|
|
LH_APT_GENERIC="${2}"; shift 2
|
|
;;
|
|
|
|
--apt-pdiffs)
|
|
LH_APT_PDIFFS="${2}"; shift 2
|
|
;;
|
|
|
|
--apt-recommends)
|
|
LH_APT_RECOMMENDS="${2}"; shift 2
|
|
;;
|
|
|
|
--apt-secure)
|
|
LH_APT_SECURE="${2}"; shift 2
|
|
;;
|
|
|
|
--bootstrap)
|
|
LH_BOOTSTRAP="${2}"; shift 2
|
|
;;
|
|
|
|
--cache)
|
|
LH_CACHE="${2}"; shift 2
|
|
;;
|
|
|
|
--debconf-frontend)
|
|
LH_DEBCONF_FRONTEND="${2}"; shift 2
|
|
;;
|
|
|
|
--debconf-priority)
|
|
LH_DEBCONF_PRIORITY="${2}"; shift 2
|
|
;;
|
|
|
|
--genisoimage)
|
|
LH_GENISOIMAGE="${2}"; shift 2
|
|
;;
|
|
|
|
--losetup)
|
|
LH_LOSETUP="${2}"; shift 2
|
|
;;
|
|
|
|
-r|--root)
|
|
LIVE_ROOT="${2}"; shift 2
|
|
;;
|
|
|
|
# bootstrap
|
|
-a|--architecture)
|
|
LIVE_ARCHITECTURE="${2}"; shift 2
|
|
;;
|
|
|
|
-d|--distribution)
|
|
LIVE_DISTRIBUTION="${2}"; shift 2
|
|
export LIVE_DISTRIBUTION
|
|
;;
|
|
|
|
--distribution-config)
|
|
LIVE_DISTRIBUTION_CONFIG="${2}"; shift 2
|
|
;;
|
|
|
|
-f|--bootstrap-flavour)
|
|
LIVE_BOOTSTRAP_FLAVOUR="${2}"; shift 2
|
|
;;
|
|
|
|
-m|--mirror-build)
|
|
LIVE_MIRROR_BUILD="${2}"; shift 2
|
|
;;
|
|
|
|
--mirror-build-security)
|
|
LIVE_MIRROR_BUILD_SECURITY="${2}"; shift 2
|
|
;;
|
|
|
|
--mirror-image)
|
|
LIVE_MIRROR_IMAGE="${2}"; shift 2
|
|
;;
|
|
|
|
--mirror-image-security)
|
|
LIVE_MIRROR_IMAGE_SECURITY="${2}"; shift 2
|
|
;;
|
|
|
|
--sections)
|
|
LIVE_SECTIONS="${2}"; shift 2
|
|
;;
|
|
|
|
# chroot
|
|
--interactive)
|
|
LIVE_INTERACTIVE="${2}"; shift 2
|
|
;;
|
|
|
|
-k|--kernel-flavour)
|
|
LIVE_KERNEL_FLAVOUR="${2}"; shift 2
|
|
;;
|
|
|
|
--kernel-packages)
|
|
LIVE_KERNEL_PACKAGES="${2}"; shift 2
|
|
;;
|
|
|
|
--keyring-packages)
|
|
LIVE_KEYRING_PACKAGS="${2}"; shift 2
|
|
;;
|
|
|
|
-l|--language)
|
|
LIVE_LANGUAGE="${2}"; shift 2
|
|
;;
|
|
|
|
--packages)
|
|
LIVE_PACKAGES="${2}"; shift 2
|
|
;;
|
|
|
|
-p|--packages-lists)
|
|
LIVE_PACKAGES_LISTS="${2}"; shift 2
|
|
;;
|
|
|
|
--tasks)
|
|
LIVE_TASKS="${2}"; shift 2
|
|
;;
|
|
|
|
--security)
|
|
LIVE_SECURITY="${2}"; shift 2
|
|
;;
|
|
|
|
--symlinks)
|
|
LIVE_SYMLINKS="${2}"; shift 2
|
|
;;
|
|
|
|
--sysvinit)
|
|
LIVE_SYSVINIT="${2}"; shift 2
|
|
;;
|
|
|
|
# image
|
|
--bootappend)
|
|
LIVE_BOOTAPPEND="${2}"; shift 2
|
|
;;
|
|
|
|
-e|--encryption)
|
|
LIVE_ENCRYPTION="${2}"; shift 2
|
|
;;
|
|
|
|
--username)
|
|
LIVE_USERNAME="${2}"; shift 2
|
|
;;
|
|
|
|
--hostname)
|
|
LIVE_HOSTNAME="${2}"; shift 2
|
|
;;
|
|
|
|
--filesystem)
|
|
LIVE_FILESYSTEM="${2}"; shift 2
|
|
;;
|
|
|
|
--memtest86)
|
|
LIVE_MEMTEST86="${2}"; shift 2
|
|
;;
|
|
|
|
--iso-volume)
|
|
LIVE_ISO_VOLUME="${2}"; shift 2
|
|
;;
|
|
|
|
--server-address)
|
|
LIVE_SERVER_ADDRESS="${2}"; shift 2
|
|
;;
|
|
|
|
--server-path)
|
|
LIVE_SERVER_PATH="${2}"; shift 2
|
|
;;
|
|
|
|
--source)
|
|
LIVE_SOURCE="${2}"; shift 2
|
|
;;
|
|
|
|
--bootloader)
|
|
LIVE_BOOTLOADER="${2}"; shift 2
|
|
;;
|
|
|
|
--grub-splash)
|
|
LIVE_SYSLINUX="${2}"; shift 2
|
|
;;
|
|
|
|
--syslinux-splash)
|
|
LIVE_SYSLINUX_SPLASH="${2}"; shift 2
|
|
;;
|
|
|
|
-b|--binary-image)
|
|
LIVE_BINARY_IMAGE="${2}"; shift 2
|
|
;;
|
|
|
|
-s|--source-image)
|
|
LIVE_SOURCE_IMAGE="${2}"; shift 2
|
|
;;
|
|
|
|
--includes)
|
|
LIVE_INCLUDES="${2}"; shift 2
|
|
;;
|
|
|
|
--templates)
|
|
LIVE_TEMPLATES="${2}"; shift 2
|
|
;;
|
|
|
|
# other
|
|
-h|--help)
|
|
Help; shift
|
|
;;
|
|
|
|
-u|--usage)
|
|
Usage; shift
|
|
;;
|
|
|
|
-v|--version)
|
|
Version; shift
|
|
;;
|
|
|
|
--breakpoints)
|
|
LH_BREAKPOINTS="enabled"; shift
|
|
;;
|
|
|
|
--debug)
|
|
LH_DEBUG="enabled"; shift
|
|
;;
|
|
|
|
--force)
|
|
LH_FORCE="enabled"; shift
|
|
;;
|
|
|
|
--quiet)
|
|
LH_QUIET="enabled"; shift
|
|
;;
|
|
|
|
--verbose)
|
|
LH_VERBOSE="enabled"; shift
|
|
;;
|
|
|
|
--)
|
|
shift; break
|
|
;;
|
|
|
|
*)
|
|
echo "Internal error."
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
Main ()
|
|
{
|
|
Local_arguments "${@}"
|
|
|
|
Set_defaults
|
|
|
|
if [ -z "${ROOT}" ]
|
|
then
|
|
ROOT="${LIVE_ROOT}"
|
|
fi
|
|
|
|
# Source existing configuration
|
|
Read_conffile "${ROOT}"/config/common
|
|
Read_conffile "${ROOT}"/config/bootstrap
|
|
Read_conffile "${ROOT}"/config/chroot
|
|
Read_conffile "${ROOT}"/config/image
|
|
|
|
Local_arguments "${@}"
|
|
|
|
# Configuring (this is really shit!)
|
|
LH_MODE="${LH_MODE}" LH_APT="${LH_APT}" LH_APT_FTPPROXY="${LH_APT_FTPPROXY}" LH_APT_HTTPPROXY="${LH_APT_HTTPPROXY}" LH_APT_GENERIC="${LH_APT_GENERIC}" LH_APT_PDIFFS="${LH_APT_PDIFFS}" LH_APT_RECOMMENDS="${LH_APT_RECOMMENDS}" LH_APT_SECURE="${LH_APT_SECURE}" LH_BOOTSTRAP="${LH_BOOTSTRAP}" LH_CACHE="${LH_CACHE}" LH_DEBCONF_FRONTEND="${LH_DEBCONF_FRONTEND}" LH_DEBCONF_PRIORITY="${LH_DEBCONF_PRIORITY}" LH_GENISOIMAGE="${LH_GENISOIMAGE}" LIVE_ROOT="${LIVE_ROOT}" LIVE_ARCHITECTURE="${LIVE_ARCHITECTURE}" LIVE_DISTRIBUTION="${LIVE_DISTRIBUTION}" LIVE_DISTRIBUTION_CONFIG="${LIVE_DISTRIBUTION_CONFIG}" LIVE_BOOTSTRAP_FLAVOUR="${LIVE_BOOTSTRAP_FLAVOUR}" LIVE_MIRROR_BUILD="${LIVE_MIRROR_BUILD}" LIVE_MIRROR_BUILD_SECURITY="${LIVE_MIRROR_BUILD_SECURITY}" LIVE_MIRROR_IMAGE="${LIVE_MIRROR_IMAGE}" LIVE_MIRROR_IMAGE_SECURITY="${LIVE_MIRROR_IMAGE_SECURITY}" LIVE_SECTIONS="${LIVE_SECTIONS}" LIVE_INTERACTIVE="${LIVE_INTERACTIVE}" LIVE_KERNEL_FLAVOUR="${LIVE_KERNEL_FLAVOUR}" LIVE_KERNEL_PACKAGES="${LIVE_KERNEL_PACKAGES}" LIVE_KEYRING_PACKAGES="${LIVE_KEYRING_PACKAGES}" LIVE_LANGUAGE="${LIVE_LANGUAGE}" LIVE_PACKAGES="${LIVE_PACKAGES}" LIVE_PACKAGES_LISTS="${LIVE_PACKAGES_LISTS}" LIVE_TASKS="${LIVE_TASKS}" LIVE_SECURITY="${LIVE_SECURITY}" LIVE_SYMLINKS="${LIVE_SYMLINKS}" LIVE_SYSVINIT="${LIVE_SYSVINIT}" LIVE_BOOTAPPEND="${LIVE_BOOTAPPEND}" LIVE_ENCRYPTION="${LIVE_ENCRYPTION}" LIVE_USERNAME="${LIVE_USERNAME}" LIVE_HOSTNAME="${LIVE_HOSTNAME}" LIVE_FILESYSTEM="${LIVE_FILESYSTEM}" LIVE_MEMTEST86="${LIVE_MEMTEST86}" LIVE_ISO_VOLUME="${LIVE_ISO_VOLUME}" LIVE_SERVER_ADDRESS="${LIVE_SERVER_ADDRESS}" LIVE_SERVER_PATH="${LIVE_SERVER_PATH}" LIVE_SOURCE="${LIVE_SOURCE}" LIVE_BOOTLOADER="${LIVE_BOOTLOADER}" LIVE_GRUB_SPLASH="${LIVE_GRUB_SPLASH}" LIVE_SYSLINUX_SPLASH="${LIVE_SYSLINUX_SPLASH}" LIVE_BINARY_IMAGE="${LIVE_BINARY_IMAGE}" LIVE_SOURCE_IMAGE="${LIVE_SOURCE_IMAGE}" LIVE_INCLUDES="${LIVE_INCLUDES}" LIVE_TEMPLATES="${LIVE_TEMPLATES}" lh_config newconfig
|
|
|
|
if [ "${LH_BREAKPOINTS}" = "enabled" ]
|
|
then
|
|
OPTIONS="${OPTIONS} --breakpoints"
|
|
fi
|
|
|
|
if [ "${LH_DEBUG}" = "enabled" ]
|
|
then
|
|
OPTIONS="${OPTIONS} --debug"
|
|
fi
|
|
|
|
if [ "${LH_FORCE}" = "enabled" ]
|
|
then
|
|
OPTIONS="${OPTIONS} --force"
|
|
fi
|
|
|
|
if [ "${LH_QUIET}" = "enabled" ]
|
|
then
|
|
OPTIONS="${OPTIONS} --quiet"
|
|
fi
|
|
|
|
if [ "${LH_VERBOSE}" = "enabled" ]
|
|
then
|
|
OPTIONS="${OPTIONS} --verbose"
|
|
fi
|
|
|
|
# Building
|
|
if [ -z "${CONFIG}" ]
|
|
then
|
|
cd "${LIVE_ROOT}" && lh_build "${OPTIONS}"
|
|
fi
|
|
}
|
|
|
|
Main "${@}"
|