X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=scripts%2Flive;h=412094aee2b4990b231e064e71da8d423ed4abee;hb=ed0ef79a722eff0140c5521b63e80283054e416e;hp=e93570f60da7f6ca4cbbaa4c449b47a853476c06;hpb=f4831729f3a5ba8bc36519c513e41a75da1ef817;p=live-boot-grml.git diff --git a/scripts/live b/scripts/live index e93570f..412094a 100755 --- a/scripts/live +++ b/scripts/live @@ -34,9 +34,6 @@ then touch /etc/mtab fi -[ -f /etc/live.conf ] && . /etc/live.conf -export USERNAME USERFULLNAME HOSTNAME - . /scripts/live-helpers if [ ! -f /live.vars ] @@ -54,18 +51,11 @@ Arguments () case "${ARGUMENT}" in skipconfig) NOACCESSIBILITY="Yes" - NOAPTCDROM="Yes" - NOAUTOLOGIN="Yes" - NOCONSOLEKEYBOARD="Yes" NOFASTBOOT="Yes" NOFSTAB="Yes" - NOHOSTS="Yes" NONETWORKING="Yes" - NOTIMEZONE="Yes" - NOXAUTOCONFIG="Yes" - NOXAUTOLOGIN="Yes" - export NOACCESSIBILITY NOAPTCDROM NOAUTOLOGIN NOCONSOLEKEYBOARD NOFASTBOOT NOFSTAB NOHOSTS NONETWORKING NOTIMEZONE NOXAUTOCONFIG NOXAUTOLOGIN + export NOACCESSIBILITY NOFASTBOOT NOFSTAB NONETWORKING ;; access=*) @@ -85,6 +75,17 @@ Arguments () 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=}" export DEVICE @@ -118,6 +119,19 @@ Arguments () 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=*) @@ -125,18 +139,6 @@ Arguments () export FROMISO ;; - username=*) - USERNAME="${ARGUMENT#username=}" - LIVECONF="changed" - export USERNAME LIVECONF - ;; - - userfullname=*) - USERFULLNAME="${ARGUMENT#userfullname=}" - LIVECONF="changed" - export USERFULLNAME LIVECONF - ;; - ignore_uuid) IGNORE_UUID="Yes" export IGNORE_UUID @@ -158,31 +160,6 @@ Arguments () export STATICIP ;; - keyb=*|kbd-chooser/method=*) - KBD="${ARGUMENT#*=}" - export KBD - ;; - - klayout=*|console-setup/layoutcode=*) - KLAYOUT="${ARGUMENT#*=}" - export KLAYOUT - ;; - - kvariant=*|console-setup/variantcode=*) - KVARIANT="${ARGUMENT#*=}" - export KVARIANT - ;; - - kmodel=*|console-setup/modelcode=*) - KMODEL="${ARGUMENT#*=}" - export KMODEL - ;; - - koptions=*) - KOPTIONS="${ARGUMENT#koptions=}" - export KOPTIONS - ;; - live-getty) LIVE_GETTY="1" export LIVE_GETTY @@ -238,26 +215,6 @@ Arguments () export NOACCESSIBILITY ;; - noaptcdrom) - NOAPTCDROM="Yes" - export NOAPTCDROM - ;; - - noautologin) - NOAUTOLOGIN="Yes" - export NOAUTOLOGIN - ;; - - noxautologin) - NOXAUTOLOGIN="Yes" - export NOXAUTOLOGIN - ;; - - noconsolekeyboard) - NOCONSOLEKEYBOARD="Yes" - export NOCONSOLEKEYBOARD - ;; - nofastboot) NOFASTBOOT="Yes" export NOFASTBOOT @@ -268,11 +225,6 @@ Arguments () export NOFSTAB ;; - nohosts) - NOHOSTS="Yes" - export NOHOSTS - ;; - nonetworking) NONETWORKING="Yes" export NONETWORKING @@ -283,16 +235,6 @@ Arguments () export SWAPON ;; - noxautoconfig) - NOXAUTOCONFIG="Yes" - export NOXAUTOCONFIG - ;; - - noxscreensaver) - NOXSCREENSAVER="Yes" - export NOXSCREENSAVER - ;; - persistent) PERSISTENT="Yes" export PERSISTENT @@ -339,25 +281,6 @@ Arguments () export NOPRESEED ;; - url=*) - URL_LOCATION="${ARGUMENT#url=}" - - mount -o bind /sys /root/sys - mount -o bind /proc /root/proc - mount -o bind /dev /root/dev - - mkdir -p /root/var/run/network - [ "${NETBOOT}" ] || chroot /root dhclient eth0 - chroot /root wget -P /tmp "${URL_LOCATION}" - [ "${NETBOOT}" ] || chroot /root ifconfig eth0 down - - umount /root/sys - umount /root/proc - umount /root/dev - - LOCATIONS="/tmp/$(basename ${URL_LOCATION}) ${LOCATIONS}" - ;; - */*=*) question="${ARGUMENT%%=*}" value="${ARGUMENT#*=}" @@ -375,21 +298,6 @@ Arguments () export SILENT ;; - textonly) - TEXTONLY="Yes" - export TEXTONLY - ;; - - timezone=*) - TIMEZONE="${ARGUMENT#timezone=}" - export TIMEZONE - ;; - - notimezone) - NOTIMEZONE="Yes" - export NOTIMEZONE - ;; - todisk=*) TODISK="${ARGUMENT#todisk=}" export TODISK @@ -430,21 +338,6 @@ Arguments () UNIONTYPE="${ARGUMENT#union=}" export UNIONTYPE ;; - - xdebconf) - XDEBCONF="Yes" - export XDEBCONF - ;; - - xdriver=*) - XDRIVER="${ARGUMENT#xdriver=}" - export XDRIVER - ;; - - xvideomode=*) - XVIDEOMODE="${ARGUMENT#xvideomode=}" - export XVIDEOMODE - ;; esac done @@ -681,7 +574,7 @@ copy_live_to () return 0 } -do_netmount () +do_netsetup () { modprobe -q af_packet # For DHCP @@ -745,6 +638,11 @@ do_netmount () [ -z ${HOSTNAME} ] && HOSTNAME=${OLDHOSTNAME} export HOSTNAME + if [ -n "${DEVICE}" ] + then + HWADDR="$(cat /sys/class/net/${DEVICE}/address)" + fi + # 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 && \ @@ -754,6 +652,11 @@ do_netmount () then panic "No supported network device found, maybe a non-mainline driver is required." fi +} + +do_netmount() +{ + do_netsetup if [ "${NFSROOT}" = "auto" ] then @@ -789,6 +692,54 @@ do_netmount () return ${rc} } +do_iscsi() +{ + do_netsetup + #modprobe ib_iser + modprobe iscsi_tcp + local debugopt="" + [ "${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 + if [ -n "${ISCSI_SERVER}" ] ; then + iscsistart $debugopt -i "${ISCSI_INITIATORNAME}" -t "${ISCSI_TARGET}" -g 1 -a "${ISCSI_SERVER}" -p "${ISCSI_PORT}" + else + iscsistart $debugopt -i "${ISCSI_INITIATORNAME}" -t "${ISCSI_TARGET}" -g 1 -a "${ISCSI_PORTAL}" -p 3260 + fi + if [ $? != 0 ] + then + panic "Failed to log into iscsi target" + fi + local host="$(ls -d /sys/class/scsi_host/host*/device/iscsi_host:host* \ + /sys/class/scsi_host/host*/device/iscsi_host/host* | sed -e 's:/device.*::' -e 's:.*host::')" + if [ -n "${host}" ] + then + local devices="" + local i=0 + while [ -z "${devices}" -a $i -lt 60 ] + do + sleep 1 + devices="$(ls -d /sys/class/scsi_device/${host}*/device/block:* \ + /sys/class/scsi_device/${host}*/device/block/* | sed -e 's!.*[:/]!!')" + i=$(expr $i + 1) + echo -ne $i\\r + done + for dev in $devices + do + if check_dev "null" "/dev/$dev" + then + NETBOOT="iscsi" + export NETBOOT + return 0; + fi + done + panic "Failed to locate a live device on iSCSI devices (tried: $devices)." + else + panic "Failed to locate iSCSI host in /sys" + fi +} + do_httpmount () { rc=1 @@ -838,6 +789,7 @@ do_httpmount () fi modprobe fuse $FUSE_MOUNT "${url}" "${dest}" + FUSE_PID="$(minips h -C "$FUSE_MOUNT" | { read x y ; echo "$x" ; } )" fi [ ${?} -eq 0 ] && rc=0 [ "${extension}" = "tgz" ] && live_dest="ram" @@ -868,6 +820,9 @@ do_httpmount () elif [ "${webfile}" != "FETCH" ] ; then NETBOOT="${webfile}" export NETBOOT + if [ -n "${FUSE_PID}" ] ; then + echo "${FUSE_PID}" > ${mountpoint}/root.pid + fi fi return ${rc} @@ -1741,7 +1696,10 @@ mountroot () panic "Unable to find a live file system on the network" fi else - if [ -n "${PLAIN_ROOT}" ] && [ -n "${ROOT}" ] + if [ -n "${ISCSI_PORTAL}" ] + then + do_iscsi && livefs_root="${mountpoint}" + elif [ -n "${PLAIN_ROOT}" ] && [ -n "${ROOT}" ] then # Do a local boot from hd livefs_root=${ROOT} @@ -1837,8 +1795,4 @@ mountroot () exec 2>&7 7>&- kill ${tailpid} [ -w "${rootmnt}/var/log/" ] && cp live.log "${rootmnt}/var/log/" 2>/dev/null - if [ -f /etc/live.conf ] - then - cp /etc/live.conf "${rootmnt}/etc/" - fi }