NETWORK_=""
OPTIONS_=""
BOOT_ARGS_=""
+NAT_INTERFACE_="none"
###
IPRANGE_TO_="$IPRANGE_TO_"
OPTIONS_="$OPTIONS_"
BOOT_ARGS_="$BOOT_ARGS_"
+NAT_INTERFACE_="$NAT_INTERFACE_"
EOT
notice "config successfully safed to \"$CONF_FILE_\""
function actionMkInitrd
{
echo -n "Creating initrd $PATH_/minirt26.gz: "
- isExistent "$PATH_/minirt26.gz" && echo "$PATH_/minirt26.gz does already exist, skipping initrd creation" && return 0
+ isExistent "$PATH_/minirt26.gz" && echo && echo "$PATH_/minirt26.gz exists already, skipping initrd creation" && return 0
mkInitrd
echo done
}
# implanting my initrd changes into the original initrd
# copy programs, check if there are already links with this name to busybox
- for i in $USR_SHARE_/discover* $USR_SHARE_/udhcpc $USR_SHARE_/udhcp-config.sh $USR_SHARE_/cdir $USR_SHARE_/rdir /usr/bin/ldd ;do
+ for i in $USR_SHARE_/timeout $USR_SHARE_/discover* $USR_SHARE_/udhcpc $USR_SHARE_/udhcp-config.sh $USR_SHARE_/cdir $USR_SHARE_/rdir /usr/bin/ldd ;do
tmp_name_="${i##*/}"
isNotExistent "$INITRD_/static/$tmp_name_" eprint || execute "rm $INITRD_/static/$tmp_name_"
cp $i "$INITRD_/static/$tmp_name_"
isNotExistent $CARDS_DETECTED_BY_DISCOVER && awk '/ethernet/{print $3}' /lib/discover/pci.lst |sort |uniq > $CARDS_DETECTED_BY_DISCOVER
else # newer discover does not provide /lib/discover/pci.lst, get a list of all network drivers therefore
isNotExistent $CARDS_DETECTED_BY_DISCOVER && \
- # find *all* network drivers
- # find /lib/modules/`uname -r`/kernel/drivers/net/ -name \*.ko | sed 's#.*./## ; s#\.ko##' | sort | uniq > $CARDS_DETECTED_BY_DISCOVER
+ # find *all* network drivers, but do not include wlan/pcmcia/... related ones
+ # blacklist: proteon and depca as they seem to cause problems with udevsettle
+ find /lib/modules/${KERNEL_VERSION_}/kernel/drivers/net/ -name \*.ko | \
+ grep -v 'wireless\|wan\|hamradio\|wlan\|ppp\|irda\|pcmcia\|depca\|proteon' | \
+ sed 's#.*./## ; s#\.ko##' | sort | uniq > $CARDS_DETECTED_BY_DISCOVER
# find the ones supported by discover
- for mod in `grep "name'>.*</data>" /lib/discover/pci-device.xml | sed "s#.*name'>## ; s#</data>##" | sort -u`; do
- find /lib/modules/${KERNEL_VERSION_}/kernel/drivers/net -name ${mod}.ko | sed 's#.*./## ; s#\.ko##' >> $CARDS_DETECTED_BY_DISCOVER
- done
+ # for mod in `grep "name'>.*</data>" /lib/discover/pci-device.xml | sed "s#.*name'>## ; s#</data>##" | sort -u`; do
+ # find /lib/modules/${KERNEL_VERSION_}/kernel/drivers/net -name ${mod}.ko | sed 's#.*./## ; s#\.ko##' >> $CARDS_DETECTED_BY_DISCOVER
+ # done
fi
local modules="`cat $CARDS_DETECTED_BY_DISCOVER |xargs` af_packet"
# put everything into the new initrd
local tmp_size=`du -s $INITRD_ |awk '{print $1}'` # in kB
let tmp_size=$tmp_size+1000
- if (( $tmp_size >= 16000 )); then
- warn "Your initrd is $tmp_size kByte large => TOO BIG (should be <= 16000kB)"
+ local max_size=24000
+ if (( $tmp_size >= $max_size )); then
+ warn "Your initrd is $tmp_size kByte large => TOO BIG (should be <= ${max_size}kB)"
warn "Please remove a few modules from $CARDS_DETECTED_BY_DISCOVER or edit $INITRD_ manually"
return 1
fi
NAMESERVERS_=`netGetNameservers warn`
GW_=`netGetDefaultGateway warn`
+ GW_DEV_=`/sbin/ip route get "$GW_" | awk '{ print $3; exit; }'`
+ if [ "$GW_DEV_" != "$INTERFACE_" ] && [ "$GW_DEV_" != "" ]; then
+ # GW_DEV_ of server is not the same device as the one serviced by dhcpd
+ # so it doesn't make sense to provide the GW_ address to the clients
+ local do_nat_="YES"
+ local do_nat_title_="Network Address Translation"
+ local do_nat_message_="
+Do you want to set up NAT so that clients booting from this
+grml-terminalserver can use this machine also as gateway to
+the internet?"
+
+ $DIALOG_ --clear --backtitle "$BACK_TITLE_" --title "$do_nat_title_" --yesno "$do_nat_message_" 15 75 || \
+ do_nat_="NO"
+ if [ "$do_nat_" = "YES" ]; then
+ # user wants NAT, we give the clients the server address as
+ # gateway as well
+ GW_="$IP_"
+ NAT_INTERFACE_="$GW_DEV_"
+ else
+ # no NAT, no sensible gateway
+ GW_=
+ NAT_INTERFACE_="none"
+ fi
+ fi
# grub