summaryrefslogtreecommitdiffstats
path: root/abs
diff options
context:
space:
mode:
Diffstat (limited to 'abs')
-rwxr-xr-xabs/core-testing/LinHES-config/PKGBUILD1
-rwxr-xr-xabs/core-testing/LinHES-config/config_diskless_frontend.bash656
-rw-r--r--abs/core-testing/kernel26/PKGBUILD8
-rw-r--r--abs/core-testing/kernel26/config106
4 files changed, 714 insertions, 57 deletions
diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD
index 40413ed..83b0101 100755
--- a/abs/core-testing/LinHES-config/PKGBUILD
+++ b/abs/core-testing/LinHES-config/PKGBUILD
@@ -48,6 +48,7 @@ build() {
install -m 0755 mv_webuser.py $MVDIR/bin/
install -m 0755 mv_hostype.py $MVDIR/bin/
install -m 0755 systemconfig.py $MVDIR/bin/
+ install -m 0755 config_diskless_frontend.bash $MVDIR/bin/
#README file displayed on install
install -m 0755 README $MVDIR/README
diff --git a/abs/core-testing/LinHES-config/config_diskless_frontend.bash b/abs/core-testing/LinHES-config/config_diskless_frontend.bash
new file mode 100755
index 0000000..21bf8a0
--- /dev/null
+++ b/abs/core-testing/LinHES-config/config_diskless_frontend.bash
@@ -0,0 +1,656 @@
+#!/bin/bash
+# This script configures your backend so that a diskless
+# frontend can boot from it.
+
+source /usr/local/bin/linhes_functions.bash
+
+must_be_root
+
+TITLE="Diskless FE Configuration"
+DOPTS=(--backtitle "$BT" --title "$TITLE" --trim --aspect 30 )
+
+DAEMON_LOG=/var/log/daemon.log
+BOOT_DEFAULT=/tftpboot/pxelinux.cfg/default
+
+unable_to_determine_mac_for_default_fe ()
+{
+ if dialog "${DOPTS[@]}" --yes-label "Boot FE and try again" \
+ --no-label "Delete $fe_nfsroot" \
+ --yesno "Unable to automatically determine the MAC address of
+ the current default frontend by interrogating $DAEMON_LOG.
+ This may be because you have not yet booted the diskless FE. You can
+ either boot the diskless FE and try running $0 again, or delete
+ $fe_nfsroot and re-create it later." 0 0 ; then
+ exit
+ else
+ rm -Rf $fe_nfsroot $BOOT_DEFAULT
+ fi
+ exit
+}
+
+find_existing_diskless_fes() {
+
+ unset frontend_names
+ unset frontend_nfsroots
+ unset frontend_ips
+ unset frontend_macs
+
+ for frontend_config in $(ls /tftpboot/pxelinux.cfg 2> /dev/null) ; do
+
+ frontend_name=$(basename $(
+ grep append /tftpboot/pxelinux.cfg/$frontend_config |
+ sed -e 's/.*nfsroot=//' | awk -F, '{print $1}' | awk -F/ '{print $NF}'))
+ frontend_nfsroot=$(
+ grep append /tftpboot/pxelinux.cfg/$frontend_config |
+ cut -d ':' -f 2 | cut -d ',' -f 1)
+ frontend_ip=\
+$((0x${frontend_config:0:2})).$((0x${frontend_config:2:2})).\
+$((0x${frontend_config:4:2})).$((0x${frontend_config:6:2}))
+ frontend_mac=$(
+ cat /etc/dhcpd.conf |
+ grep "host $frontend_name" |
+ sed 's/hardware ethernet /#/g' |
+ cut -d '#' -f 2 |
+ cut -d ';' -f 1)
+
+ if [ -n "$frontend_name" -a -n "$frontend_nfsroot" -a \
+ -n "$frontend_ip" -a -n "$frontend_mac" ] ; then
+ frontend_names=( "${frontend_names[@]}" $frontend_name )
+ frontend_nfsroots=( "${frontend_nfsroots[@]}" $frontend_nfsroot )
+ frontend_ips=( "${frontend_ips[@]}" $frontend_ip )
+ frontend_macs=( "${frontend_macs[@]}" $frontend_mac )
+ fi
+ done
+
+echo frontend_names="${frontend_names[@]}"
+echo frontend_nfsroots="${frontend_nfsroots[@]}"
+echo frontend_ips="${frontend_ips[@]}"
+echo frontend_macs="${frontend_macs[@]}"
+
+}
+
+check_for_default_fe () {
+ # This function looks to see if there is a diskless FE that has only been
+ # partially configured (i.e. it's MAC address has not been determined and
+ # as a result it has not been allocated a fixed IP.
+
+ if [ -e $BOOT_DEFAULT ] ; then
+ # There is a $BOOT_DEFAULT config file that has not yet been set to a
+ # fixed IP address. See if we can interrogate the log files to
+ # determine what the MAC adderss of the FE is so that we can turn it
+ # into a fixed ip node. This is the first step in allowing multiple
+ # diskless frontends.
+
+ # First determine from the default file, the nfsroot that it is for.
+
+ fe_nfsroot=$(grep append $BOOT_DEFAULT | cut -d ':' -f 2 | cut -d ',' -f 1)
+
+ if [ -z "$fe_nfsroot" ] ; then
+ echo "Unable to determine the location of the nfsroot from" \
+ $BOOT_DEFAULT
+ exit
+ fi
+
+ echo fe_nfsroot=$fe_nfsroot
+
+ # Now determine the IP address by looking for an instance in the
+ # daemon log file for which the specified nfsroot was mounted.
+
+ fe_ipaddress=$(
+ grep "authenticated mount request from " $DAEMON_LOG |
+ grep $fe_nfsroot |
+ tail -1 |
+ sed 's/authenticated mount request from /#/g' |
+ cut -d '#' -f 2 |
+ cut -d ':' -f 1)
+
+ echo fe_ipaddress=$fe_ipaddress
+
+ unset fe_macaddress
+
+ if [ ! -z "$fe_ipaddress" ] ; then
+ fe_macaddress=$(
+ grep "DHCPACK on $fe_ipaddress" $DAEMON_LOG |
+ tail -1 |
+ sed 's/DHCPACK on '$fe_ipaddress' to /#/g' |
+ cut -d '#' -f 2 |
+ cut -d ' ' -f 1)
+ fi
+
+ echo fe_macaddress=$fe_macaddress
+
+ if [ -z "$fe_macaddress" ] ; then
+ unable_to_determine_mac_for_default_fe
+ else
+ if ! dialog "${DOPTS[@]}" --yesno "By interrogating $DAEMON_LOG,
+ it appears that the $(basename $fe_nfsroot) frontend was
+ last used by a host with MAC Address of $fe_macaddress which
+ was allocated IP address $fe_ipaddress.
+ Do you wish to allocate the IP to that host (so that you
+ can configure another diskless FE)?" 0 0 ; then
+ dialog "${DOPTS[@]}" --msgbox "Boot the correct diskless FE and
+ run $0 again." 0 0
+ exit
+ fi
+
+ # Setup dhcpd.conf so that the FE's MAC address always uses a fixed
+ # ip address and the PXE configuration is fixed for that address.
+
+ hex_ip_address=$(printf "%02X%02X%02X%02X" $(echo $fe_ipaddress |
+ tr '.' ' '))
+ echo hex_ip_address=$hex_ip_address
+ mv -fv $BOOT_DEFAULT $(dirname $BOOT_DEFAULT)/$hex_ip_address
+
+ cp -f /etc/dhcpd.conf /etc/dhcpd.conf.bak
+ cat /etc/dhcpd.conf.bak |
+ grep -v "host $(basename $fe_nfsroot)" > \
+ /etc/dhcpd.conf
+ echo "\
+host $(basename $fe_nfsroot) \
+{hardware ethernet $fe_macaddress; fixed-address $fe_ipaddress;}" \
+ >> /etc/dhcpd.conf
+
+ /sbin/sv restart dhcpd
+
+ dialog "${DOPTS[@]}" --msgbox "The frontend $(basename $fe_nfsroot)
+ with a MAC address of $fe_macaddress and an nfsroot directory of
+ $fe_nfsroot has been configured with a fixed IP address of
+ $fe_ipaddress." 0 0
+ exit
+ fi
+ fi
+
+}
+
+get_network_interface() {
+ NETDEVICES="$(cat /proc/net/dev |
+ awk -F: '/ath.:|wlan.:|eth.:|tr.:/{print $1}')"
+ echo NETDEVICES=$NETDEVICES
+ NUM_DEVICES=$(echo $NETDEVICES | wc -w)
+ echo NUM_DEVICES=$NUM_DEVICES
+ if [ $NUM_DEVICES = 1 ] ; then
+ INTERFACE=$NETDEVICES
+ else
+ DEVICELIST=""
+ DEVNUM=0
+ for DEVICE in $NETDEVICES
+ do
+ DEVNUM=$(($DEVNUM + 1))
+ DEVICELIST="$DEVICELIST $DEVICE Interface${DEVNUM} "
+ done
+ echo DEVICELIST=$DEVICELIST
+ TMP=/tmp/interface
+ rm -Rf $TMP
+ dialog "${DOPTS[@]}" --menu "Which network interface?" 18 70 12 \
+ $DEVICELIST 2>$TMP || exit
+ INTERFACE=$(cat $TMP)
+ fi
+ echo INTERFACE=$INTERFACE
+}
+
+validip(){
+ echo "$1" | egrep -q -e '[0-9]+\.[0-9]+\.[0-9]+.[0-9]+'
+ return $?
+}
+
+get_network_info() {
+ BACKEND_IP=$(echo $(ifconfig $INTERFACE | grep "inet addr" | tr ':' ' ') |
+ cut -d ' ' -f 3)
+ echo BACKEND_IP=$BACKEND_IP
+ NAMESERVERS="$(awk '/^nameserver/{printf "%s ",$2}' /etc/resolv.conf)"
+ echo NAMESERVERS=$NAMESERVERS
+ GATEWAY="$(LANG=C LC_ALL=C route -n | awk '/^0\.0\.0\.0/{print $2; exit}')"
+ echo GATEWAY=$GATEWAY
+ NETWORK="${BACKEND_IP%.*}"
+ echo NETWORK=$NETWORK
+ HOST="${BACKEND_IP##*.}"
+ echo HOST=$HOST
+ NETMASK="$(LANG=C LC_ALL=C ifconfig $INTERFACE |
+ awk '/[Mm]ask/{FS="[: ]*";$0=$0; print $8; exit}')"
+ echo NETMASK=$NETMASK
+
+ # See if we can determine the range of IP addresses currently allowed in
+ # dhcpd.conf
+
+ IPRANGE=( $(grep ^[[:space:]]*range /etc/dhcpd.conf |
+ sed 's/range//g' | tr -d ';') )
+
+ echo ${IPRANGE[@]}
+ if [ $(echo ${IPRANGE[@]} | wc -w) -eq 2 ] ; then
+ START=$(echo ${IPRANGE[0]} | tr '.' '\t' | cut -f 4)
+ END=$(echo ${IPRANGE[1]} | tr '.' '\t' | cut -f 4)
+ echo START=$START
+ echo END=$END
+ fi
+
+ # Could not
+
+ if [ -z "$START" -o -z "$END" ] ; then
+ if [ "$HOST" -lt "20" ] ; then
+ START=21
+ END=26
+ else
+ START=11
+ END=16
+ fi
+ fi
+
+ IPRANGE_FROM=""
+ IPRANGE_TO=""
+
+ while [ -z "$IPRANGE_FROM" -o -z "$IPRANGE_TO" -o -z "$IPRANGE" ]
+ do
+ IPRANGE="$NETWORK.$START $NETWORK.$END"
+ rm -f /tmp/iprange
+
+ if ! dialog "${DOPTS[@]}" --clear --inputbox "Please enter the desired
+ IP-Range of addresses that should be allocated by clients,
+ separated by a single space." 10 75 "$IPRANGE" \
+ 2> /tmp/iprange ; then
+ exit
+ fi
+
+ IPRANGE=$(cat /tmp/iprange)
+ echo IPRANGE=$IPRANGE
+ IPRANGE_FROM="${IPRANGE%% *}"
+ IPRANGE_TO="${IPRANGE##* }"
+
+ for i in "$IPRANGE_FROM" "$IPRANGE_TO"
+ do
+ validip "$i" || IPRANGE=""
+ done
+ done
+}
+
+setup_dhcpd() {
+ # Generate dhcpd.conf from template
+
+ if [ ! -f /etc/dhcpd.conf.orig ] ; then
+ mv -f /etc/dhcpd.conf /etc/dhcpd.conf.orig
+ fi
+
+ ALLNAMESERVERS=""
+ for i in $NAMESERVERS; do
+ ALLNAMESERVERS="${ALLNAMESERVERS:+$ALLNAMESERVERS,} $i"
+ done
+ echo ALLNAMESERVERS=$ALLNAMESERVERS
+
+ cat >/etc/dhcpd.conf <<EOT
+# dhcpd.conf for LinHES Diskless Frontend
+
+# global settings
+## POF allow booting;
+allow bootp;
+default-lease-time 600;
+max-lease-time 7200;
+
+subnet ${NETWORK}.0 netmask ${NETMASK} {
+ next-server $BACKEND_IP;
+ filename "pxelinux.0";
+ option subnet-mask ${NETMASK};
+ range ${IPRANGE_FROM} ${IPRANGE_TO};
+ ${ALLNAMESERVERS:+option domain-name-servers $ALLNAMESERVERS;}
+ ${GATEWAY:+option routers $GATEWAY;}
+}
+EOT
+
+ for (( fe = 0 ; fe < ${#frontend_names[@]} ; fe++ )) ; do
+ echo "host ${frontend_names[$fe]} \
+{hardware ethernet ${frontend_macs[$fe]}; \
+fixed-address ${frontend_ips[$fe]};}" >> \
+ /etc/dhcpd.conf
+ done
+
+ /sbin/add_service.sh dhcpd
+ /sbin/sv restart dhcpd
+}
+
+setup_tftpd() {
+
+ /sbin/add_service.sh tftpd
+ /sbin/sv restart tftpd
+}
+
+check_delete_of_existing_nfsroot() {
+ if [ -d $NFSROOT ] ; then
+ if dialog "${DOPTS[@]}" --yesno "\
+There is already a directory $NFSROOT. Do you want to delete it and \
+rebuild it from scratch?" 10 70 ; then
+ echo Deleting $NFSROOT
+ rm -Rf $NFSROOT
+ else
+ echo "OK then, bye."
+ exit
+ fi
+ fi
+}
+
+enable_mysql_and_backend_networking() {
+ # Enable mysql networking on the backend.
+
+ /sbin/sv stop mythbackend
+
+ if grep -q ^bind-address /etc/my.cnf ; then
+ echo "Commenting out bind-address."
+ cp /etc/my.cnf /etc/my.cnf~
+ cat /etc/my.cnf~ | sed 's/^skip-networking/#skip-networking/g' > \
+ /etc/my.cnf
+ /sbin/sv restart mysql
+ else
+ echo "Already commented out skip-networking."
+ fi
+
+ # Make sure that the backend ip settings in the mythtv mysql database have
+ # the actual IP address of the backend rather than the loopback address.
+ # Otherwise the frontend will not be able to connect to the backend.
+
+ echo "Setting backend IP in mythtv's mysql settings"
+ echo "
+UPDATE settings SET data='$BACKEND_IP' WHERE value='BackendServerIP';
+UPDATE settings SET data='$BACKEND_IP' WHERE value='MasterServerIP';" |
+ mysql mythconverg
+
+ /sbin/sv start mythbackend
+}
+
+export_usr() {
+ # Ensure that the /usr directory is read-only exported.
+
+ if ! grep -q ^/usr[[:space:]] /etc/exports ; then
+ echo "Adding line for /usr in /etc/exports"
+ echo "/usr *(ro,async,no_subtree_check)" >> /etc/exports
+ else
+ echo "Already added line for /usr in /etc/exports"
+ fi
+}
+
+enable_nfs() {
+ # Enable NFS.
+
+ /sbin/add_service.sh nfsd
+
+}
+
+restart_nfs (){
+
+ /usr/sbin/exportfs -r
+}
+
+export_nfsroot() {
+ # Ensure that the NFSROOT directory is appropriately exported.
+
+ if ! grep -q ^$NFSROOT[[:space:]] /etc/exports ; then
+ echo "Adding line for $NFSROOT in /etc/exports"
+ echo "$NFSROOT *(rw,no_root_squash,async,no_subtree_check)" >> /etc/exports
+ else
+ echo "Already added line for $NFSROOT in /etc/exports"
+ fi
+}
+
+create_tftpboot_directory() {
+ # Create the directory with the tftp stuff.
+
+ echo "Creating /tftpboot directories"
+ mkdir -p /tftpboot/pxelinux.cfg
+
+ if [ ! -e /tftpboot/pxelinux.0 ] ; then
+ cp -fv /usr/lib/syslinux/pxelinux.0 /tftpboot/pxelinux.0
+ fi
+
+ if [ ! -e /tftpboot/vmlinuz26 ] ; then
+ cp -fv /boot/vmlinuz26 /tftpboot/vmlinuz26
+ fi
+
+ if [ ! -e /tftpboot/kernel26.img ] ; then
+
+ echo "Building kernel miniroot"
+ if [ -z "$(awk -F\" '$1 ~ /^MODULES=/ && $2 ~ /nfs/' /etc/mkinitcpio.conf)" ] ; then
+ cp /etc/mkinitcpio.conf /etc/mkinitcpio.conf~
+ sed -e '/^MODULES=/s/\"$/ nfs\"/' < /etc/mkinitcpio.conf~ > /etc/mkinitcpio.conf
+ fi
+ if [ -z "$(awk -F\" '$1 ~ /^HOOKS=/ && $2 ~ /net/' /etc/mkinitcpio.conf)" ] ; then
+ cp /etc/mkinitcpio.conf /etc/mkinitcpio.conf~
+ sed -e '/^HOOKS=/s/\"$/ net\"/' < /etc/mkinitcpio.conf~ > /etc/mkinitcpio.conf
+ fi
+ /sbin/mkinitcpio -g /tftpboot/kernel26.img
+ fi
+}
+
+create_default_pxelinux_entry() {
+ echo "\
+ default linux
+
+ label linux
+ kernel vmlinuz26
+ append initrd=kernel26.img rootfstype=nfs root=/dev/nfs nfsroot=$BACKEND_IP:$NFSROOT,v3,rsize=16384,wsize=16384 init=/sbin/runit ip=dhcp" \
+ > /tftpboot/pxelinux.cfg/default
+}
+
+create_new_nfsroot() {
+ # Prompt the user for the name of the NFSROOT.
+
+ FRONTEND=
+ NFSROOT=
+
+ while [ -z "$FRONTEND" ] ; do
+ if ! dialog "${DOPTS[@]}" --inputbox "Enter the hostname of the new
+ diskless FE:" 0 0 2> /tmp/frontend_hostname ; then
+ exit
+ fi
+
+ FRONTEND=$(cat /tmp/frontend_hostname)
+ done
+
+ # Prompt the user for the location of the NFSROOT.
+
+ while [ -z "$NFSROOT" ] ; do
+ NFSROOT=/nfsroot/$FRONTEND
+
+ if ! dialog "${DOPTS[@]}" --clear --inputbox "Enter the location of the
+ NFSROOT for the diskless FE:" \
+ 0 0 "$NFSROOT" 2> /tmp/nfsroot_location ; then
+ exit
+ fi
+
+ NFSROOT=$(cat /tmp/nfsroot_location)
+ done
+
+ check_delete_of_existing_nfsroot
+
+ # Create the nfsroot directory that the FE will use as its root filesystem.
+
+ echo "Creating the $NFSROOT directory."
+ mkdir -p $NFSROOT
+ for DIR in /* ; do
+ if [[ "$DIR" != /myth && \
+ "$DIR" != /mnt && \
+ "$DIR" != /bin && \
+ "$DIR" != /sbin && \
+ "$DIR" != /tmp && \
+ "$DIR" != /data && \
+ "$DIR" != /usr && \
+ "$DIR" != /proc && \
+ "$DIR" != /sys && \
+ "$DIR" != /storage && \
+ "$DIR" != /var && \
+ "$DIR" != /nfsroot && \
+ "$DIR" != /tftpboot && \
+ "$DIR" != /cdrom ]]
+ then
+ echo " Copying $DIR to $NFSROOT"
+ cp -ax $DIR $NFSROOT
+ fi
+ done
+
+ cp -alx /bin $NFSROOT
+ cp -alx /sbin $NFSROOT
+
+ cd $NFSROOT
+
+ # Exclude specific bits of /var
+
+ tar c /var \
+ --exclude=/var/lib/dhcpcd \
+ --exclude=/var/lib/locate \
+ --exclude=/var/lib/mlocate \
+ --exclude=/var/lib/named \
+ 2> /dev/null | tar x 2> /dev/null
+
+ for DIR in /myth /mnt /tmp /usr /proc /sys /cdrom /var/lib/mlocate ; do
+ echo " Creating $DIR"
+ tar c $DIR --exclude=$DIR/* 2> /dev/null | tar x 2> /dev/null
+ done
+
+
+# chroot $NFSROOT mount -t nfs localhost:/usr /usr
+ chroot $NFSROOT /sbin/remove_service.sh dhcpd
+ chroot $NFSROOT /sbin/remove_service.sh lighttpd
+ chroot $NFSROOT /sbin/remove_service.sh mysql
+ chroot $NFSROOT /sbin/remove_service.sh mythbackend
+ chroot $NFSROOT /sbin/remove_service.sh nfsd
+ chroot $NFSROOT /sbin/remove_service.sh nmbd
+ chroot $NFSROOT /sbin/remove_service.sh smbd
+ chroot $NFSROOT /sbin/remove_service.sh tftpd
+# chroot $NFSROOT umount /usr
+
+ # Update the fstab.
+
+ cp $NSFROOT/etc/fstab $NFSROOT/etc/fstab~
+ cat $NFSROOT/etc/fstab~ | grep -v ext3 |
+ grep -v ^UUID= > $NFSROOT/etc/fstab
+
+ echo "\
+$BACKEND_IP:/nfsroot / nfs defaults,nolock,auto,noatime 0 2
+$BACKEND_IP:/usr /usr nfs defaults,nolock,auto,noatime 0 2
+$BACKEND_IP:/myth /myth nfs defaults,nolock,auto,noatime 0 0
+" >> $NFSROOT/etc/fstab
+
+ cp $NFSROOT/etc/rc.sysinit $NFSROOT/etc/rc.sysinit~
+ sed -e '/^\/sbin\/minilogd/s/$/\n\n# Mount NFS early\n\/bin\/mount -a -t nfs/' \
+ < $NFSROOT/etc/rc.sysinit~ > $NFSROOT/etc/rc.sysinit
+
+ # Update networking
+
+ echo $FRONTEND > $NFSROOT/etc/hostname
+
+ cp $NFSROOT/etc/hosts $NFSROOT/etc/hosts~
+ echo "127.0.0.1 $FRONTEND localhost" > $NFSROOT/etc/hosts
+ cat $NFSROOT/etc/hosts~ | grep -v 127.0.0.1 >> $NFSROOT/etc/hosts
+
+ cp $NFSROOT/etc/net/ifaces/eth0/options $NFSROOT/etc/net/ifaces/eth0/options~
+ sed -e 's/^BOOTPROTO=.*/BOOTPROTO=none/' < $NFSROOT/etc/net/ifaces/eth0/options~ \
+ > $NFSROOT/etc/net/ifaces/eth0/options
+
+ # Update mysql settings
+
+ cp /usr/share/mythtv/mysql.txt $NFSROOT/home/mythtv/.mythtv/mysql.txt
+
+ if grep -q DBHostName=localhost $NFSROOT/home/mythtv/.mythtv/mysql.txt ; then
+ echo "Setting database host in frontend's mysql.txt."
+ cp $NFSROOT/home/mythtv/.mythtv/mysql.txt \
+ $NFSROOT/home/mythtv/.mythtv/mysql.txt.orig
+ cat $NFSROOT/home/mythtv/.mythtv/mysql.txt.orig |
+ sed 's/DBHostName=localhost/DBHostName='$BACKEND_IP'/g' > \
+ $NFSROOT/home/mythtv/.mythtv/mysql.txt
+ else
+ echo "Already set Database host in frontend's mysql.txt."
+ fi
+
+ chown mythtv:mythtv $NFSROOT/home/mythtv/.mythtv/mysql.txt
+
+# echo > $NFSROOT/etc/mythtv/Cards
+
+ create_default_pxelinux_entry
+ export_nfsroot
+ restart_nfs
+
+ dialog "${DOPTS[@]}" --msgbox "Boot your diskless FE
+ and then re-run this script ($0) so that the MAC address
+ of the Diskless FE can be obtained." 0 0
+
+}
+
+
+
+##########################################
+##########################################
+##
+## MAIN BODY OF SCRIPT ##
+##
+##########################################
+##########################################
+
+
+
+check_for_default_fe
+find_existing_diskless_fes
+
+get_network_interface
+get_network_info
+setup_tftpd
+setup_dhcpd
+enable_mysql_and_backend_networking
+export_usr
+create_tftpboot_directory
+enable_nfs
+
+# Restart nfs so that the newly exported /usr directory can be mounted. This
+# is required to create a new frontend.
+
+restart_nfs
+
+if [ ${#frontend_names[@]} -eq 0 ] ; then
+ create_new_nfsroot
+else
+ for (( fe = 0 ; fe < ${#frontend_names[@]} ; fe++ )) ; do
+ frontend_options=( "${frontend_options[@]}" \
+ "${frontend_names[$fe]} (MAC:${frontend_macs[$fe]} \
+IP:${frontend_ips[$fe]})" "" )
+ done
+
+echo 0=${frontend_names[0]}
+echo 1=${frontend_names[1]}
+echo 2=${frontend_names[2]}
+echo 3=${frontend_names[3]}
+
+ if ! dialog "${DOPTS[@]}" --menu "Select a frontend to delete or to create
+ a new one." 0 0 0 "${frontend_options[@]}" \
+ "New Frontend" "" 2> /tmp/selected_fe; then
+ exit
+ fi
+
+ selected_option=$(cat /tmp/selected_fe)
+
+ if [ "$selected_option" = "New Frontend" ] ; then
+ create_new_nfsroot
+ exit
+ fi
+
+echo $selected_option
+echo ${frontend_options[0]}
+echo ${frontend_options[2]}
+echo ${frontend_nfsroots[@]}
+
+ for (( fe = 0 ; fe < ${#frontend_names[@]} ; fe++ )) ; do
+ if [ "$selected_option" = "${frontend_options[$(($fe*2))]}" ] ; then
+ if dialog "${DOPTS[@]}" --yesno "Do you wish to delete the frontend
+ with nfsroot ${frontend_nfsroots[$fe]}?" 0 0 ; then
+ # Delete the nfsroot directory.
+ rm -Rfv ${frontend_nfsroots[$fe]}
+
+ # Delete the tftpboot pxe boot config file.
+
+ hex_ip_address=$(printf "%02X%02X%02X%02X" \
+ $(echo ${frontend_ips[$fe]} | tr '.' ' '))
+ rm /tftpboot/pxelinux.cfg/$hex_ip_address
+
+ # Remove reference to the frontend from the dhcp.conf
+ cp -fv /etc/dhcpd.conf /etc/dhcpd.conf.bak
+ grep -v "host ${frontend_names[$fe]}" /etc/dhcpd.conf.bak > \
+ /etc/dhcpd.conf
+ /sbin/sv restart dhcpd
+ fi
+ fi
+ done
+fi
+
diff --git a/abs/core-testing/kernel26/PKGBUILD b/abs/core-testing/kernel26/PKGBUILD
index 0c28557..81873cf 100644
--- a/abs/core-testing/kernel26/PKGBUILD
+++ b/abs/core-testing/kernel26/PKGBUILD
@@ -37,12 +37,12 @@ source=(ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-$_basekernel.tar.bz2
optdepends=('crda: to set the correct wireless channels of your country')
md5sums=('d351e44709c9810b85e29b877f50968a'
'6e63a5f54c142f42de7e59fc5f75eab2'
- '04b1413586111705ba790542c6e82350'
- 'de2e702d49e2656bd5bfe55aa68152fe'
+ '04b1413586111705ba790542c6e82350'
+ '40d5ef3b042c23b04962b7a23f9482ed'
'959b317feb974d8906c5e15e7c76ad8f'
'ceb38003807a5aa1a00c8d4b9f028893'
- '7bdfe2e1daedb324fdfdfa95ba4e2430'
- 'd66b5cc1e1c2ce40d06d77167f36dfd9')
+ '7bdfe2e1daedb324fdfdfa95ba4e2430'
+ 'd66b5cc1e1c2ce40d06d77167f36dfd9')
build() {
KARCH=x86
diff --git a/abs/core-testing/kernel26/config b/abs/core-testing/kernel26/config
index a9fa8ff..676616c 100644
--- a/abs/core-testing/kernel26/config
+++ b/abs/core-testing/kernel26/config
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.28
-# Thu Feb 12 10:17:52 2009
+# Sun Jun 21 21:20:09 2009
#
# CONFIG_64BIT is not set
CONFIG_X86_32=y
@@ -508,7 +508,10 @@ CONFIG_IP_FIB_HASH=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_MULTIPATH=y
CONFIG_IP_ROUTE_VERBOSE=y
-# CONFIG_IP_PNP is not set
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
CONFIG_NET_IPIP=m
CONFIG_NET_IPGRE=m
# CONFIG_NET_IPGRE_BROADCAST is not set
@@ -1483,7 +1486,7 @@ CONFIG_TUN=m
CONFIG_VETH=m
CONFIG_NET_SB1000=m
# CONFIG_ARCNET is not set
-CONFIG_PHYLIB=m
+CONFIG_PHYLIB=y
#
# MII PHY device drivers
@@ -1498,9 +1501,10 @@ CONFIG_PHYLIB=m
# CONFIG_BROADCOM_PHY is not set
# CONFIG_ICPLUS_PHY is not set
# CONFIG_REALTEK_PHY is not set
+# CONFIG_FIXED_PHY is not set
# CONFIG_MDIO_BITBANG is not set
CONFIG_NET_ETHERNET=y
-CONFIG_MII=m
+CONFIG_MII=y
CONFIG_HAPPYMEAL=m
CONFIG_SUNGEM=m
CONFIG_CASSINI=m
@@ -1509,14 +1513,14 @@ CONFIG_EL1=m
CONFIG_EL2=m
CONFIG_ELPLUS=m
CONFIG_EL16=m
-CONFIG_EL3=m
+CONFIG_EL3=y
CONFIG_3C515=m
-CONFIG_VORTEX=m
-CONFIG_TYPHOON=m
+CONFIG_VORTEX=y
+CONFIG_TYPHOON=y
CONFIG_LANCE=m
CONFIG_NET_VENDOR_SMC=y
CONFIG_WD80x3=m
-CONFIG_ULTRA=m
+CONFIG_ULTRA=y
CONFIG_SMC9194=m
CONFIG_ENC28J60=m
# CONFIG_ENC28J60_WRITEVERIFY is not set
@@ -1525,18 +1529,18 @@ CONFIG_NI52=m
CONFIG_NI65=m
CONFIG_NET_TULIP=y
CONFIG_DE2104X=m
-CONFIG_TULIP=m
+CONFIG_TULIP=y
# CONFIG_TULIP_MWI is not set
# CONFIG_TULIP_MMIO is not set
# CONFIG_TULIP_NAPI is not set
CONFIG_DE4X5=m
-CONFIG_WINBOND_840=m
-CONFIG_DM9102=m
-CONFIG_ULI526X=m
-CONFIG_PCMCIA_XIRCOM=m
+CONFIG_WINBOND_840=y
+CONFIG_DM9102=y
+CONFIG_ULI526X=y
+CONFIG_PCMCIA_XIRCOM=y
CONFIG_AT1700=m
CONFIG_DEPCA=m
-CONFIG_HP100=m
+CONFIG_HP100=y
CONFIG_NET_ISA=y
CONFIG_E2100=m
CONFIG_EWRK3=m
@@ -1557,37 +1561,37 @@ CONFIG_SEEQ8005=m
# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
CONFIG_NET_PCI=y
-CONFIG_PCNET32=m
-CONFIG_AMD8111_ETH=m
+CONFIG_PCNET32=y
+CONFIG_AMD8111_ETH=y
CONFIG_ADAPTEC_STARFIRE=m
CONFIG_AC3200=m
CONFIG_APRICOT=m
-CONFIG_B44=m
+CONFIG_B44=y
CONFIG_B44_PCI_AUTOSELECT=y
CONFIG_B44_PCICORE_AUTOSELECT=y
CONFIG_B44_PCI=y
-CONFIG_FORCEDETH=m
+CONFIG_FORCEDETH=y
# CONFIG_FORCEDETH_NAPI is not set
CONFIG_CS89x0=m
-CONFIG_EEPRO100=m
-CONFIG_E100=m
+CONFIG_EEPRO100=y
+CONFIG_E100=y
CONFIG_FEALNX=m
-CONFIG_NATSEMI=m
+CONFIG_NATSEMI=y
CONFIG_NE2K_PCI=m
CONFIG_8139CP=m
-CONFIG_8139TOO=m
+CONFIG_8139TOO=y
# CONFIG_8139TOO_PIO is not set
CONFIG_8139TOO_TUNE_TWISTER=y
CONFIG_8139TOO_8129=y
# CONFIG_8139_OLD_RX_RESET is not set
CONFIG_R6040=m
-CONFIG_SIS900=m
-CONFIG_EPIC100=m
+CONFIG_SIS900=y
+CONFIG_EPIC100=y
CONFIG_SUNDANCE=m
# CONFIG_SUNDANCE_MMIO is not set
CONFIG_TLAN=m
-CONFIG_VIA_RHINE=m
-# CONFIG_VIA_RHINE_MMIO is not set
+CONFIG_VIA_RHINE=y
+CONFIG_VIA_RHINE_MMIO=y
CONFIG_SC92031=m
CONFIG_NET_POCKET=y
CONFIG_ATP=m
@@ -1597,26 +1601,26 @@ CONFIG_ATL2=m
CONFIG_NETDEV_1000=y
CONFIG_ACENIC=m
# CONFIG_ACENIC_OMIT_TIGON_I is not set
-CONFIG_DL2K=m
+CONFIG_DL2K=y
CONFIG_E1000=m
CONFIG_E1000E=m
CONFIG_IP1000=m
CONFIG_IGB=m
# CONFIG_IGB_LRO is not set
CONFIG_IGB_DCA=y
-CONFIG_NS83820=m
+CONFIG_NS83820=y
CONFIG_HAMACHI=m
CONFIG_YELLOWFIN=m
CONFIG_R8169=m
-# CONFIG_R8169_VLAN is not set
-CONFIG_SIS190=m
-CONFIG_SKGE=m
+CONFIG_R8169_VLAN=y
+CONFIG_SIS190=y
+CONFIG_SKGE=y
# CONFIG_SKGE_DEBUG is not set
CONFIG_SKY2=m
# CONFIG_SKY2_DEBUG is not set
-CONFIG_VIA_VELOCITY=m
-CONFIG_TIGON3=m
-CONFIG_BNX2=m
+CONFIG_VIA_VELOCITY=y
+CONFIG_TIGON3=y
+CONFIG_BNX2=y
CONFIG_QLA3XXX=m
CONFIG_ATL1=m
CONFIG_ATL1E=m
@@ -1715,8 +1719,6 @@ CONFIG_HOSTAP_CS=m
CONFIG_B43=m
CONFIG_B43_PCI_AUTOSELECT=y
CONFIG_B43_PCICORE_AUTOSELECT=y
-CONFIG_B43_PCMCIA=y
-CONFIG_B43_PIO=y
CONFIG_B43_LEDS=y
CONFIG_B43_RFKILL=y
# CONFIG_B43_DEBUG is not set
@@ -2467,14 +2469,11 @@ CONFIG_SSB_POSSIBLE=y
#
# Sonics Silicon Backplane
#
-CONFIG_SSB=m
+CONFIG_SSB=y
CONFIG_SSB_SPROM=y
-CONFIG_SSB_BLOCKIO=y
CONFIG_SSB_PCIHOST_POSSIBLE=y
CONFIG_SSB_PCIHOST=y
CONFIG_SSB_B43_PCI_BRIDGE=y
-CONFIG_SSB_PCMCIAHOST_POSSIBLE=y
-CONFIG_SSB_PCMCIAHOST=y
# CONFIG_SSB_DEBUG is not set
CONFIG_SSB_DRIVER_PCICORE_POSSIBLE=y
CONFIG_SSB_DRIVER_PCICORE=y
@@ -3813,24 +3812,25 @@ CONFIG_UFS_FS=m
# CONFIG_UFS_FS_WRITE is not set
# CONFIG_UFS_DEBUG is not set
CONFIG_NETWORK_FILESYSTEMS=y
-CONFIG_NFS_FS=m
+CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=y
+CONFIG_ROOT_NFS=y
CONFIG_NFSD=m
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
CONFIG_NFSD_V4=y
-CONFIG_LOCKD=m
+CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
-CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_ACL_SUPPORT=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-CONFIG_SUNRPC_GSS=m
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
# CONFIG_SUNRPC_REGISTER_V4 is not set
-CONFIG_RPCSEC_GSS_KRB5=m
+CONFIG_RPCSEC_GSS_KRB5=y
CONFIG_RPCSEC_GSS_SPKM3=m
CONFIG_SMB_FS=m
# CONFIG_SMB_NLS_DEFAULT is not set
@@ -4042,11 +4042,11 @@ CONFIG_CRYPTO=y
# Crypto core or helper
#
CONFIG_CRYPTO_FIPS=y
-CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_ALGAPI=y
CONFIG_CRYPTO_ALGAPI2=y
CONFIG_CRYPTO_AEAD=m
CONFIG_CRYPTO_AEAD2=y
-CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_BLKCIPHER=y
CONFIG_CRYPTO_BLKCIPHER2=y
CONFIG_CRYPTO_HASH=m
CONFIG_CRYPTO_HASH2=y
@@ -4070,7 +4070,7 @@ CONFIG_CRYPTO_SEQIV=m
#
# Block modes
#
-CONFIG_CRYPTO_CBC=m
+CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_CTR=m
CONFIG_CRYPTO_CTS=m
CONFIG_CRYPTO_ECB=m
@@ -4090,7 +4090,7 @@ CONFIG_CRYPTO_XCBC=m
CONFIG_CRYPTO_CRC32C=m
CONFIG_CRYPTO_CRC32C_INTEL=m
CONFIG_CRYPTO_MD4=m
-CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_RMD128=m
CONFIG_CRYPTO_RMD160=m
@@ -4113,7 +4113,7 @@ CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_CAMELLIA=m
CONFIG_CRYPTO_CAST5=m
CONFIG_CRYPTO_CAST6=m
-CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_FCRYPT=m
CONFIG_CRYPTO_KHAZAD=m
CONFIG_CRYPTO_SALSA20=m
@@ -4159,14 +4159,14 @@ CONFIG_VIRTIO_RING=y
CONFIG_BITREVERSE=y
CONFIG_GENERIC_FIND_FIRST_BIT=y
CONFIG_GENERIC_FIND_NEXT_BIT=y
-CONFIG_CRC_CCITT=m
+CONFIG_CRC_CCITT=y
CONFIG_CRC16=m
CONFIG_CRC_T10DIF=m
CONFIG_CRC_ITU_T=m
CONFIG_CRC32=y
CONFIG_CRC7=m
CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=m
+CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=m
CONFIG_LZO_COMPRESS=m
CONFIG_LZO_DECOMPRESS=m