X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=scripts%2Flive;h=db1d355d0ccd38fe3c0c0c0987e4cd7dc5ab14c6;hb=08244e9b0c9b4be3c841fcc7d54f9b940ab4ec1c;hp=7a0a78e3c9598ae8c3f61397aed449ba3d070c7c;hpb=cb896241d0ec8eb2bba0cecd11de3500869176a6;p=live-boot-grml.git diff --git a/scripts/live b/scripts/live index 7a0a78e..db1d355 100755 --- a/scripts/live +++ b/scripts/live @@ -18,12 +18,22 @@ home_snapshot_label="home-sn" USERNAME="user" USERFULLNAME="Live user" HOSTNAME="host" -BUILD_SYSTEM="Custom" mkdir -p "${mountpoint}" +# Create /etc/mtab for debug purpose and future syncs +if [ ! -d /etc ] +then + mkdir /etc/ +fi + +if [ ! -f /etc/mtab ] +then + touch /etc/mtab +fi + [ -f /etc/live.conf ] && . /etc/live.conf -export USERNAME USERFULLNAME HOSTNAME BUILD_SYSTEM +export USERNAME USERFULLNAME HOSTNAME . /scripts/live-helpers @@ -36,7 +46,7 @@ Arguments () { PRESEEDS="" - for ARGUMENT in `cat /proc/cmdline` + for ARGUMENT in $(cat /proc/cmdline) do case "${ARGUMENT}" in access=*) @@ -46,7 +56,7 @@ Arguments () console=*) DEFCONSOLE="${ARGUMENT#*=}" - export DEFCONFSOLE + export DEFCONSOLE ;; debug) @@ -61,6 +71,21 @@ Arguments () export FETCH ;; + hook=*) + HOOK="${ARGUMENT#hook=}" + export HOOK + ;; + + ftpfs=*) + FTPFS="${ARGUMENT#ftpfs=}" + export FTPFS + ;; + + httpfs=*) + HTTPFS="${ARGUMENT#httpfs=}" + export HTTPFS + ;; + hostname=*) HOSTNAME="${ARGUMENT#hostname=}" LIVECONF="changed" @@ -79,6 +104,16 @@ Arguments () export USERFULLNAME LIVECONF ;; + ignore_uuid) + IGNORE_UUID="Yes" + export IGNORE_UUID + ;; + + integrity-check) + INTEGRITY_CHECK="Yes" + export INTEGRITY_CHECK + ;; + ip=*) STATICIP="${ARGUMENT#ip=}" @@ -145,6 +180,12 @@ Arguments () export LIVE_MEDIA_TIMEOUT ;; + language=*|debian-installer/language=*) + language=${x#debian-installer/language=} + locale="$(lang2locale "$language")" + set_locale="true" + ;; + locale=*|debian-installer/locale=*) LOCALE="${ARGUMENT#*=}" export LOCALE @@ -165,11 +206,21 @@ Arguments () export NFSOPTS ;; + nfscow=*) + NFS_COW="${ARGUMENT#nfscow=}" + export NFS_COW + ;; + noaccessibility) NOACCESSIBILITY="Yes" export NOACCESSIBILITY ;; + noapparmor) + NOAPPARMOR="Yes" + export NOAPPARMOR + ;; + noaptcdrom) NOAPTCDROM="Yes" export NOAPTCDROM @@ -215,11 +266,6 @@ Arguments () export NOKPERSONALIZER ;; - nokwallet) - NOKWALLET="Yes" - export NOKWALLET - ;; - nolanguageselector) NOLANGUAGESELECTOR="Yes" export NOLANGUAGESELECTOR @@ -245,9 +291,9 @@ Arguments () export NOPROGRAMCRASHES ;; - norestrictedmanager) - NORESTRICTEDMANAGER="Yes" - export NORESTRICTEDMANAGER + nojockey) + NOJOCKEY="Yes" + export NOJOCKEY ;; nosudo) @@ -255,9 +301,9 @@ Arguments () export NOSUDO ;; - noswap) - NOSWAP="Yes" - export NOSWAP + swapon) + SWAPON="Yes" + export SWAPON ;; noupdatenotifier) @@ -285,6 +331,27 @@ Arguments () export PERSISTENT ;; + persistent=*) + PERSISTENT="${ARGUMENT#persistent=}" + if [ -z "${PERSISTENT}" ] + then + PERSISTENT="Yes" + fi + export PERSISTENT + ;; + + persistent-path=*) + PERSISTENT_PATH="${ARGUMENT#persistent-path=}" + export PERSISTENT_PATH + ;; + + persistent-subtext=*) + root_persistence="${root_persistence}-${ARGUMENT#persistent-subtext=}" + home_persistence="${home_persistence}-${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 @@ -303,20 +370,20 @@ Arguments () url=*) location="${ARGUMENT#url=}" - mount -n -o bind /sys /root/sys - mount -n -o bind /proc /root/proc - mount -n -o bind /dev /root/dev + mount -o bind /sys /root/sys + mount -o bind /proc /root/proc + mount -o bind /dev /root/dev mkdir -p /root/var/run/network - chroot /root ifup -a - chroot /root wget -P /tmp "$location" - chroot /root ifdown -a + chroot /root dhclient eth0 + chroot /root wget -P /tmp "${location}" + chroot /root ifconfig eth0 down umount /root/sys umount /root/proc umount /root/dev - LOCATION="/tmp/$(basename "$location")" + LOCATION="/tmp/$(basename "${location}")" ;; */*=*) @@ -331,6 +398,16 @@ Arguments () export SHOWMOUNTS ;; + silent) + SILENT="Yes" + export SILENT + ;; + + textonly) + TEXTONLY="Yes" + export TEXTONLY + ;; + timezone=*) TIMEZONE="${ARGUMENT#timezone=}" export TIMEZONE @@ -357,6 +434,26 @@ Arguments () 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 @@ -372,6 +469,11 @@ Arguments () export XDEBCONF ;; + xdriver=*) + XDRIVER="${ARGUMENT#xdriver=}" + export XDRIVER + ;; + xvideomode=*) XVIDEOMODE="${ARGUMENT#xvideomode=}" export XVIDEOMODE @@ -401,7 +503,7 @@ Arguments () if [ -z "${UNIONTYPE}" ] then - UNIONTYPE="unionfs" + UNIONTYPE="aufs" export UNIONTYPE fi } @@ -412,9 +514,9 @@ is_live_path () if [ -d "${DIRECTORY}"/"${LIVE_MEDIA_PATH}" ] then - for FILESYSTEM in squashfs ext2 ext3 xfs dir + for FILESYSTEM in squashfs ext2 ext3 ext4 xfs dir jffs2 do - if [ "`echo ${DIRECTORY}/${LIVE_MEDIA_PATH}/*.${FILESYSTEM}`" != "${DIRECTORY}/${LIVE_MEDIA_PATH}/*.${FILESYSTEM}" ] + if [ "$(echo ${DIRECTORY}/${LIVE_MEDIA_PATH}/*.${FILESYSTEM})" != "${DIRECTORY}/${LIVE_MEDIA_PATH}/*.${FILESYSTEM}" ] then return 0 fi @@ -424,11 +526,36 @@ is_live_path () return 1 } +matches_uuid () +{ + if [ "${IGNORE_UUID}" ] || [ ! -e /conf/uuid.conf ] + then + return 0 + fi + + path="${1}" + uuid="$(cat /conf/uuid.conf)" + + for try_uuid_file in "${path}/.disk/live-uuid"* + do + [ -e "${try_uuid_file}" ] || continue + + try_uuid="$(cat "${try_uuid_file}")" + + if [ "${uuid}" = "${try_uuid}" ] + then + return 0 + fi + done + + return 1 +} + get_backing_device () { - case "$1" in - *.squashfs|*.ext2|*.ext3) - echo $(setup_loop "$1" "loop" "/sys/block/loop*" '0' "${LIVE_MEDIA_ENCRYPTION}") + case "${1}" in + *.squashfs|*.ext2|*.ext3|*.ext4|*.jffs2) + echo $(setup_loop "${1}" "loop" "/sys/block/loop*" '0' "${LIVE_MEDIA_ENCRYPTION}" "${2}") ;; *.dir) @@ -436,17 +563,17 @@ get_backing_device () ;; *) - panic "Unrecognized live filesystem: $1" + panic "Unrecognized live filesystem: ${1}" ;; esac } match_files_in_dir () { - # Does any files match pattern $1 ? - local pattern="$1" + # Does any files match pattern ${1} ? + local pattern="${1}" - if [ "$(echo $pattern)" != "$pattern" ] + if [ "$(echo ${pattern})" != "${pattern}" ] then return 0 fi @@ -456,17 +583,22 @@ match_files_in_dir () mount_images_in_directory () { - directory="$1" - rootmnt="$2" + directory="${1}" + rootmnt="${2}" + mac="${3}" - if match_files_in_dir "$directory/${LIVE_MEDIA_PATH}/*.squashfs" || - match_files_in_dir "$directory/${LIVE_MEDIA_PATH}/*.ext2" || - match_files_in_dir "$directory/${LIVE_MEDIA_PATH}/*.ext3" || - match_files_in_dir "$directory/${LIVE_MEDIA_PATH}/*.dir" + + if match_files_in_dir "${directory}/${LIVE_MEDIA_PATH}/*.squashfs" || + match_files_in_dir "${directory}/${LIVE_MEDIA_PATH}/*.ext2" || + match_files_in_dir "${directory}/${LIVE_MEDIA_PATH}/*.ext3" || + match_files_in_dir "${directory}/${LIVE_MEDIA_PATH}/*.ext4" || + match_files_in_dir "${directory}/${LIVE_MEDIA_PATH}/*.jffs2" || + match_files_in_dir "${directory}/${LIVE_MEDIA_PATH}/*.dir" then - setup_unionfs "$directory/${LIVE_MEDIA_PATH}" "$rootmnt" + [ -n "${mac}" ] && adddirectory="${directory}/${LIVE_MEDIA_PATH}/${mac}" + setup_unionfs "${directory}/${LIVE_MEDIA_PATH}" "${rootmnt}" "${adddirectory}" else - : + panic "No supported filesystem images found at /${LIVE_MEDIA_PATH}." fi } @@ -474,7 +606,10 @@ is_nice_device () { sysfs_path="${1#/sys}" - if /lib/udev/path_id "${sysfs_path}" | grep -E -q "ID_PATH=(usb|pci-[^-]*-[ide|scsi|usb])" + if /lib/udev/path_id "${sysfs_path}" | grep -E -q "ID_PATH=(usb|pci-[^-]*-(ide|scsi|usb))" + then + return 0 + elif echo "${sysfs_path}" | grep -q '^/block/vd[a-z]$' then return 0 fi @@ -482,20 +617,6 @@ is_nice_device () return 1 } -is_supported_fs () -{ - # FIXME: do something better like the scan of supported filesystems - fstype="${1}" - - case ${fstype} in - vfat|iso9660|udf|ext2|ext3|ntfs) - return 0 - ;; - esac - - return 1 -} - copy_live_to () { copyfrom="${1}" @@ -512,7 +633,7 @@ copy_live_to () then size=$( expr $(ls -la ${MODULETORAMFILE} | awk '{print $5}') / 1024 + 5000 ) else - log_warning_msg "Error: toram-module $MODULETORAM ($MODULETORAMFILE) could not be read." + log_warning_msg "Error: toram-module ${MODULETORAM} (${MODULETORAMFILE}) could not be read." return 1 fi fi @@ -520,7 +641,7 @@ copy_live_to () if [ "${copytodev}" = "ram" ] then # copying to ram: - freespace=$( expr $(awk '/MemFree/{print $2}' /proc/meminfo) + $( cat /proc/meminfo | grep Cached | head -n 1 | awk '/Cached/{print $2}' - ) ) + freespace=$( expr $(awk '/MemFree/{print $2}' /proc/meminfo) + $( awk '/\