diff options
author | Greg Frost <gregfrost1@bigpond.com> | 2009-06-21 22:20:20 (GMT) |
---|---|---|
committer | Greg Frost <gregfrost1@bigpond.com> | 2009-06-21 22:20:20 (GMT) |
commit | 14c34906cd69c5f933bdb46fc69bc5be51252906 (patch) | |
tree | 7828d70b4a8bc4c9613d68203011b6a441460fff /abs/core-testing | |
parent | 87ee63ae6cc83c1d660a3fafe10d94ae06318e8e (diff) | |
download | linhes_pkgbuild-14c34906cd69c5f933bdb46fc69bc5be51252906.zip linhes_pkgbuild-14c34906cd69c5f933bdb46fc69bc5be51252906.tar.gz linhes_pkgbuild-14c34906cd69c5f933bdb46fc69bc5be51252906.tar.bz2 |
kernel26: config for diskless. LinHES-config: add config_diskless_frontend.basj
Diffstat (limited to 'abs/core-testing')
-rwxr-xr-x | abs/core-testing/LinHES-config/PKGBUILD | 1 | ||||
-rwxr-xr-x | abs/core-testing/LinHES-config/config_diskless_frontend.bash | 656 | ||||
-rw-r--r-- | abs/core-testing/kernel26/PKGBUILD | 8 | ||||
-rw-r--r-- | abs/core-testing/kernel26/config | 106 |
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 |