NETWORK_=""
OPTIONS_=""
BOOT_ARGS_=""
+NAT_INTERFACE_=""
###
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 "Creating initrd: $PATH_/minirt26.gz"
- isExistent "$PATH_/minirt26.gz" && echo "$PATH_/minirt26.gz does already exist, skipping initrd creation" && return 0
+ echo -n "Creating initrd $PATH_/minirt26.gz: "
+ isExistent "$PATH_/minirt26.gz" && echo && echo "$PATH_/minirt26.gz exists already, skipping initrd creation" && return 0
mkInitrd
- echo 'done'
+ echo done
}
function mkInitrd
# 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/`uname -r`/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/2.6.18-grml/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"
local modules_dep=""
- # get paths of modules + paths of all dependet modules
+ # get paths of modules + paths of all dependent modules
echo -n "" >"$TMP_"
for i in $modules; do
tmp_=`awk -F: '{if($1~/'"$i".ko'/) {print $0}}' $MODULES_PATH_/$KERNEL_VERSION_/modules.dep`
echo "${tmp_%%:*}"
# FIXME ugly sed hack :(
- echo "${tmp_#*:}" |xargs -n1 echo |sed 's/://'
+ echo "${tmp_#*:}" | xargs -n1 echo | sed 's/://'
done \
| sort | uniq | while read module relax; do
if [ -n "$module" ]; then
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 16000kByte)"
+ warn "Your initrd is $tmp_size kByte large => TOO BIG (should be <= 16000kB)"
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_" ]; 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
+ else
+ # no NAT, no sensible gateway
+ GW_=
+ NAT_INTERFACE_="none"
+ fi
# grub