Improved debian live initramfs image to work without modified run-init
authorPravin Shinde <pravin@black-perl.(none)>
Wed, 9 Sep 2009 16:36:43 +0000 (18:36 +0200)
committerPravin Shinde <pravin@black-perl.(none)>
Wed, 9 Sep 2009 16:36:43 +0000 (18:36 +0200)
also Improved the dns to wrok with dhcp
if dhcp fails then it falls to static file

D/D/DL/fdisk [deleted file]
D/D/DL/generate_initrd.sh
D/D/DL/iscsi/initiatorname.iscsi
D/D/DL/iscsi/iscsid.conf
D/D/DL/iscsi/tools/iscsi-iname [deleted file]
D/D/DL/iscsi/tools/iscsi_discovery [deleted file]
D/D/DL/iscsi/tools/iscsistart [deleted file]
D/D/DL/iscsi/tools/isosize [deleted file]
D/D/DL/live

diff --git a/D/D/DL/fdisk b/D/D/DL/fdisk
deleted file mode 100755 (executable)
index 19805a2..0000000
Binary files a/D/D/DL/fdisk and /dev/null differ
index cdbec7f..dc3414a 100755 (executable)
@@ -18,8 +18,8 @@ cd ..
 echo "coping the needed files..."
 
 
-cp run-init mpoint/bin/
-chmod 777 mpoint/bin/run-init
+#cp run-init mpoint/bin/
+#chmod 777 mpoint/bin/run-init
 
 echo "copying iscsi related files..."
 mkdir mpoint/etc/iscsi
@@ -38,8 +38,8 @@ chmod 777 mpoint/bin/httpfs
 cp httpfs/server/fusermount mpoint/bin/
 chmod 777 mpoint/bin/fusermount
 
-cp init mpoint/
-chmod 0777 mpoint/init 
+#cp init mpoint/
+#chmod 0777 mpoint/init 
 
 cp live mpoint/scripts/
 chmod 0777 mpoint/scripts/live
index a732d75..12e467c 100644 (file)
@@ -1,6 +1,2 @@
-## DO NOT EDIT OR REMOVE THIS FILE!
-## If you remove this file, the iSCSI daemon will not start.
-## If you change the InitiatorName, existing access control lists
-## may reject this initiator.  The InitiatorName must be unique
-## for each iSCSI initiator.  Do NOT duplicate iSCSI InitiatorNames.
+# It will be used when no name is provided at boot parameter
 InitiatorName=iqn.1993-08.org.debian:01:74e6bd2d995f
index 83200c2..9191f56 100644 (file)
-#
-# Open-iSCSI default configuration.
-# Could be located at /etc/iscsi/iscsid.conf or ~/.iscsid.conf
-#
-# Note: To set any of these values for a specific node/session run
-# the iscsiadm --mode node --op command for the value. See the README
-# and man page for iscsiadm for details on the --op command.
-#
-
-################
-# iSNS settings
-################
-# Address of iSNS server
-#isns.address = 192.168.0.1
-#isns.port = 3205
-
-#############################
-# NIC/HBA and driver settings
-#############################
-# open-iscsi can create a session and bind it to a NIC/HBA.
-# To set this up see the example iface config file.
-
-#*****************
-# Startup settings
-#*****************
-
-# To request that the iscsi initd scripts startup a session set to "automatic".
 node.startup = automatic
-#
-# To manually startup the session set to "manual". The default is manual.
-#node.startup = manual
-
-# *************
-# CHAP Settings
-# *************
-
-# To enable CHAP authentication set node.session.auth.authmethod
-# to CHAP. The default is None.
-#node.session.auth.authmethod = CHAP
-
-# To set a CHAP username and password for initiator
-# authentication by the target(s), uncomment the following lines:
-#node.session.auth.username = username
-#node.session.auth.password = password
-
-# To set a CHAP username and password for target(s)
-# authentication by the initiator, uncomment the following lines:
-#node.session.auth.username_in = username_in
-#node.session.auth.password_in = password_in
-
-# To enable CHAP authentication for a discovery session to the target
-# set discovery.sendtargets.auth.authmethod to CHAP. The default is None.
-#discovery.sendtargets.auth.authmethod = CHAP
-
-# To set a discovery session CHAP username and password for the initiator
-# authentication by the target(s), uncomment the following lines:
-#discovery.sendtargets.auth.username = username
-#discovery.sendtargets.auth.password = password
-
-# To set a discovery session CHAP username and password for target(s)
-# authentication by the initiator, uncomment the following lines:
-#discovery.sendtargets.auth.username_in = username_in
-#discovery.sendtargets.auth.password_in = password_in
-
-# ********
-# Timeouts
-# ********
-#
-# See the iSCSI REAME's Advanced Configuration section for tips
-# on setting timeouts when using multipath or doing root over iSCSI.
-#
-# To specify the length of time to wait for session re-establishment
-# before failing SCSI commands back to the application when running
-# the Linux SCSI Layer error handler, edit the line.
-# The value is in seconds and the default is 120 seconds.
 node.session.timeo.replacement_timeout = 120
-
-# To specify the time to wait for login to complete, edit the line.
-# The value is in seconds and the default is 15 seconds.
 node.conn[0].timeo.login_timeout = 15
-
-# To specify the time to wait for logout to complete, edit the line.
-# The value is in seconds and the default is 15 seconds.
 node.conn[0].timeo.logout_timeout = 15
-
-# Time interval to wait for on connection before sending a ping.
 node.conn[0].timeo.noop_out_interval = 5
-
-# To specify the time to wait for a Nop-out response before failing
-# the connection, edit this line. Failing the connection will
-# cause IO to be failed back to the SCSI layer. If using dm-multipath
-# this will cause the IO to be failed to the multipath layer.
 node.conn[0].timeo.noop_out_timeout = 5
-
-# To specify the time to wait for abort response before
-# failing the operation and trying a logical unit reset edit the line.
-# The value is in seconds and the default is 15 seconds.
 node.session.err_timeo.abort_timeout = 15
-
-# To specify the time to wait for a logical unit response
-# before failing the operation and trying session re-establishment
-# edit the line.
-# The value is in seconds and the default is 30 seconds.
 node.session.err_timeo.lu_reset_timeout = 20
-
-#******
-# Retry
-#******
-
-# To specify the number of times iscsid should retry a login
-# if the login attempt fails due to the node.conn[0].timeo.login_timeout
-# expiring modify the following line. Note that if the login fails
-# quickly (before node.conn[0].timeo.login_timeout fires) because the network
-# layer or the target returns an error, iscsid may retry the login more than
-# node.session.initial_login_retry_max times.
-#
-# This retry count along with node.conn[0].timeo.login_timeout
-# determines the maximum amount of time iscsid will try to
-# establish the initial login. node.session.initial_login_retry_max is
-# multiplied by the node.conn[0].timeo.login_timeout to determine the
-# maximum amount.
-#
-# The default node.session.initial_login_retry_max is 8 and
-# node.conn[0].timeo.login_timeout is 15 so we have:
-#
-# node.conn[0].timeo.login_timeout * node.session.initial_login_retry_max =
-#                                                              120 seconds
-#
-# Valid values are any integer value. This only
-# affects the initial login. Setting it to a high value can slow
-# down the iscsi service startup. Setting it to a low value can
-# cause a session to not get logged into, if there are distuptions
-# during startup or if the network is not ready at that time.
 node.session.initial_login_retry_max = 8
-
-################################
-# session and device queue depth
-################################
-
-# To control how many commands the session will queue set
-# node.session.cmds_max to an integer between 2 and 2048 that is also
-# a power of 2. The default is 128.
 node.session.cmds_max = 128
-
-# To control the device's queue depth set node.session.queue_depth
-# to a value between 1 and 128. The default is 32.
 node.session.queue_depth = 32
-
-#***************
-# iSCSI settings
-#***************
-
-# To enable R2T flow control (i.e., the initiator must wait for an R2T
-# command before sending any data), uncomment the following line:
-#
-#node.session.iscsi.InitialR2T = Yes
-#
-# To disable R2T flow control (i.e., the initiator has an implied
-# initial R2T of "FirstBurstLength" at offset 0), uncomment the following line:
-#
-# The defaults is No.
 node.session.iscsi.InitialR2T = No
-
-#
-# To disable immediate data (i.e., the initiator does not send
-# unsolicited data with the iSCSI command PDU), uncomment the following line:
-#
-#node.session.iscsi.ImmediateData = No
-#
-# To enable immediate data (i.e., the initiator sends unsolicited data
-# with the iSCSI command packet), uncomment the following line:
-#
-# The default is Yes
 node.session.iscsi.ImmediateData = Yes
-
-# To specify the maximum number of unsolicited data bytes the initiator
-# can send in an iSCSI PDU to a target, edit the following line.
-#
-# The value is the number of bytes in the range of 512 to (2^24-1) and
-# the default is 262144
 node.session.iscsi.FirstBurstLength = 262144
-
-# To specify the maximum SCSI payload that the initiator will negotiate
-# with the target for, edit the following line.
-#
-# The value is the number of bytes in the range of 512 to (2^24-1) and
-# the defauls it 16776192
 node.session.iscsi.MaxBurstLength = 16776192
-
-# To specify the maximum number of data bytes the initiator can receive
-# in an iSCSI PDU from a target, edit the following line.
-#
-# The value is the number of bytes in the range of 512 to (2^24-1) and
-# the default is 131072
 node.conn[0].iscsi.MaxRecvDataSegmentLength = 131072
-
-
-# To specify the maximum number of data bytes the initiator can receive
-# in an iSCSI PDU from a target during a discovery session, edit the
-# following line.
-#
-# The value is the number of bytes in the range of 512 to (2^24-1) and
-# the default is 32768
-# 
 discovery.sendtargets.iscsi.MaxRecvDataSegmentLength = 32768
-
-# To allow the targets to control the setting of the digest checking,
-# with the initiator requesting a preference of enabling the checking, uncomment# one or both of the following lines:
-#node.conn[0].iscsi.HeaderDigest = CRC32C,None
-#node.conn[0].iscsi.DataDigest = CRC32C,None
-#
-# To allow the targets to control the setting of the digest checking,
-# with the initiator requesting a preference of disabling the checking,
-# uncomment one or both of the following lines:
-#node.conn[0].iscsi.HeaderDigest = None,CRC32C
-#node.conn[0].iscsi.DataDigest = None,CRC32C
-#
-# To enable CRC32C digest checking for the header and/or data part of
-# iSCSI PDUs, uncomment one or both of the following lines:
-#node.conn[0].iscsi.HeaderDigest = CRC32C
-#node.conn[0].iscsi.DataDigest = CRC32C
-#
-# To disable digest checking for the header and/or data part of
-# iSCSI PDUs, uncomment one or both of the following lines:
-#node.conn[0].iscsi.HeaderDigest = None
-#node.conn[0].iscsi.DataDigest = None
-#
-# The default is to never use DataDigests or HeaderDigests.
-#
-
-
-#************
-# Workarounds
-#************
-
-# Some targets like IET prefer after an initiator has sent a task
-# management function like an ABORT TASK or LOGICAL UNIT RESET, that
-# it does not respond to PDUs like R2Ts. To enable this behavior uncomment
-# the following line (The default behavior is Yes):
 node.session.iscsi.FastAbort = Yes
-
-# Some targets like Equalogic prefer that after an initiator has sent
-# a task management function like an ABORT TASK or LOGICAL UNIT RESET, that
-# it continue to respond to R2Ts. To enable this uncomment this line
-# node.session.iscsi.FastAbort = No
diff --git a/D/D/DL/iscsi/tools/iscsi-iname b/D/D/DL/iscsi/tools/iscsi-iname
deleted file mode 100755 (executable)
index 8afc1ba..0000000
Binary files a/D/D/DL/iscsi/tools/iscsi-iname and /dev/null differ
diff --git a/D/D/DL/iscsi/tools/iscsi_discovery b/D/D/DL/iscsi/tools/iscsi_discovery
deleted file mode 100755 (executable)
index 398a6e8..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) Voltaire Ltd. 2006.  ALL RIGHTS RESERVED.
-#
-# 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., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA
-#
-# Author: Dan Bar Dov <danb@voltaire.com>
-
-# iscsi_discovery:
-#    * does a send-targets discovery to the given IP
-#    * set the transport type to the preferred transport (or tcp is -t flag is not used)
-#    * tries to login
-#    * if succeeds,
-#          o logout,
-#          o mark record autmatic (unless -m flag is used)
-#    * else
-#          o reset transport type to TCP
-#          o try to login
-#          o if succeeded
-#                + logout
-#                + mark record automatic (unless -m flag is used)
-#
-
-usage()
-{
-       echo "Usage: $0 <IP> [-p <port>] [-d] [-t <tcp|iser> [-f]] [-m] [-l]"
-       echo "Options:"
-       echo  "-p               set the port number (defualt is 3260)."
-       echo  "-d               print debugging information"
-       echo  "-t               set trasnpot (default is tcp)."
-       echo  "-f               force specific transport -disable the fallback to tcp (default is fallback enabled)."
-       echo  "                 force the transport specified by the argument of the -t flag."
-       echo  "-m               manual startup - will set manual startup (default is automatic startup)."
-       echo  "-l               login to the new discovered nodes (defualt is false)."
-}
-
-dbg()
-{
-       $debug && echo $@
-}
-
-initialize()
-{
-       trap "exit" 2
-       debug=false
-       force="0"
-       log_out="1"
-       startup_manual="0"
-       #set defualt transport to tcp
-       transport=tcp
-       #set defualt port to 3260
-       port=3260;
-}
-
-parse_cmdline()
-{
-       if [ $# -lt 1 ]; then
-               usage
-               exit 1
-       fi
-
-       # check if the IP address is valid
-       ip=`echo $1 | awk -F'.' '$1 != "" && $1 <=255 && $2 != "" && $2 <= 255 && $3 != "" && $3 <= 255 && $4 != "" && $4 <= 255 {print $0}'`
-       if [ -z "$ip" ]; then
-               echo "$1 is not a vaild IP address!"
-               exit 1
-       fi
-       shift
-       while getopts "dfmlt:p:" options; do
-        case $options in
-               d ) debug=true;;
-               f ) force="1";;
-               t ) transport=$OPTARG;;
-               p ) port=$OPTARG;;
-               m ) startup_manual="1";;
-               l ) log_out=0;;
-               \? ) usage
-                       exit 1;;
-               * )  usage
-                       exit 1;;
-        esac
-       done
-}
-
-discover()
-{
-       # If open-iscsi is already logged in to the portal, exit
-       if [ $(iscsiadm -m session | grep -c ${ip}:${port}) -ne 0 ]; then
-               echo "Please logout from all targets on ${ip}:${port} before trying to run discovery on that portal"
-               exit 2
-       fi
-
-       connected=0
-       discovered=0
-       df=/tmp/discovered.$$
-
-       dbg "starting discovery to $ip"
-       iscsiadm -m discovery --type sendtargets --portal ${ip}:${port} > ${df}
-       while read portal target
-       do
-               portal=${portal%,*}
-               select_transport
-       done < ${df}
-
-       discovered=$(cat ${df} | wc -l)
-       if [ ${discovered} = 0 ]; then
-               echo "failed to discover targets at ${ip}"
-               exit 2
-       else
-               echo "discovered ${discovered} targets at ${ip}"
-       fi
-       /bin/rm -f ${df}
-}
-
-try_login()
-{
-       if [ "$startup_manual" != "1" ]; then
-               iscsiadm -m node --targetname ${target} --portal ${portal} --op update -n node.conn[0].startup -v automatic
-       fi
-       iscsiadm -m node --targetname ${target} --portal ${portal} --login >/dev/null 2>&1
-       ret=$?
-       if [ ${ret} = 0 ]; then
-               echo "Set target ${target} to automatic login over ${transport} to portal ${portal}"
-               connected=$(($connected + 1))
-               if [ "$log_out" = "1" ]; then
-                       iscsiadm -m node --targetname ${target} --portal ${portal} --logout
-               fi
-       else
-               echo "Cannot login over ${transport} to portal ${portal}"
-               iscsiadm -m node --targetname ${target} --portal ${portal} --op update -n node.conn[0].startup -v manual
-       fi
-       return ${ret}
-}
-
-set_transport()
-{
-       transport=$1
-       if [ "$transport" == "iser" ];then
-               iscsiadm -m node --targetname ${target} --portal ${portal} \
-                               --op update -n node.conn[0].iscsi.HeaderDigest -v None
-               iscsiadm -m node --targetname ${target} --portal ${portal} \
-                               --op update -n node.conn[0].iscsi.DataDigest -v None
-       fi
-       transport_name=`iscsiadm  -m node -p ${portal} -T ${target} |awk '/transport_name/ {print $1}'`
-       iscsiadm -m node --targetname ${target} --portal ${portal} \
-                       --op update -n ${transport_name} -v ${transport}
-}
-
-select_transport()
-{
-       set_transport $transport
-       dbg "Testing $transport-login to target ${target} portal ${portal}"
-       try_login;
-       if [ $? != 0 -a  "$force" = "0" ]; then
-               set_transport tcp
-               dbg "starting to test tcp-login to target ${target} portal ${portal}"
-               try_login;
-       fi
-}
-
-check_iscsid()
-{
-       #check if iscsid is running
-       pidof iscsid &>/dev/null
-       ret=$?
-       if [ $ret -ne 0 ]; then
-               echo "iscsid is not running"
-               echo "Exiting..."
-               exit 1
-       fi
-}
-
-check_iscsid
-initialize
-parse_cmdline "$@"
-discover
diff --git a/D/D/DL/iscsi/tools/iscsistart b/D/D/DL/iscsi/tools/iscsistart
deleted file mode 100755 (executable)
index da5ca2d..0000000
Binary files a/D/D/DL/iscsi/tools/iscsistart and /dev/null differ
diff --git a/D/D/DL/iscsi/tools/isosize b/D/D/DL/iscsi/tools/isosize
deleted file mode 100755 (executable)
index ae09dcc..0000000
Binary files a/D/D/DL/iscsi/tools/isosize and /dev/null differ
index f9362a0..8c8a538 100755 (executable)
@@ -8,6 +8,7 @@ echo "/root/lib" >> /etc/ld.so.conf
 echo "/root/usr/lib" >> /etc/ld.so.conf
 
 mountpoint="/live/image"
+ext_mountpoint="/ext_volume"
 LIVE_MEDIA_PATH="live"
 
 root_persistence="live-rw"
@@ -708,12 +709,18 @@ copy_live_to ()
        return 0
 }
 
+add_ip_to_resolv_conf ()
+{
+       if [ ! -z ${1} ]
+       then
+               echo "nameserver $1" >> /etc/resolv.conf
+       fi
+}
+
 do_netmount ()
 {
        rc=1
 
-echo "nameserver 4.2.2.2
-nameserver 128.255.1.3" > /etc/resolv.conf
 
        modprobe -q af_packet # For DHCP
 
@@ -729,6 +736,16 @@ nameserver 128.255.1.3" > /etc/resolv.conf
        fi
 
        ipconfig ${DEVICE} | tee /netboot.config
+       
+       # Adding DNS Entry
+       local ipconf_dnsip=`cat /netboot.config | grep dns0 | cut -d':' -f3 | cut -d' ' -f2`
+       if [ -z ${ipconf_dnsip}] || [ ${ipconf_dnsip} == '0.0.0.0']
+       then
+               add_ip_to_resolv_conf "4.2.2.2" 
+               add_ip_to_resolv_conf "128.255.1.3" 
+       else
+               add_ip_to_resolv_conf ${ipconf_dnsip}
+       fi
 
        # source relevant ipconfig output
        OLDHOSTNAME=${HOSTNAME}
@@ -746,7 +763,6 @@ nameserver 128.255.1.3" > /etc/resolv.conf
        fi
 
 
-
        if [ "${NFSROOT}" = "auto" ]
        then
                NFSROOT=${ROOTSERVER}:${ROOTPATH}
@@ -800,8 +816,6 @@ do_iscsimount ()
        dest="${mountpoint}/${LIVE_MEDIA_PATH}"
        mount -t ramfs ram "${mountpoint}"
        mkdir -p "${dest}"
-
-    echo "inside iscsimount" 
             
     insmod /modules/libcrc32c.ko
     insmod /modules/crc32c.ko
@@ -814,67 +828,58 @@ do_iscsimount ()
     sleep 4
     targetname=`iscsiadm -m node | grep "${TARGET}" | cut -d' ' -f2`
     iscsiadm -m node --targetname "${targetname}" --portal "${ISCSIFS}" --login
-#    dmesg > /messages
-    sync
-       i=0
-#   iscsiadm -m session -P 3 | grep "attached scsi disk"
-#    export iscsidevice="/dev/disk/by-id/scsi-1494554000000000000000000010000000500c9000000d00f"
     export iscsidevice=/dev/disk/by-label/Debian\\x20lenny\\x2020090614-09\:11 
-       while [ "$i" -lt 160 ]
-       do
-        ls -l "${iscsidevice}" && break
-               i="$(($i + 1))"
-        echo "waiting for iscsi disk to appear $i"
-               sleep 1
-        sync
-       done
-#   export iscsidevice=`fdisk -l 2> /dev/null | grep "724 MB" | cut -d' ' -f2 | cut -d':' -f1`
-   mount -t iso9660 "${iscsidevice}" "${mountpoint}"
+    wait_for_device ${iscsidevice} 160
+    mount -t iso9660 "${iscsidevice}" "${mountpoint}"
     rc=${?}
     sync
     sleep 2
-    rc=0
+#    rc=0
     return $rc
 }
 
+# waits for $2 seconds to devie/file to appear on given path ($1)
+wait_for_device ()
+{
+       local device_path=${1}
+       local max_seconds=${2}
+       local i=0
+       while [ "$i" -lt ${max_seconds} ]
+       do
+        ls -l "${device_path}" && return 0 
+               i="$(($i + 1))"
+               echo "waiting for ${device_path} to appear $i"
+               sleep 1
+               sync
+       done
+       echo "Device did not appeared..."
+       return 1
+}
+
 do_httpmount ()
 {
        rc=1
-       dest="${mountpoint}/${LIVE_MEDIA_PATH}"
-       mount -t ramfs ram "${mountpoint}"
-       mkdir -p "${dest}"
 
-    echo "inside httpmount" 
        for webfile in HTTPFS FTPFS FETCH
        do
-               url="$(eval echo \"\$\{${webfile}\}\")"
-               extension="$(echo "${url}" | sed 's/\(.*\)\.\(.*\)/\2/')"
-
-        if [ "${extension}" = "iso" ] 
-        then
-            echo "Mounting iso"
-                       modprobe fuse
-            modprobe loop
-            mknod "${rootmnt}/dev/loop0" b 7 0
-               mkdir -p "${rootmnt}/iso"
-            echo "trying httpfs with ${url} and ${mountpoint}"
-                       httpfs "${url}" "${rootmnt}/iso" 
-               FILEPATH=`ls "${rootmnt}"/iso/*.iso`
-               echo  "File path is $FILEPATH" 
-               losetup "${rootmnt}/dev/loop0" $FILEPATH
-               mount -t iso9660 $FILEPATH "${mountpoint}" -o loop -o ro
-            rc=${?}
-            return $rc
-        else
-            echo "not BKO http mount, proceding in normal way"
-        fi
-
-        echo "webfile is $webfile and url is $url" 
-        echo "webfile is $webfile and url is $url" >> /mylogs
+               local url="$(eval echo \"\$\{${webfile}\}\")"
+               local extension="$(echo "${url}" | sed 's/\(.*\)\.\(.*\)/\2/')"
+
                if [ -n "$url" ]
                then
                        case "${extension}" in
-                               squashfs|tgz|tar)
+                               iso|squashfs|tgz|tar)
+                                       if [ "${extension}" = "iso" ]
+                                       then
+                                               mkdir -p "${ext_mountpoint}"
+                                               dest="${ext_mountpoint}"
+                                       else
+                                               local dest="${mountpoint}/${LIVE_MEDIA_PATH}"
+                                               mount -t ramfs ram "${mountpoint}"
+                                               mkdir -p "${dest}"
+                                       fi
+
+
                                        if [ "${webfile}" = "FETCH" ]
                                        then
                                                case "$url" in
@@ -891,21 +896,26 @@ do_httpmount ()
                                                esac
                                        else
                                                log_begin_msg "Trying to mount ${url} on ${dest}/$(basename ${url})"
+                                               modprobe fuse
+                                               wait_for_device /dev/fuse 160
                                                if [ "${webfile}" = "FTPFS" ]
                                                then
                                                        FUSE_MOUNT="curlftpfs"
                                                        url="$(dirname ${url})"
                                                else
                                                        FUSE_MOUNT="httpfs"
+                                                       httpfs ${url} ${dest}
                                                fi
-                                               modprobe fuse
-                        echo "trying $FUSE_MOUNT with ${url} and ${dest}"
-                        sleep 2
-                                               $FUSE_MOUNT "${url}" "${dest}"
-                        echo "mount done "
                                        fi
                                        [ ${?} -eq 0 ] && rc=0
                                        [ "${extension}" = "tgz" ] && live_dest="ram"
+                                       if [ "${extension}" = "iso" ]
+                                       then
+                                               isoloop=$(setup_loop "${dest}/$(basename "${url}")" "loop" "/sys/block/loop*" "" '')
+                                               mount -t iso9660 "${isoloop}" "${mountpoint}"
+                                               rc=${?}
+                                       fi
+
                                        break
                                        ;;
 
@@ -920,8 +930,8 @@ do_httpmount ()
        then
            umount "${mountpoint}"
        fi
-
-       return ${rc}
+       return 0
+#      return ${rc}
 }
 
 do_nfsmount ()