version1.0.1 #383 tiempos deteccion iface boot-tools

git-svn-id: https://opengnsys.es/svn/branches/version1.0@2006 a21b9725-9963-47de-94b9-378ad31fedc9
remotes/github/master
Antonio Doblas Viso 2011-05-20 14:24:17 +00:00
parent fc31a8e99f
commit 067aa23175
2 changed files with 82 additions and 71 deletions

View File

@ -43,6 +43,8 @@ mkdir -p ${DESTDIR}/boot;
copy_exec /bin/bash-static /bin/bash
copy_exec /usr/bin/unionfs-fuse
copy_exec /sbin/mount.cifs
copy_exec /sbin/mount.smbfs
copy_exec /bin/lsmod
# Insert OpenGnsys Engine
@ -54,5 +56,7 @@ manual_add_modules cifs
manual_add_modules smbfs
manual_add_modules atl1e
manual_add_modules squashfs
manual_add_modules md4

View File

@ -241,76 +241,83 @@ ifconfig lo 127.0.0.1
ogconfigure_networking()
{
IP=$IPOPTS
# http://paste.ubuntu.com/427631/ Paste from yofel at Tue, 4 May 2010 13:49:56 +0000
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="$x:$bootif_mac"
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
#Buscando interfaz a configurar DEVICE
#BOOTIF lo exporte el pxelinux.0. con valor tipo 01-$mac_address
if [ -n "${BOOTIF}" ]
then
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="$x:$bootif_mac"
fi
# networking already configured thus bail out
[ -n "${DEVICE}" ] && [ -e /tmp/net-"${DEVICE}".conf ] && return 0
# support ip options see linux sources
# Documentation/filesystems/nfsroot.txt
# Documentation/frv/booting.txt
for ROUNDTTT in 2 3 4 6 9 16 25 36 64 100; do
# The NIC is to be configured if this file does not exist.
# Ip-Config tries to create this file and when it succeds
# creating the file, ipconfig is not run again.
if [ -e /tmp/net-"${DEVICE}".conf ]; then
break;
fi
case ${IP} in
none|off)
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
else
# Si no bootif, intentamos buscar que interfaz se ha iniciado.
IP=$ip
#TODO Detectar que interfaz se ha iniciado
case ${IP} in
none|off)
# Do nothing
;;
""|on|any)
# Bring up device
DEVICE=eth0
;;
dhcp|bootp|rarp|both)
DEVICE=eth0
;;
*)
DEVICE=`echo $IP | cut -f6 -d:`
;;
esac
fi
# FIN de Busqueda de la interfaz $DEVICE
# networking already configured thus bail out
[ -n "${DEVICE}" ] && [ -e /tmp/net-"${DEVICE}".conf ] && return 0
# support ip options see linux sources
# Documentation/filesystems/nfsroot.txt
# Documentation/frv/booting.txt
for ROUNDTTT in 2 3 4 6 9 16 25 36 64 100; do
# The NIC is to be configured if this file does not exist.
# Ip-Config tries to create this file and when it succeds
# creating the file, ipconfig is not run again.
if [ -e /tmp/net-"${DEVICE}".conf ]; then
break;
fi
case ${IP} in
none|off)
# Do nothing
;;
""|on|any)
;;
""|on|any)
# Bring up device
echo "Setting $DEVICE with kernel params $IP: ipconfig -t ${ROUNDTTT} ${DEVICE} "
ipconfig -t ${ROUNDTTT} ${DEVICE}
;;
dhcp|bootp|rarp|both)
;;
dhcp|bootp|rarp|both)
echo "Setting $DEVICE with (dhcp) kernel params $IP: ipconfig -t ${ROUNDTTT} -c ${IP} -d ${DEVICE} "
ipconfig -t ${ROUNDTTT} -c ${IP} -d ${DEVICE}
;;
*)
;;
*)
echo "Setting $DEVICE with kernel params $IP: ipconfig -t ${ROUNDTTT} -d $IP "
ipconfig -t ${ROUNDTTT} -d $IP
# grab device entry from ip option
NEW_DEVICE=${IP#*:*:*:*:*:*}
if [ "${NEW_DEVICE}" != "${IP}" ]; then
@ -322,18 +329,18 @@ IP=$IPOPTS
if [ -n "${NEW_DEVICE}" ]; then
DEVICE="${NEW_DEVICE}"
fi
;;
esac
done
;;
esac
done
# source ipconfig output
if [ -n "${DEVICE}" ]; then
# source specific bootdevice
. /tmp/net-${DEVICE}.conf
else
# source any interface as not exaclty specified
. /tmp/net-*.conf
fi
# source ipconfig output
if [ -n "${DEVICE}" ]; then
# source specific bootdevice
. /tmp/net-${DEVICE}.conf
else
# source any interface as not exaclty specified
. /tmp/net-*.conf
fi
}
#####################################################################