From 9d96ee0becbe63da81c466f2a0c321f826af3dbd Mon Sep 17 00:00:00 2001
From: Greg Frost <gregfrost1@bigpond.com>
Date: Sat, 3 Oct 2009 07:36:02 +0930
Subject: diskless-legacy: add storage group support

---
 abs/core-testing/diskless-legacy/PKGBUILD          |   2 -
 .../diskless-legacy/config_diskless_frontend.bash  | 105 +++++++++++++++------
 2 files changed, 75 insertions(+), 32 deletions(-)

diff --git a/abs/core-testing/diskless-legacy/PKGBUILD b/abs/core-testing/diskless-legacy/PKGBUILD
index 6b7cea7..d5359a8 100644
--- a/abs/core-testing/diskless-legacy/PKGBUILD
+++ b/abs/core-testing/diskless-legacy/PKGBUILD
@@ -7,10 +7,8 @@ pkgdesc="Script for configuring a diskless mythtv frontends using NFS root."
 arch=i686
 depends=(tftp-hpa dhcp)
 source=(config_diskless_frontend.bash)
-md5sums=('825fbc61ef209dc47f17dbaab5829779')
 
 build() {
   install -D -m755 ${srcdir}/config_diskless_frontend.bash \
     ${pkgdir}/usr/local/bin/config_diskless_frontend.bash
 }
-md5sums=('825fbc61ef209dc47f17dbaab5829779')
diff --git a/abs/core-testing/diskless-legacy/config_diskless_frontend.bash b/abs/core-testing/diskless-legacy/config_diskless_frontend.bash
index ffd1afd..73f2a1e 100755
--- a/abs/core-testing/diskless-legacy/config_diskless_frontend.bash
+++ b/abs/core-testing/diskless-legacy/config_diskless_frontend.bash
@@ -319,13 +319,10 @@ fixed-address ${frontend_ips[$fe]};}" >> \
   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() {
@@ -386,13 +383,37 @@ export_mounts() {
   else
     echo "Already added line for /data/var/cache/pacman in /etc/exports"
   fi
+
+  # Ensure that the montpoints that are used as storage groups are exported.
+
+  for storage_mount in ${storage_mounts[@]} ; do
+
+    if ! grep -q ^${storage_mount}[[:space:]] /etc/exports ; then
+      echo "Adding line for ${storage_mount} in /etc/exports"
+      echo "${storage_mount} *(rw,async,no_subtree_check)" >> /etc/exports
+    else
+      echo "Already added line for ${storage_mount} in /etc/exports"
+    fi
+  done
 }
 
-enable_nfs() {
-  # Enable NFS.
+find_storage_mounts() {
+  unset storage_mounts
+  for group in $(mysql -sB mythconverg -e \
+    "select dirname from storagegroup where hostname = '$(hostname)'") ; do
 
-  /sbin/add_service.sh nfsd
+    group_mount=$group
+    while ! mountpoint -q $group_mount ; do
+      group_mount=$(dirname $group_mount)
+    done
 
+    echo Storage group $group mountpoint is $group_mount
+    storage_mounts=( "${storage_mounts[@]}" $group_mount )
+  done
+}
+
+enable_nfs() {
+  /sbin/add_service.sh nfsd
 }
 
 restart_nfs (){
@@ -427,10 +448,10 @@ create_tftpboot_directory() {
   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 ~ /^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
@@ -485,29 +506,28 @@ create_new_nfsroot() {
   echo "Creating the $NFSROOT directory."
   mkdir -p $NFSROOT
   for DIR in /* ; do
-    if [[ "$DIR" != /myth && \
-          "$DIR" != /mnt && \
-          "$DIR" != /bin && \
-          "$DIR" != /sbin && \
-          "$DIR" != /tmp && \
+    if [[ "$DIR" != /mnt && \
           "$DIR" != /data && \
           "$DIR" != /media && \
-          "$DIR" != /proc && \
-          "$DIR" != /sys && \
+          "$DIR" != /tmp && \
+          "$DIR" != /etc.old && \
           "$DIR" != /storage && \
           "$DIR" != /var && \
           "$DIR" != /nfsroot && \
           "$DIR" != /tftpboot && \
           "$DIR" != /cdrom ]]
     then
-      echo "  Copying $DIR to $NFSROOT"
-      cp -ax $DIR $NFSROOT
+      if mountpoint -q $DIR && [ "$DIR" != "/dev" ] ; then
+        echo "  Making mountpoint dir $DIR"
+        cd $NFSROOT
+        tar c $DIR --exclude=$DIR/* 2> /dev/null | tar x 2> /dev/null
+      else
+        echo "  Copying $DIR to $NFSROOT"
+        cp -ax $DIR $NFSROOT
+      fi
     fi
   done
 
-  cp -alx /bin $NFSROOT
-  cp -alx /sbin $NFSROOT
-
   cd $NFSROOT
 
   # Exclude specific bits of /var
@@ -519,7 +539,7 @@ create_new_nfsroot() {
     --exclude=/var/lib/named \
     2> /dev/null | tar x 2> /dev/null
 
-  for DIR in /myth /mnt /data /tmp /proc /media /sys /cdrom /var/lib/mlocate ; do
+  for DIR in /mnt /data /tmp /media /cdrom /var/lib/mlocate ; do
     echo "  Creating $DIR"
     tar c $DIR --exclude=$DIR/* 2> /dev/null | tar x 2> /dev/null
   done
@@ -538,7 +558,7 @@ create_new_nfsroot() {
   # Update the fstab.
 
   cp $NSFROOT/etc/fstab $NFSROOT/etc/fstab~
-  cat $NFSROOT/etc/fstab~ | grep -v ext3 |
+  cat $NFSROOT/etc/fstab~ | grep -v ext[34] | grep -v xfs |
     grep -v ^UUID= > $NFSROOT/etc/fstab
 
   echo "\
@@ -547,6 +567,12 @@ $BACKEND_IP:/myth /myth nfs defaults,nolock,auto,noatime 0 0
 $BACKEND_IP:/data/var/cache/pacman /data/var/cache/pacman nfs defaults,nolock,auto,noatime 0 0
 " >> $NFSROOT/etc/fstab
 
+  for storage_mount in ${storage_mounts[@]} ; do
+    echo "\
+$BACKEND_IP:${storage_mount} ${storage_mount} nfs auto,noatime,nolock,rsize=32768,wsize=32768 0 0" \
+    >> $NFSROOT/etc/fstab
+  done
+
   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
@@ -580,7 +606,30 @@ $BACKEND_IP:/data/var/cache/pacman /data/var/cache/pacman nfs defaults,nolock,au
 
   chown mythtv:mythtv $NFSROOT/home/mythtv/.mythtv/mysql.txt
 
-#  echo > $NFSROOT/etc/mythtv/Cards
+  # Personal tweak for the author: 
+
+  if [[ $NFSROOT = /nfsroot/fedell || \
+        $NFSROOT = /nfsroot/feevo ]] ; then
+
+    # Change the X resolution for the frontend.
+
+    sed -i 's/^[[:space:]]*Modes.*$/\tModes "1440x900"/g' \
+      $NFSROOT/etc/X11/xorg.conf
+
+    # Swap to the legacy 96xx nvidia driver .
+
+    chroot $NFSROOT mount /data/var/cache/pacman
+    chroot $NFSROOT pacman --noconfirm -R nvidia vdpinfo
+    chroot $NFSROOT pacman --noconfirm -Sf nvidia-96xx
+    chroot $NFSROOT umount /data/var/cache/pacman
+
+    # Change the remote to dvico.
+
+    sed -i 's/mceusb/dvico/g' $NFSROOT/etc/systemconfig
+    chroot $NFSROOT /usr/MythVantage/bin/systemconfig.sh ir
+
+    sed -i 's/UseMythWelcome="1"/UseMythWelcome="0"/g' $NFSROOT/etc/systemconfig
+  fi
 
   create_default_pxelinux_entry
   export_nfsroot
@@ -589,11 +638,8 @@ $BACKEND_IP:/data/var/cache/pacman /data/var/cache/pacman nfs defaults,nolock,au
   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
-
 }
 
-
-
 ##########################################
 ##########################################
 ##
@@ -602,8 +648,6 @@ $BACKEND_IP:/data/var/cache/pacman /data/var/cache/pacman nfs defaults,nolock,au
 ##########################################
 ##########################################
 
-
-
 check_for_default_fe
 find_existing_diskless_fes
 
@@ -612,6 +656,7 @@ get_network_info
 setup_tftpd
 setup_dhcpd
 enable_mysql_and_backend_networking
+find_storage_mounts
 export_mounts
 create_tftpboot_directory
 enable_nfs
-- 
cgit v0.12

