summaryrefslogtreecommitdiffstats
path: root/abs/core/diskless-legacy
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core/diskless-legacy')
-rw-r--r--abs/core/diskless-legacy/PKGBUILD4
-rwxr-xr-xabs/core/diskless-legacy/config_diskless_frontend.bash110
2 files changed, 69 insertions, 45 deletions
diff --git a/abs/core/diskless-legacy/PKGBUILD b/abs/core/diskless-legacy/PKGBUILD
index 6b7cea7..85cfc3a 100644
--- a/abs/core/diskless-legacy/PKGBUILD
+++ b/abs/core/diskless-legacy/PKGBUILD
@@ -2,15 +2,13 @@
# Maintainer: Greg Frost <gregfrost1@bigpond.com>
pkgname=diskless-legacy
pkgver=1
-pkgrel=1
+pkgrel=3
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/diskless-legacy/config_diskless_frontend.bash b/abs/core/diskless-legacy/config_diskless_frontend.bash
index ffd1afd..24d5fc1 100755
--- a/abs/core/diskless-legacy/config_diskless_frontend.bash
+++ b/abs/core/diskless-legacy/config_diskless_frontend.bash
@@ -3,21 +3,18 @@
# frontend can boot from it.
function backtitle() { # no arguments.
- BT="${0##*/}"
- KMV_F1='/KNOPPIX/KnoppMyth-version'
- KMV_F2='/etc/LinHES-release'
- if [ -f "$KMV_F1" ]; then
- BT="-= $(cat $KMV_F1) $BT =-"
- elif [ -f "$KMV_F2" ]; then
- BT="-= $(cat $KMV_F2) $BT =-"
- fi
+ BT="${0##*/}"
+ KMV='/etc/LinHES-release'
+ if [ -f "$KMV" ]; then
+ BT="-= $(cat $KMV) $BT =-"
+ fi
}
function must_be_root() { # no arguments.
- test $(id -u) == 0 && return
- MSG="\Z1ERROR\Zn: This script \Z4should\Zn be run by \Z1root\Zn."
- dialog --backtitle "$BT" --colors --msgbox "$MSG" 5 45
- exit 4
+ test $(id -u) == 0 && return
+ MSG="\Z1ERROR\Zn: This script \Z4should\Zn be run by \Z1root\Zn."
+ dialog --backtitle "$BT" --colors --msgbox "$MSG" 5 45
+ exit 4
}
backtitle
@@ -319,13 +316,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 +380,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 +445,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 +503,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 +536,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
@@ -534,11 +551,12 @@ create_new_nfsroot() {
chroot $NFSROOT /sbin/remove_service.sh nmbd
chroot $NFSROOT /sbin/remove_service.sh smbd
chroot $NFSROOT /sbin/remove_service.sh tftpd
+ chroot $NFSROOT /sbin/remove_service.sh avahi
# 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 +565,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 +604,13 @@ $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
+ # Check if the user has a diskless_tweak.<frontend_name> file in root's
+ # home directory. If they do, run it inside the chroot of the NFS root.
+
+ if [[ -x ~/diskless_tweak.$FRONTEND ]] ; then
+ echo Running tweak file ~/diskless_tweak.$FRONTEND
+ chroot $NFSROOT bash -v ~/diskless_tweak.$FRONTEND
+ fi
create_default_pxelinux_entry
export_nfsroot
@@ -589,11 +619,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 +629,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 +637,7 @@ get_network_info
setup_tftpd
setup_dhcpd
enable_mysql_and_backend_networking
+find_storage_mounts
export_mounts
create_tftpboot_directory
enable_nfs