export DEFCONSOLE
;;
+ BOOTIF=*)
+ BOOTIF="${x#BOOTIF=}"
+ ;;
+
debug)
DEBUG="Yes"
export DEBUG
;;
fetch=*)
- FETCH="${ARGUMENT#fetch=}"
- export FETCH
- ;;
+ FETCH="${ARGUMENT#fetch=}"
+ export FETCH
+ ;;
forcepersistentfsck)
FORCEPERSISTENTFSCK="Yes"
httpfs=*)
HTTPFS="${ARGUMENT#httpfs=}"
export HTTPFS
- ;;
+ ;;
iscsi=*)
ISCSI="${ARGUMENT#iscsi=}"
export NONETWORKING
;;
+ ramdisk-size=*)
+ ramdisk_size="${ARGUMENT#ramdisk-size=}"
+ ;;
+
swapon)
SWAPON="Yes"
export SWAPON
export NOPERSISTENT
;;
+ noprompt)
+ NOPROMPT="Yes"
+ export NOPROMPT
+ ;;
+
+ noprompt=*)
+ NOPROMPT="${ARGUMENT#noprompt=}"
+ export NOPROMPT
+ ;;
+
quickusbmodules)
QUICKUSBMODULES="Yes"
export QUICKUSBMODULES
;;
skipunion)
- SKIP_UNION_MOUNTS="Yes"
- export SKIP_UNION_MOUNTS
- ;;
+ SKIP_UNION_MOUNTS="Yes"
+ export SKIP_UNION_MOUNTS
+ ;;
root=*)
ROOT="${ARGUMENT#root=}"
{
sysfs_path="${1#/sys}"
- if /lib/udev/path_id "${sysfs_path}" | egrep -q "ID_PATH=(usb|pci-|platform-orion-ehci|platform-mmc|platform-mxsdhci|)"
+ if /lib/udev/path_id "${sysfs_path}" | egrep -q "ID_PATH=(usb|pci-|platform-sata_mv|platform-orion-ehci|platform-mmc|platform-mxsdhci|)"
then
return 0
elif echo "${sysfs_path}" | grep -q '^/block/vd[a-z]$'
elif echo ${sysfs_path} | grep -q "^/block/dm-"
then
return 0
+ elif echo ${sysfs_path} | grep -q "^/block/mtdblock"
+ then
+ return 0
fi
return 1
return 1
fi
+ # Custom ramdisk size
+ if [ -z "${mount_options}" ] && [ -n "${ramdisk_size}" ]
+ then
+ # FIXME: should check for wrong values
+ mount_options="-o size=${ramdisk_size}"
+ fi
+
# begin copying (or uncompressing)
mkdir "${copyto}"
log_begin_msg "mount -t ${fstype} ${mount_options} ${dev} ${copyto}"
udevadm trigger
udevadm settle
+ [ -n "$ETHDEV_TIMEOUT" ] || ETHDEV_TIMEOUT=15
+ echo "Using timeout of $ETHDEV_TIMEOUT seconds for network configuration."
+
if [ -z "${NETBOOT}" ] && [ -z "${FETCH}" ] && \
[ -z "${HTTPFS}" ] && [ -z "${FTPFS}" ]
then
+
+ # support for Syslinux IPAPPEND parameter
+ # it sets the BOOTIF variable on the kernel parameter
+
+ if [ -n "${BOOTIF}" ]
+ then
+ # pxelinux sets BOOTIF to a value based on the mac address of the
+ # network card used to PXE boot, so use this value for DEVICE rather
+ # than a hard-coded device name from initramfs.conf. this facilitates
+ # network booting when machines may have multiple network cards.
+ # pxelinux sets BOOTIF to 01-$mac_address
+
+ # strip off the leading "01-", which isn't part of the mac
+ # address
+ temp_mac=${BOOTIF#*-}
+
+ # convert to typical mac address format by replacing "-" with ":"
+ bootif_mac=""
+ IFS='-'
+ for x in $temp_mac
+ do
+ if [ -z "$bootif_mac" ]
+ then
+ bootif_mac="$x"
+ else
+ bootif_mac="$bootif_mac:$x"
+ fi
+ done
+ unset IFS
+
+ # look for devices with matching mac address, and set DEVICE to
+ # appropriate value if match is found.
+
+ for device in /sys/class/net/*
+ do
+ if [ -f "$device/address" ]
+ then
+ current_mac=$(cat "$device/address")
+
+ if [ "$bootif_mac" = "$current_mac" ]
+ then
+ DEVICE=${device##*/}
+ break
+ fi
+ fi
+ done
+ fi
+
# if ethdevice was not specified on the kernel command line
# make sure we try to get a working network configuration
# for *every* present network device (except for loopback of course)
devlist="$devlist $device"
done
- [ -n "$ETHDEV_TIMEOUT" ] || ETHDEV_TIMEOUT=15
- echo "Using timeout of $ETHDEV_TIMEOUT seconds for network configuration."
-
# this is tricky (and ugly) because ipconfig sometimes just hangs/runs into
# an endless loop; iff execution fails give it two further tries, that's
# why we use '$devlist $devlist $devlist' for the other for loop
done
else
- ipconfig ${DEVICE} | tee /netboot.config
- fi
-
- # source relevant ipconfig output
- OLDHOSTNAME=${HOSTNAME}
- . /tmp/net-${DEVICE}.conf
- [ -z ${HOSTNAME} ] && HOSTNAME=${OLDHOSTNAME}
- export HOSTNAME
-
- if [ -n "${DEVICE}" ]
- then
- HWADDR="$(cat /sys/class/net/${DEVICE}/address)"
+ for interface in ${DEVICE}; do
+ ipconfig -t "$ETHDEV_TIMEOUT" ${interface} | tee /netboot-${interface}.config
+ [ -e /tmp/net-${interface}.conf ] && . /tmp/net-${interface}.conf
+ if [ "$IPV4ADDR" != "0.0.0.0" ]
+ then
+ break
+ fi
+ done
fi
- if [ ! -e "/etc/resolv.conf" ]
- then
- echo "Creating /etc/resolv.conf"
+ for interface in ${DEVICE}; do
+ # source relevant ipconfig output
+ OLDHOSTNAME=${HOSTNAME}
+ [ -e /tmp/net-${interface}.conf ] && . /tmp/net-${interface}.conf
+ [ -z ${HOSTNAME} ] && HOSTNAME=${OLDHOSTNAME}
+ export HOSTNAME
- if [ -n "${DNSDOMAIN}" ]
+ if [ -n "${interface}" ]
then
- echo "domain ${DNSDOMAIN}" > /etc/resolv.conf
- echo "search ${DNSDOMAIN}" > /etc/resolv.conf
+ HWADDR="$(cat /sys/class/net/${interface}/address)"
fi
- for i in ${IPV4DNS0} ${IPV4DNS1} ${IPV4DNS1}
- do
- echo "nameserver $i" >> /etc/resolv.conf
- done
- fi
+ if [ ! -e "/etc/resolv.conf" ]
+ then
+ echo "Creating /etc/resolv.conf"
- # Check if we have a network device at all
- if ! ls /sys/class/net/"$DEVICE" > /dev/null 2>&1 && \
- ! ls /sys/class/net/eth0 > /dev/null 2>&1 && \
- ! ls /sys/class/net/wlan0 > /dev/null 2>&1 && \
- ! ls /sys/class/net/ath0 > /dev/null 2>&1 && \
- ! ls /sys/class/net/ra0 > /dev/null 2>&1
- then
- panic "No supported network device found, maybe a non-mainline driver is required."
- fi
+ if [ -n "${DNSDOMAIN}" ]
+ then
+ echo "domain ${DNSDOMAIN}" > /etc/resolv.conf
+ echo "search ${DNSDOMAIN}" > /etc/resolv.conf
+ fi
+
+ for i in ${IPV4DNS0} ${IPV4DNS1} ${IPV4DNS1}
+ do
+ echo "nameserver $i" >> /etc/resolv.conf
+ done
+ fi
+
+ # Check if we have a network device at all
+ if ! ls /sys/class/net/"$interface" > /dev/null 2>&1 && \
+ ! ls /sys/class/net/eth0 > /dev/null 2>&1 && \
+ ! ls /sys/class/net/wlan0 > /dev/null 2>&1 && \
+ ! ls /sys/class/net/ath0 > /dev/null 2>&1 && \
+ ! ls /sys/class/net/ra0 > /dev/null 2>&1
+ then
+ panic "No supported network device found, maybe a non-mainline driver is required."
+ fi
+ done
}
do_netmount()
[ "${DEBUG}" == "Yes" ] && debugopt="-d 8"
#FIXME this name is supposed to be unique - some date + ifconfig hash?
ISCSI_INITIATORNAME="iqn.1993-08.org.debian.live:01:$(echo "${HWADDR}" | sed -e s/://g)"
- export ISCSI_INITIATORNAME
+ export ISCSI_INITIATORNAME
if [ -n "${ISCSI_SERVER}" ] ; then
iscsistart $debugopt -i "${ISCSI_INITIATORNAME}" -t "${ISCSI_TARGET}" -g 1 -a "${ISCSI_SERVER}" -p "${ISCSI_PORT}"
else
if [ -b "${fromdev}" ]
then
+ log_success_msg "Copying snapshot ${fromdev} to ${todir}..."
+
# look for free mem
if [ -n "${HOMEMOUNTED}" -a "${snap_type}" = "HOME" ]
then
return 0
else
- return 1
-
log_warning_msg "Unable to find the snapshot ${snap_type} medium"
+ return 1
fi
}
{
# Look for ${snap_label}.* in block devices
snap_label="${1}"
+ black_listed_devices="${2}"
if [ "${PERSISTENT}" != "nofiles" ]
then
# search for image files
- snapdata=$(find_files "${PERSISTENT_PATH}${snap_label}.squashfs ${PERSISTENT_PATH}${snap_label}.cpio.gz ${PERSISTENT_PATH}${snap_label}.ext2 ${PERSISTENT_PATH}${snap_label}.ext3 ${PERSISTENT_PATH}${snap_label}.ext4 ${PERSISTENT_PATH}${snap_label}.jffs2")
+ snapdata=$(find_files "${PERSISTENT_PATH}${snap_label}.squashfs ${PERSISTENT_PATH}${snap_label}.cpio.gz ${PERSISTENT_PATH}${snap_label}.ext2 ${PERSISTENT_PATH}${snap_label}.ext3 ${PERSISTENT_PATH}${snap_label}.ext4 ${PERSISTENT_PATH}${snap_label}.jffs2" "${black_listed_devices}")
fi
if [ -z "${snapdata}" ]
then
- snapdata=$(find_cow_device "${snap_label}")
+ snapdata=$(find_cow_device "${snap_label}" "${black_listed_devices}")
fi
echo "${snapdata}"
}
try_snap ()
{
- # copy the contents of previously found snapshot to ${snap_mount}
+ # copy the contents of previously found snapshot to ${snap_mount}
# and remember the device and filename for resync on exit in live-boot.init
snapdata="${1}"
snap_mount="${2}"
snap_type="${3}"
+ snap_relpath="${4}"
+
+ if [ -z "${snap_relpath}" ]
+ then
+ # root snapshot, default usage
+ snap_relpath="/"
+ else
+ # relative snapshot (actually used just for "/home" snapshots)
+ snap_mount="${2}${snap_relpath}"
+ fi
if [ -n "${snapdata}" ] && [ ! -b "${snapdata}" ]
then
cpioargs='--unconditional --make-directories'
fi
- cd "${snap_mount}" && zcat "${snapback}/${snapfile}" | $cpiopath $cpioargs --extract --preserve-modification-time --no-absolute-filenames --sparse 2>/dev/null
- RES="$?"
+ if [ -s "${snapback}/${snapfile}" ]
+ then
+ BEFOREDIR="$(pwd)"
+ cd "${snap_mount}" && zcat "${snapback}/${snapfile}" | $cpiopath $cpioargs --extract --preserve-modification-time --no-absolute-filenames --sparse 2>/dev/null
+ RES="$?"
+ cd "${BEFOREDIR}"
+ else
+ log_warning_msg "${snapback}/${snapfile} is empty, adding it for sync on reboot."
+ RES="0"
+ fi
if [ "${RES}" != "0" ]
then
if ! do_snap_copy "${dev}" "${snap_mount}" "${snap_type}"
then
- log_warning_msg "Impossible to include the ${snap_type} Snapshot"
+ log_warning_msg "Impossible to include the ${snap_type} Snapshot (i)"
return 1
else
if [ -n "${snapfile}" ]
fi
fi
else
- log_warning_msg "Impossible to include the ${snap_type} Snapshot"
+ log_warning_msg "Impossible to include the ${snap_type} Snapshot (o)"
return 1
fi
- echo "export ${snap_type}SNAP="/cow${snap_mount#$rootmnt}":${snapdev}:${snapfile}" >> /etc/live.conf # for resync on reboot/halt
+ echo "export ${snap_type}SNAP=${snap_relpath}:${snapdev}:${snapfile}" >> snapshot.conf # for resync on reboot/halt
return 0
}
{
image_directory="${1}"
rootmnt="${2}"
- addimage_directory="${3}"
+ addimage_directory="${3}"
case ${UNIONTYPE} in
aufs|unionfs)
croot="/"
# Let's just mount the read-only file systems first
- rofsstring=""
rofslist=""
if [ "${UNIONTYPE}" = "aufs" ]
image_string="$(echo ${image_string} | sed -e 's/ /\n/g' | sort )"
fi
- [ -n "${MODULETORAMFILE}" ] && image_string="${image_directory}/$(basename ${MODULETORAMFILE})"
+ [ -n "${MODULETORAMFILE}" ] && image_string="${image_directory}/$(basename ${MODULETORAMFILE})"
mkdir -p "${croot}"
if [ -d "${image}" ]
then
# it is a plain directory: do nothing
- rofsstring="${image}=${roopt}:${rofsstring}"
rofslist="${image} ${rofslist}"
elif [ -f "${image}" ]
then
log_warning_msg "Unknown file system type on ${backdev} (${image}), assuming ${fstype}."
fi
- mkdir -p "${croot}/${imagename}"
- log_begin_msg "Mounting \"${image}\" on \"${croot}${imagename}\" via \"${backdev}\""
- mount -t "${fstype}" -o ro,noatime "${backdev}" "${croot}/${imagename}" || panic "Can not mount ${backdev} (${image}) on ${croot}/${imagename}" && rofsstring="${croot}/${imagename}=${roopt}:${rofsstring}" && rofslist="${croot}/${imagename} ${rofslist}"
+ if [ "${UNIONTYPE}" != "unionmount" ]
+ then
+ mpoint="${croot}/${imagename}"
+ rofslist="${mpoint} ${rofslist}"
+ else
+ mpoint="${rootmnt}"
+ rofslist="${rootmnt} ${rofslist}"
+ fi
+ mkdir -p "${mpoint}"
+ log_begin_msg "Mounting \"${image}\" on \"${mpoint}\" via \"${backdev}\""
+ mount -t "${fstype}" -o ro,noatime "${backdev}" "${mpoint}" || panic "Can not mount ${backdev} (${image}) on ${mpoint}"
log_end_msg
fi
done
# we have a plain root system
mkdir -p "${croot}/filesystem"
log_begin_msg "Mounting \"${image_directory}\" on \"${croot}/filesystem\""
- mount -t $(get_fstype "${image_directory}") -o ro,noatime "${image_directory}" "${croot}/filesystem" || panic "Can not mount ${image_directory} on ${croot}/filesystem" && rofsstring="${croot}/filesystem=${roopt}:${rofsstring}" && rofslist="${croot}/filesystem ${rofslist}"
+ mount -t $(get_fstype "${image_directory}") -o ro,noatime "${image_directory}" "${croot}/filesystem" || \
+ panic "Can not mount ${image_directory} on ${croot}/filesystem" && \
+ rofslist="${croot}/filesystem ${rofslist}"
# probably broken:
mount -o bind ${croot}/filesystem $mountpoint
log_end_msg
fi
- rofsstring=${rofsstring%:}
-
mkdir -p /cow
# Looking for "${root_persistence}" device or file
cow_mountopt="rw,noatime,mode=755"
fi
- if [ "${cow_fstype}" = "nfs" ]
+ if [ "${UNIONTYPE}" != "unionmount" ]
then
- log_begin_msg \
- "Trying nfsmount ${nfs_cow_opts} ${cowdevice} /cow"
- nfsmount ${nfs_cow_opts} ${cowdevice} /cow || \
- panic "Can not mount ${cowdevice} (n: ${cow_fstype}) on /cow"
- else
- mount -t ${cow_fstype} -o ${cow_mountopt} ${cowdevice} /cow || \
- panic "Can not mount ${cowdevice} (o: ${cow_fstype}) on /cow"
+
+ if [ "${cow_fstype}" = "nfs" ]
+ then
+ log_begin_msg \
+ "Trying nfsmount ${nfs_cow_opts} ${cowdevice} /cow"
+ nfsmount ${nfs_cow_opts} ${cowdevice} /cow || \
+ panic "Can not mount ${cowdevice} (n: ${cow_fstype}) on /cow"
+ else
+ mount -t ${cow_fstype} -o ${cow_mountopt} ${cowdevice} /cow || \
+ panic "Can not mount ${cowdevice} (o: ${cow_fstype}) on /cow"
+ fi
fi
rofscount=$(echo ${rofslist} |wc -w)
- if [ -n "${EXPOSED_ROOT}" ]
+ if [ ${rofscount} -ne 1 ]
then
- if [ ${rofscount} -ne 1 ]
- then
- panic "only one RO file system supported with exposedroot: ${rofslist}"
- fi
- exposedrootfs=${rofslist%% }
+ panic "only one RO file system supported with exposedroot: ${rofslist}"
+ fi
+ rofs=${rofslist%% }
- mount --bind ${exposedrootfs} ${rootmnt} || \
- panic "bind mount of ${exposedrootfs} failed"
+ if [ -n "${EXPOSED_ROOT}" ]
+ then
+ mount --bind ${rofs} ${rootmnt} || \
+ panic "bind mount of ${rofs} failed"
if [ -z "${SKIP_UNION_MOUNTS}" ]
then
else
cow_dirs=''
fi
+ else
+ cow_dirs="/"
+ fi
+
+ if [ "${cow_fstype}" != "tmpfs" ] && [ "${cow_dirs}" != "/" ] && [ "${UNIONTYPE}" = "unionmount" ]
+ then
+ true # FIXME: Maybe it does, I don't really know.
+ #panic "unionmount does not support subunions (${cow_dirs})."
+ fi
- for dir in ${cow_dirs}; do
- mkdir -p /cow${dir}
+ unionmountopts=""
+ unionmountpoint=""
- case "${UNIONTYPE}" in
- unionfs-fuse)
- (ulimit -n 16384; unionfs-fuse -o cow -o noinitgroups -o default_permissions -o allow_other -o use_ino -o suid /cow=RW:${exposedrootfs}${dir} "${rootmnt}${dir}" || panic "mount ${UNIONTYPE} on ${rootmnt}${dir} failed with option cow,noinitgroups,default_permissions,allow_other,use_ino,suid=/cow=RW:${exposedrootfs}${dir}")
- mkdir -p /dev/.initramfs/varrun
- pidof unionfs-fuse >> /dev/.initramfs/varrun/sendsigs.omit || true
- ;;
+ for dir in ${cow_dirs}; do
+ mkdir -p /cow${dir}
- *)
- mount -t ${UNIONTYPE} -o rw,noatime,dirs=/cow${dir}=rw:${exposedrootfs}${dir}=ro ${UNIONTYPE} "${rootmnt}${dir}" || panic "mount ${UNIONTYPE} on ${rootmnt}${dir} failed with option rw,noatime,dirs=/cow${dir}=rw:${exposedrootfs}${dir}=ro"
- ;;
- esac
- done
- else
+ unionmountpoint="${rootmnt}${dir}"
+ unionrw="/cow${dir}"
+ unionro="${rofs}${dir}"
+ # We don't handle spaces and other junk gracefully here, hopefully not needed.
case "${UNIONTYPE}" in
unionfs-fuse)
- (ulimit -n 16384; unionfs-fuse -o cow -o noinitgroups -o default_permissions -o allow_other -o use_ino -o suid /cow=RW:${rofsstring} "${rootmnt}" || panic "mount ${UNIONTYPE} on ${rootmnt} failed with option cow,noinitgroups,default_permissions,allow_other,use_ino,suid=/cow:RW:${rofsstring}")
- mkdir -p /dev/.initramfs/varrun
- pidof unionfs-fuse >> /dev/.initramfs/varrun/sendsigs.omit || true
+ unionmountopts="-o cow -o noinitgroups -o default_permissions -o allow_other -o use_ino -o suid"
+ unionmountopts="${unionmountopts} ${unionrw}=RW:${unionro}=RO"
+ ( sysctl -w fs.file-max=391524 ; ulimit -HSn 16384
+ unionfs-fuse ${unionmountopts} "${unionmountpoint}" ) && \
+ ( mkdir -p /dev/.initramfs/varrun
+ pidof unionfs-fuse >> /dev/.initramfs/varrun/sendsigs.omit || true )
+ ;;
+
+ unionmount)
+ unionmountopts="-t ${cow_fstype} -o noatime,union,${cow_mountopt} ${cowdevice}"
+ mount_full $unionmountopts "${unionmountpoint}"
;;
+
*)
- mount -t ${UNIONTYPE} -o noatime,${noxino_opt}dirs=/cow=rw:${rofsstring} ${UNIONTYPE} "${rootmnt}" || panic "mount ${UNIONTYPE} on ${rootmnt} failed with option noatime,${noxino_opt}dirs=/cow=rw:${rofsstring}"
+ unionmountopts="-o noatime,${noxino_opt}dirs=${unionrw}=rw:${unionro}=${roopt}"
+ mount -t ${UNIONTYPE} ${unionmountopts} ${UNIONTYPE} "${unionmountpoint}"
;;
- esac
- fi
+ esac || \
+ panic "mount ${UNIONTYPE} on ${unionmountpoint} failed with option ${unionmountopts}"
+ done
# Correct the permissions of /:
chmod 0755 "${rootmnt}"
# Look for other snapshots to copy in
try_snap "${root_snapdata}" "${rootmnt}" "ROOT"
# This second type should be removed when snapshot grow smarter
- try_snap "${home_snapdata}" "${rootmnt}/home" "HOME"
+ try_snap "${home_snapdata}" "${rootmnt}" "HOME" "/home"
fi
if [ -n "${SHOWMOUNTS}" ]
if [ "$ISO_DEVICE" = "/" ]
then
- echo "Warning: device for bootoption isofrom= ($FROMISO) not found.">>/live.log
+ echo "Warning: device for bootoption isofrom= ($FROMISO) not found.">>/live-boot.log
else
- mkdir /isofrom
- mount "$ISO_DEVICE" /isofrom
- ISO_NAME="$(echo $FROMISO | sed "s|$ISO_DEVICE||")"
- loopdevname=$(setup_loop "/isofrom/${ISO_NAME}" "loop" "/sys/block/loop*" "" '')
- devname="${loopdevname}"
+ fs_type=$(get_fstype "${ISO_DEVICE}")
+ if is_supported_fs ${fs_type}
+ then
+ mkdir /isofrom
+ mount -t $fs_type "$ISO_DEVICE" /isofrom
+ ISO_NAME="$(echo $FROMISO | sed "s|$ISO_DEVICE||")"
+ loopdevname=$(setup_loop "/isofrom/${ISO_NAME}" "loop" "/sys/block/loop*" "" '')
+ devname="${loopdevname}"
+ else
+ echo "Warning: unable to mount $ISO_DEVICE." >>/live.log
+ fi
fi
fi
do
if [ "$(cat ${sysblock}/removable)" = "1" ]
then
- if readlink ${sysblock} | grep -q usb ||
- readlink ${sysblock}/device | grep -q usb # linux < 2.6.29
+ if readlink ${sysblock} | grep -q usb
then
for dev in $(subdevices "${sysblock}")
do
return 1
}
-set_usplash_timeout ()
-{
- if [ -x /sbin/usplash_write ]
- then
- /sbin/usplash_write "TIMEOUT 120"
- else if [ -x /sbin/splashy_update ] ; then
- /sbin/splashy_update "TIMEOUT 120"
- fi ; fi
-}
-
integrity_check ()
{
media_mountpoint="${1}"
fi
}
-start_usplash_pulse ()
-{
- if [ -x /sbin/usplash_write ]
- then
- /sbin/usplash_write "PULSELOGO"
- fi
-}
-
mountroot ()
{
- if [ -x /scripts/local-top/cryptroot ]; then
+ if [ -x /scripts/local-top/cryptroot ]; then
/scripts/local-top/cryptroot
fi
exec 6>&1
exec 7>&2
- exec > live.log
+ exec > live-boot.log
exec 2>&1
- tail -f live.log >&7 &
+ tail -f live-boot.log >&7 &
tailpid="${!}"
# Ensure 'panic' function is overridden
Arguments
- set_usplash_timeout
- start_usplash_pulse
-
maybe_break live-premount
log_begin_msg "Running /scripts/live-premount"
run_scripts /scripts/live-premount
# Needed here too because some things (*cough* udev *cough*)
# changes the timeout
- set_usplash_timeout
-
if [ ! -z "${NETBOOT}" ] || [ ! -z "${FETCH}" ] || [ ! -z "${HTTPFS}" ] || [ ! -z "${FTPFS}" ]
then
if do_netmount
# when booting FAI, this simple workaround solves it
ls /root/* >/dev/null 2>&1
+ # copy snapshot configuration if exists
+ if [ -f snapshot.conf ]
+ then
+ log_begin_msg "Copying snapshot.conf to ${rootmnt}/etc/live/boot.d"
+ if [ ! -d "${rootmnt}/etc/live/boot.d" ]
+ then
+ mkdir -p "${rootmnt}/etc/live/boot.d"
+ fi
+ cp snapshot.conf "${rootmnt}/etc/live/boot.d/"
+ log_end_msg
+ fi
+
maybe_break live-bottom
log_begin_msg "Running /scripts/live-bottom\n"
exec 1>&6 6>&-
exec 2>&7 7>&-
kill ${tailpid}
- [ -w "${rootmnt}/var/log/" ] && cp live.log "${rootmnt}/var/log/" 2>/dev/null
+ [ -w "${rootmnt}/var/log/" ] && cp live-boot.log "${rootmnt}/var/log/" 2>/dev/null
}