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 "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_/udhcp-config.sh $USR_SHARE_/cdir $USR_SHARE_/rdir; do
tmp_name_="${i##*/}"
isNotExistent "$INITRD_/static/$tmp_name_" eprint || execute "rm $INITRD_/static/$tmp_name_"
cp $i "$INITRD_/static/$tmp_name_"
done
cp $USR_SHARE_/linuxrc $INITRD_/
mkdir -p $INITRD_/mylib
- mkdir -p $INITRD_/myusr/i386-uclibc-linux/lib
- for i in libdl libc libuClibc ld-uClibc; do
- cp -a $UCLIBC_PATH_/$i*.so* $INITRD_/myusr/i386-uclibc-linux/lib
- done
-
- # copy data files for discover (discover-data)
- mkdir -p $INITRD_/mylib/discover
- cp /lib/discover/list.xml /lib/discover/pci-*.xml $INITRD_/mylib/discover/
+ mkdir -p $INITRD_/myusr
#
# which modules should i put into the ramdisk
#
- # get cards detected by discover
- if [ -f /lib/discover/pci.lst ] ; then
- 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 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
- fi
+ # 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 ${MODULES_PATH_}/${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
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
cp $MODULES_PATH_/$KERNEL_VERSION_/kernel/$i "$tmp_path"
done
- # generate modules.dep
+ # copying modules.*
cp $MODULES_PATH_/$KERNEL_VERSION_/modules.dep $mod_path_
+ cp $MODULES_PATH_/$KERNEL_VERSION_/modules.alias $mod_path_
#grep "^\/lib\/modules\/$KERNEL_VERSION_\/kernel\/" $MODULES_PATH_/$KERNEL_VERSION_/modules.dep |\
# sed "s/\/lib\/modules\/$KERNEL_VERSION_\/kernel\//\/modules\//g" > $mod_path_/modules.dep
# 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 16000kByte)"
+ 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