diff options
| author | Tails developers <amnesia@boum.org> | 2012-02-13 10:35:58 +0100 |
|---|---|---|
| committer | Daniel Baumann <daniel@debian.org> | 2012-04-05 07:43:30 +0200 |
| commit | 790fb6908a3d6a93380107ea0f95d77c21f6a2cc (patch) | |
| tree | d9414cb59b8535f659183b15ff90682b69c3ba74 /scripts | |
| parent | 38757eb448bd7e7725085047434df1a4664ddfe2 (diff) | |
| download | live-boot-790fb6908a3d6a93380107ea0f95d77c21f6a2cc.tar.gz live-boot-790fb6908a3d6a93380107ea0f95d77c21f6a2cc.zip | |
Refactor live-boot argument parser from live into live-helpers.
This will be useful for making it possible to enable persistent during
user-space.
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/live | 388 | ||||
| -rw-r--r-- | scripts/live-helpers | 388 |
2 files changed, 388 insertions, 388 deletions
diff --git a/scripts/live b/scripts/live index 84924c9..f59ae71 100755 --- a/scripts/live +++ b/scripts/live @@ -42,394 +42,6 @@ then touch /live.vars fi -Arguments () -{ - PRESEEDS="" - LOCATIONS="" - - for ARGUMENT in $(cat /proc/cmdline) - do - case "${ARGUMENT}" in - skipconfig) - NOACCESSIBILITY="Yes" - NOFASTBOOT="Yes" - NOFSTAB="Yes" - NONETWORKING="Yes" - - export NOACCESSIBILITY NOFASTBOOT NOFSTAB NONETWORKING - ;; - - access=*) - ACCESS="${ARGUMENT#access=}" - export ACCESS - ;; - - console=*) - DEFCONSOLE="${ARGUMENT#*=}" - export DEFCONSOLE - ;; - - BOOTIF=*) - BOOTIF="${x#BOOTIF=}" - ;; - - debug) - DEBUG="Yes" - export DEBUG - - set -x - ;; - - dhcp) - # Force dhcp even while netbooting - # Use for debugging in case somebody works on fixing dhclient - DHCP="Force"; - export DHCP - ;; - - nodhcp) - unset DHCP - ;; - - ethdevice=*) - DEVICE="${ARGUMENT#ethdevice=}" - ETHDEVICE="${DEVICE}" - export DEVICE ETHDEVICE - ;; - - ethdevice-timeout=*) - ETHDEV_TIMEOUT="${ARGUMENT#ethdevice-timeout=}" - export ETHDEV_TIMEOUT - ;; - - fetch=*) - FETCH="${ARGUMENT#fetch=}" - export FETCH - ;; - - forcepersistentfsck) - FORCEPERSISTENTFSCK="Yes" - export FORCEPERSISTENTFSCK - ;; - - ftpfs=*) - FTPFS="${ARGUMENT#ftpfs=}" - export FTPFS - ;; - - httpfs=*) - HTTPFS="${ARGUMENT#httpfs=}" - export HTTPFS - ;; - - iscsi=*) - ISCSI="${ARGUMENT#iscsi=}" - #ip:port - separated by ; - ISCSI_PORTAL="${ISCSI%;*}" - if echo "${ISCSI_PORTAL}" | grep -q , ; then - ISCSI_SERVER="${ISCSI_PORTAL%,*}" - ISCSI_PORT="${ISCSI_PORTAL#*,}" - fi - #target name - ISCSI_TARGET="${ISCSI#*;}" - export ISCSI ISCSI_PORTAL ISCSI_TARGET ISCSI_SERVER ISCSI_PORT - ;; - - isofrom=*|fromiso=*) - FROMISO="${ARGUMENT#*=}" - export FROMISO - ;; - - ignore_uuid) - IGNORE_UUID="Yes" - export IGNORE_UUID - ;; - - integrity-check) - INTEGRITY_CHECK="Yes" - export INTEGRITY_CHECK - ;; - - ip=*) - STATICIP="${ARGUMENT#ip=}" - - if [ -z "${STATICIP}" ] - then - STATICIP="frommedia" - fi - - export STATICIP - ;; - - live-getty) - LIVE_GETTY="1" - export LIVE_GETTY - ;; - - live-media=*|bootfrom=*) - LIVE_MEDIA="${ARGUMENT#*=}" - export LIVE_MEDIA - ;; - - live-media-encryption=*|encryption=*) - LIVE_MEDIA_ENCRYPTION="${ARGUMENT#*=}" - export LIVE_MEDIA_ENCRYPTION - ;; - - live-media-offset=*) - LIVE_MEDIA_OFFSET="${ARGUMENT#live-media-offset=}" - export LIVE_MEDIA_OFFSET - ;; - - live-media-path=*) - LIVE_MEDIA_PATH="${ARGUMENT#live-media-path=}" - export LIVE_MEDIA_PATH - ;; - - live-media-timeout=*) - LIVE_MEDIA_TIMEOUT="${ARGUMENT#live-media-timeout=}" - export LIVE_MEDIA_TIMEOUT - ;; - - module=*) - MODULE="${ARGUMENT#module=}" - export MODULE - ;; - - netboot=*) - NETBOOT="${ARGUMENT#netboot=}" - export NETBOOT - ;; - - nfsopts=*) - NFSOPTS="${ARGUMENT#nfsopts=}" - export NFSOPTS - ;; - - nfscow=*) - NFS_COW="${ARGUMENT#nfscow=}" - export NFS_COW - ;; - - noaccessibility) - NOACCESSIBILITY="Yes" - export NOACCESSIBILITY - ;; - - nofastboot) - NOFASTBOOT="Yes" - export NOFASTBOOT - ;; - - nofstab) - NOFSTAB="Yes" - export NOFSTAB - ;; - - nonetworking) - NONETWORKING="Yes" - export NONETWORKING - ;; - - ramdisk-size=*) - ramdisk_size="${ARGUMENT#ramdisk-size=}" - ;; - - swapon) - SWAPON="Yes" - export SWAPON - ;; - - persistent) - PERSISTENT="Yes" - export PERSISTENT - ;; - - persistent-encryption=*) - PERSISTENT_ENCRYPTION="${ARGUMENT#*=}" - export PERSISTENT_ENCRYPTION - ;; - - persistent-media=*) - PERSISTENT_MEDIA="${ARGUMENT#*=}" - export PERSISTENT_MEDIA - ;; - persistent-method=*) - PERSISTENT_METHOD="${ARGUMENT#*=}" - export PERSISTENT_METHOD - ;; - - persistent-path=*) - PERSISTENT_PATH="${ARGUMENT#persistent-path=}" - export PERSISTENT_PATH - ;; - persistent-read-only) - PERSISTENT_READONLY="Yes" - export PERSISTENT_READONLY - ;; - - persistent-storage=*) - PERSISTENT_STORAGE="${ARGUMENT#persistent-storage=}" - export PERSISTENT_STORAGE - ;; - - persistent-subtext=*) - root_overlay_label="${root_overlay_label}-${ARGUMENT#persistent-subtext=}" - custom_overlay_label="${custom_overlay_label}-${ARGUMENT#persistent-subtext=}" - root_snapshot_label="${root_snapshot_label}-${ARGUMENT#persistent-subtext=}" - home_snapshot_label="${home_snapshot_label}-${ARGUMENT#persistent-subtext=}" - ;; - - nopersistent) - NOPERSISTENT="Yes" - export NOPERSISTENT - ;; - - noprompt) - NOPROMPT="Yes" - export NOPROMPT - ;; - - noprompt=*) - NOPROMPT="${ARGUMENT#noprompt=}" - export NOPROMPT - ;; - - quickusbmodules) - QUICKUSBMODULES="Yes" - export QUICKUSBMODULES - ;; - - preseed/file=*|file=*) - LOCATIONS="${ARGUMENT#*=} ${LOCATIONS}" - export LOCATIONS - ;; - - nopreseed) - NOPRESEED="Yes" - export NOPRESEED - ;; - - */*=*) - question="${ARGUMENT%%=*}" - value="${ARGUMENT#*=}" - PRESEEDS="${PRESEEDS}\"${question}=${value}\" " - export PRESEEDS - ;; - - showmounts) - SHOWMOUNTS="Yes" - export SHOWMOUNTS - ;; - - silent) - SILENT="Yes" - export SILENT - ;; - - todisk=*) - TODISK="${ARGUMENT#todisk=}" - export TODISK - ;; - - toram) - TORAM="Yes" - export TORAM - ;; - - toram=*) - TORAM="Yes" - MODULETORAM="${ARGUMENT#toram=}" - export TORAM MODULETORAM - ;; - - exposedroot) - EXPOSED_ROOT="Yes" - export EXPOSED_ROOT - ;; - - plainroot) - PLAIN_ROOT="Yes" - export PLAIN_ROOT - ;; - - skipunion) - SKIP_UNION_MOUNTS="Yes" - export SKIP_UNION_MOUNTS - ;; - - root=*) - ROOT="${ARGUMENT#root=}" - export ROOT - ;; - - union=*) - UNIONTYPE="${ARGUMENT#union=}" - export UNIONTYPE - ;; - esac - done - - # sort of compatibility with netboot.h from linux docs - if [ -z "${NETBOOT}" ] - then - if [ "${ROOT}" = "/dev/nfs" ] - then - NETBOOT="nfs" - export NETBOOT - elif [ "${ROOT}" = "/dev/cifs" ] - then - NETBOOT="cifs" - export NETBOOT - fi - fi - - if [ -z "${MODULE}" ] - then - MODULE="filesystem" - export MODULE - fi - - if [ -z "${UNIONTYPE}" ] - then - UNIONTYPE="aufs" - export UNIONTYPE - fi - - if [ -z "${PERSISTENT_ENCRYPTION}" ] - then - PERSISTENT_ENCRYPTION="none" - export PERSISTENT_ENCRYPTION - elif echo ${PERSISTENT_ENCRYPTION} | grep -qe "\<luks\>" - then - if ! modprobe dm-crypt - then - log_warning_msg "Unable to load module dm-crypt" - PERSISTENT_ENCRYPTION=$(echo ${PERSISTENT_ENCRYPTION} | sed -e 's/\<luks,\|,\?luks$//g') - export PERSISTENT_ENCRYPTION - fi - - if [ ! -x /lib/cryptsetup/askpass ] || [ ! -x /sbin/cryptsetup ] - then - log_warning_msg "cryptsetup in unavailable" - PERSISTENT_ENCRYPTION=$(echo ${PERSISTENT_ENCRYPTION} | sed -e 's/\<luks,\|,\?luks$//g') - export PERSISTENT_ENCRYPTION - fi - fi - - if [ -n "${PERSISTENT}" ] && [ -z "${PERSISTENT_METHOD}" ] - then - PERSISTENT_METHOD="snapshot,overlay" - export PERSISTENT_METHOD - fi - - if [ -n "${PERSISTENT}" ] && [ -z "${PERSISTENT_STORAGE}" ] - then - PERSISTENT_STORAGE="filesystem,file" - export PERSISTENT_STORAGE - fi -} - is_live_path () { DIRECTORY="${1}" diff --git a/scripts/live-helpers b/scripts/live-helpers index db1eb9f..d4a5316 100644 --- a/scripts/live-helpers +++ b/scripts/live-helpers @@ -15,6 +15,394 @@ else udevinfo='udevinfo' fi +Arguments () +{ + PRESEEDS="" + LOCATIONS="" + + for ARGUMENT in $(cat /proc/cmdline) + do + case "${ARGUMENT}" in + skipconfig) + NOACCESSIBILITY="Yes" + NOFASTBOOT="Yes" + NOFSTAB="Yes" + NONETWORKING="Yes" + + export NOACCESSIBILITY NOFASTBOOT NOFSTAB NONETWORKING + ;; + + access=*) + ACCESS="${ARGUMENT#access=}" + export ACCESS + ;; + + console=*) + DEFCONSOLE="${ARGUMENT#*=}" + export DEFCONSOLE + ;; + + BOOTIF=*) + BOOTIF="${x#BOOTIF=}" + ;; + + debug) + DEBUG="Yes" + export DEBUG + + set -x + ;; + + dhcp) + # Force dhcp even while netbooting + # Use for debugging in case somebody works on fixing dhclient + DHCP="Force"; + export DHCP + ;; + + nodhcp) + unset DHCP + ;; + + ethdevice=*) + DEVICE="${ARGUMENT#ethdevice=}" + ETHDEVICE="${DEVICE}" + export DEVICE ETHDEVICE + ;; + + ethdevice-timeout=*) + ETHDEV_TIMEOUT="${ARGUMENT#ethdevice-timeout=}" + export ETHDEV_TIMEOUT + ;; + + fetch=*) + FETCH="${ARGUMENT#fetch=}" + export FETCH + ;; + + forcepersistentfsck) + FORCEPERSISTENTFSCK="Yes" + export FORCEPERSISTENTFSCK + ;; + + ftpfs=*) + FTPFS="${ARGUMENT#ftpfs=}" + export FTPFS + ;; + + httpfs=*) + HTTPFS="${ARGUMENT#httpfs=}" + export HTTPFS + ;; + + iscsi=*) + ISCSI="${ARGUMENT#iscsi=}" + #ip:port - separated by ; + ISCSI_PORTAL="${ISCSI%;*}" + if echo "${ISCSI_PORTAL}" | grep -q , ; then + ISCSI_SERVER="${ISCSI_PORTAL%,*}" + ISCSI_PORT="${ISCSI_PORTAL#*,}" + fi + #target name + ISCSI_TARGET="${ISCSI#*;}" + export ISCSI ISCSI_PORTAL ISCSI_TARGET ISCSI_SERVER ISCSI_PORT + ;; + + isofrom=*|fromiso=*) + FROMISO="${ARGUMENT#*=}" + export FROMISO + ;; + + ignore_uuid) + IGNORE_UUID="Yes" + export IGNORE_UUID + ;; + + integrity-check) + INTEGRITY_CHECK="Yes" + export INTEGRITY_CHECK + ;; + + ip=*) + STATICIP="${ARGUMENT#ip=}" + + if [ -z "${STATICIP}" ] + then + STATICIP="frommedia" + fi + + export STATICIP + ;; + + live-getty) + LIVE_GETTY="1" + export LIVE_GETTY + ;; + + live-media=*|bootfrom=*) + LIVE_MEDIA="${ARGUMENT#*=}" + export LIVE_MEDIA + ;; + + live-media-encryption=*|encryption=*) + LIVE_MEDIA_ENCRYPTION="${ARGUMENT#*=}" + export LIVE_MEDIA_ENCRYPTION + ;; + + live-media-offset=*) + LIVE_MEDIA_OFFSET="${ARGUMENT#live-media-offset=}" + export LIVE_MEDIA_OFFSET + ;; + + live-media-path=*) + LIVE_MEDIA_PATH="${ARGUMENT#live-media-path=}" + export LIVE_MEDIA_PATH + ;; + + live-media-timeout=*) + LIVE_MEDIA_TIMEOUT="${ARGUMENT#live-media-timeout=}" + export LIVE_MEDIA_TIMEOUT + ;; + + module=*) + MODULE="${ARGUMENT#module=}" + export MODULE + ;; + + netboot=*) + NETBOOT="${ARGUMENT#netboot=}" + export NETBOOT + ;; + + nfsopts=*) + NFSOPTS="${ARGUMENT#nfsopts=}" + export NFSOPTS + ;; + + nfscow=*) + NFS_COW="${ARGUMENT#nfscow=}" + export NFS_COW + ;; + + noaccessibility) + NOACCESSIBILITY="Yes" + export NOACCESSIBILITY + ;; + + nofastboot) + NOFASTBOOT="Yes" + export NOFASTBOOT + ;; + + nofstab) + NOFSTAB="Yes" + export NOFSTAB + ;; + + nonetworking) + NONETWORKING="Yes" + export NONETWORKING + ;; + + ramdisk-size=*) + ramdisk_size="${ARGUMENT#ramdisk-size=}" + ;; + + swapon) + SWAPON="Yes" + export SWAPON + ;; + + persistent) + PERSISTENT="Yes" + export PERSISTENT + ;; + + persistent-encryption=*) + PERSISTENT_ENCRYPTION="${ARGUMENT#*=}" + export PERSISTENT_ENCRYPTION + ;; + + persistent-media=*) + PERSISTENT_MEDIA="${ARGUMENT#*=}" + export PERSISTENT_MEDIA + ;; + persistent-method=*) + PERSISTENT_METHOD="${ARGUMENT#*=}" + export PERSISTENT_METHOD + ;; + + persistent-path=*) + PERSISTENT_PATH="${ARGUMENT#persistent-path=}" + export PERSISTENT_PATH + ;; + persistent-read-only) + PERSISTENT_READONLY="Yes" + export PERSISTENT_READONLY + ;; + + persistent-storage=*) + PERSISTENT_STORAGE="${ARGUMENT#persistent-storage=}" + export PERSISTENT_STORAGE + ;; + + persistent-subtext=*) + root_overlay_label="${root_overlay_label}-${ARGUMENT#persistent-subtext=}" + custom_overlay_label="${custom_overlay_label}-${ARGUMENT#persistent-subtext=}" + root_snapshot_label="${root_snapshot_label}-${ARGUMENT#persistent-subtext=}" + home_snapshot_label="${home_snapshot_label}-${ARGUMENT#persistent-subtext=}" + ;; + + nopersistent) + NOPERSISTENT="Yes" + export NOPERSISTENT + ;; + + noprompt) + NOPROMPT="Yes" + export NOPROMPT + ;; + + noprompt=*) + NOPROMPT="${ARGUMENT#noprompt=}" + export NOPROMPT + ;; + + quickusbmodules) + QUICKUSBMODULES="Yes" + export QUICKUSBMODULES + ;; + + preseed/file=*|file=*) + LOCATIONS="${ARGUMENT#*=} ${LOCATIONS}" + export LOCATIONS + ;; + + nopreseed) + NOPRESEED="Yes" + export NOPRESEED + ;; + + */*=*) + question="${ARGUMENT%%=*}" + value="${ARGUMENT#*=}" + PRESEEDS="${PRESEEDS}\"${question}=${value}\" " + export PRESEEDS + ;; + + showmounts) + SHOWMOUNTS="Yes" + export SHOWMOUNTS + ;; + + silent) + SILENT="Yes" + export SILENT + ;; + + todisk=*) + TODISK="${ARGUMENT#todisk=}" + export TODISK + ;; + + toram) + TORAM="Yes" + export TORAM + ;; + + toram=*) + TORAM="Yes" + MODULETORAM="${ARGUMENT#toram=}" + export TORAM MODULETORAM + ;; + + exposedroot) + EXPOSED_ROOT="Yes" + export EXPOSED_ROOT + ;; + + plainroot) + PLAIN_ROOT="Yes" + export PLAIN_ROOT + ;; + + skipunion) + SKIP_UNION_MOUNTS="Yes" + export SKIP_UNION_MOUNTS + ;; + + root=*) + ROOT="${ARGUMENT#root=}" + export ROOT + ;; + + union=*) + UNIONTYPE="${ARGUMENT#union=}" + export UNIONTYPE + ;; + esac + done + + # sort of compatibility with netboot.h from linux docs + if [ -z "${NETBOOT}" ] + then + if [ "${ROOT}" = "/dev/nfs" ] + then + NETBOOT="nfs" + export NETBOOT + elif [ "${ROOT}" = "/dev/cifs" ] + then + NETBOOT="cifs" + export NETBOOT + fi + fi + + if [ -z "${MODULE}" ] + then + MODULE="filesystem" + export MODULE + fi + + if [ -z "${UNIONTYPE}" ] + then + UNIONTYPE="aufs" + export UNIONTYPE + fi + + if [ -z "${PERSISTENT_ENCRYPTION}" ] + then + PERSISTENT_ENCRYPTION="none" + export PERSISTENT_ENCRYPTION + elif echo ${PERSISTENT_ENCRYPTION} | grep -qe "\<luks\>" + then + if ! modprobe dm-crypt + then + log_warning_msg "Unable to load module dm-crypt" + PERSISTENT_ENCRYPTION=$(echo ${PERSISTENT_ENCRYPTION} | sed -e 's/\<luks,\|,\?luks$//g') + export PERSISTENT_ENCRYPTION + fi + + if [ ! -x /lib/cryptsetup/askpass ] || [ ! -x /sbin/cryptsetup ] + then + log_warning_msg "cryptsetup in unavailable" + PERSISTENT_ENCRYPTION=$(echo ${PERSISTENT_ENCRYPTION} | sed -e 's/\<luks,\|,\?luks$//g') + export PERSISTENT_ENCRYPTION + fi + fi + + if [ -z "${PERSISTENT_METHOD}" ] + then + PERSISTENT_METHOD="snapshot,overlay" + export PERSISTENT_METHOD + fi + + if [ -z "${PERSISTENT_STORAGE}" ] + then + PERSISTENT_STORAGE="filesystem,file" + export PERSISTENT_STORAGE + fi +} + sys2dev () { sysdev=${1#/sys} |
