summaryrefslogtreecommitdiffstats
path: root/abs/core/live-installer/install_functions.sh
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core/live-installer/install_functions.sh')
-rwxr-xr-xabs/core/live-installer/install_functions.sh484
1 files changed, 484 insertions, 0 deletions
diff --git a/abs/core/live-installer/install_functions.sh b/abs/core/live-installer/install_functions.sh
new file mode 100755
index 0000000..0c43c97
--- /dev/null
+++ b/abs/core/live-installer/install_functions.sh
@@ -0,0 +1,484 @@
+#!/bin/bash
+. /etc/profile
+disk=$2
+mountpoint=new_boot
+
+#-------------------------------------------
+MYTHDBUSER=mythtv
+MYTHTVPASSWD=mythtv
+CMDLINE=$(cat /proc/cmdline)
+hostname=`hostname`
+MYSQLCMD_C="mysql -u$MYTHDBUSER -p$MYTHTVPASSWD mythconverg -B --exec"
+BASE=""
+
+function update_db_settings () {
+
+ $MYSQLCMD_C "delete from settings where value='${1}' and hostname=\"$hostname\";"
+ $MYSQLCMD_C "REPLACE INTO settings set value='${1}', data='${2}' , hostname=\"$hostname\";"
+}
+
+function random_theme () {
+THEMES="basic-blue
+basic-green
+basic-red
+basic-purple
+basic-amber"
+
+theme=($THEMES) # Read into array variable.
+
+num_themes=${#theme[*]} # Count how many elements.
+
+pick=${theme[$((RANDOM%num_themes))]}
+echo "Selected $pick as the theme"
+update_db_settings Theme "$pick"
+}
+
+
+function setupremote {
+ mv $BASE/etc/lircd.conf $BASE/etc/lircd.conf.`date +%Y-%m-%d-%H-%M`
+ if [ -d $TEMPLATES/remotes/$Remotetype ]
+ then
+ cd $TEMPLATES/remotes/$Remotetype
+ for i in lircd*
+ do
+ cat $i >> $BASE/etc/lircd.conf
+ done
+ cp lircrc $BASE/etc/lircrc
+ chmod 755 /etc/lircrc
+ update_db_settings HostRemoteType "$Remotetype"
+ /usr/sbin/lircd -d /dev/lirc0
+ mkdir /root/.mythtv
+ ln -s /etc/lircrc /root/.mythtv/lircrc
+ fi
+}
+
+function scan_for_usb_remote () {
+echo "Scanning for usb receiver/remote"
+while read line
+do
+ USBID=`echo "$line"|cut -f1`
+ lsusb -d "$USBID" > /dev/null 2>/dev/null
+ if [ $? = 0 ]
+ then
+ Remotetype=`echo "$line"|cut -f2`
+ echo "found $Remotetype"
+ setupremote
+ break
+ fi
+done <$BASE/$TEMPLATES/remotes/receiver_usb.id
+}
+
+function rest_of_network () {
+ #netmask
+ echo $CMDLINE | grep -q netmask
+ if [ $? = 0 ]
+ then
+ TEMPVAR=${CMDLINE#*netmask=}
+ NETMASK=${TEMPVAR%% *}
+ /sbin/ifconfig eth0 $IP netmask $NETMASK
+ nm=`/usr/bin/nmconv.py -obits $NETMASK`
+ NETMASK="/$nm $NETMASK"
+ echo $NETMASK
+ update_db_settings HostNETMASK${MYTHDEFAULT} "$NETMASK"
+ else
+ echo "netmask not found"
+ fi
+ #gateway
+ echo $CMDLINE | grep -q gateway
+ if [ $? = 0 ]
+ then
+ TEMPVAR=${CMDLINE#*gateway=}
+ GATEWAY=${TEMPVAR%% *}
+ /sbin/route add default gw $GATEWAY
+ update_db_settings HostGW${MYTHDEFAULT} "$GATEWAY"
+
+ else
+ echo "gateway not found"
+ fi
+
+ #dns
+ echo $CMDLINE | grep -q dns
+ if [ $? = 0 ]
+ then
+ TEMPVAR=${CMDLINE#*dns=}
+ DNS=${TEMPVAR%% *}
+ echo "nameserver $DNS" >> /etc/resolv.conf
+ update_db_settings HostDNS${MYTHDEFAULT} "$DNS"
+ else
+ echo "DNS not found"
+ fi
+}
+
+function init_network {
+ echo $CMDLINE |grep -q netdev
+ if [ $? = 0 ]
+ then
+ TEMPVAR=${CMDLINE#*netdev=}
+ MYTHDEFAULT=${TEMPVAR%% *}
+ else
+ MYTHDEFAULT="eth0"
+ fi
+
+
+
+ echo $CMDLINE | grep -q ip
+ if [ $? = 0 ]
+ then
+ update_db_settings HostDefaulteth0 0
+ update_db_settings HostDefault${MYTHDEFAULT} 1
+
+ update_db_settings HostActiveonbooteth0 0
+ update_db_settings HostActiveonboot${MYTHDEFAULT} 1
+ update_db_settings HostNetDevice ${MYTHDEFAULT}
+
+ TEMPVAR=${CMDLINE#*ip=}
+ IP=${TEMPVAR%% *}
+ if [ x$IP = xdhcp ]
+ then
+ /sbin/dhcpcd $MYTHDEFAULT
+ update_db_settings HostUseDHCP${MYTHDEFAULT} 0
+ else
+ /sbin/ifconfig ${MYTHDEFAULT} $IP
+ update_db_settings HostUseDHCP${MYTHDEFAULT} 1
+ update_db_settings HostIP${MYTHDEFAULT} "$IP"
+ rest_of_network
+ fi
+ fi
+}
+
+function init_remote {
+ echo $CMDLINE | grep -q remoteport
+ if [ $? = 0 ]
+ then
+ TEMPVAR=${CMDLINE#*remoteport=}
+ REMOTEPORT=${TEMPVAR%% *}
+ if [ x"$ReceiverType" = "xSerial" ]
+ then
+ if [ -e /dev/$REMOTEPORT ]
+ then
+ /usr/bin/setserial /dev/$REMOTEPORT uart none
+ /sbin/modprobe lirc_serial
+ update_db_settings HostReceiverType Serial
+ update_db_settings HostSerialPortlirc "$REMOTEPORT"
+ fi
+ fi
+
+ fi
+
+ echo $CMDLINE | grep -q remote
+ if [ $? = 0 ]
+ then
+ TEMPVAR=${CMDLINE#*remote=}
+ Remotetype=${TEMPVAR%% *}
+ setupremote
+ else
+ scan_for_usb_remote
+ fi
+}
+
+#-----------------------
+
+#set -x
+
+partition_it () {
+ROOT=$1
+DATA=$2
+SWAP=$3
+
+if [ ! x$SWAP = xNO ]
+ then
+ SWAPLINE=",$SWAP,S"
+ MKSWAPCMD="mkswap /dev/${disk}2"
+ else
+ SWAPLINE=",0,0"
+ MKSWAPCMD=""
+ fi
+
+if [ x$DATA = xALL ]
+then
+ DATALINE=",,,"
+ EXTRALINE=""
+else
+ DATALINE=",$DATA,,"
+ EXTRALINE=",0,,"
+fi
+sfdisk /dev/$disk -uM << EOF
+,$1,,*
+$SWAPLINE
+$DATALINE
+$EXTRALINE
+;
+EOF
+
+$MKSWAPCMD
+#sfdisk -l /dev/$disk
+}
+
+
+function fscmd () {
+
+case $1 in
+ reiserfs) FSCMDC="mkreiserfs -q -l ROOT"
+ ;;
+
+ xfs) FSCMDC="mkfs -t $1 -f"
+ ;;
+ ext3) FSCMDC="mkfs.ext3"
+ ;;
+ jfs) FSCMDC="mkfs.jfs -q "
+ ;;
+ *) FSCMDC="echo $1"
+ ;;
+
+esac
+}
+
+format_it () {
+ fscmd $1
+ $FSCMDC /dev/${disk}1| tr -s [:cntrl:] \\n
+ fscmd $2
+ $FSCMDC /dev/${disk}3| tr -s [:cntrl:] \\n
+}
+
+mount_it () {
+ if [ ! -d \/$mountpoint ]
+ then
+ mkdir \/$mountpoint
+ fi
+ mount /dev/${disk}1 \/$mountpoint
+ mkdir \/$mountpoint/data
+ mount /dev/${disk}3 \/$mountpoint/data
+}
+
+unmount_it () {
+ umount /dev/${disk}1
+ umount /dev/${disk}3
+}
+
+#linux-live version of copy_it
+# copy_it () {
+# #rsync -rvp --exclude=/mnt --exclude=\/$mountpoint / \/$mountpoint
+# lzmdir=`find /mnt/live/mnt -name data.lzm -execdir pwd \;| tail -1`
+# cd $lzmdir
+# if [ x$1 = xALL ]
+# then
+# LIST=`ls *.lzm`
+# else
+# LIST=`echo $1 | tr , " " `
+# fi
+#
+# for i in $LIST
+# do
+# echo "Transferring $i"
+# lzm2dir $i \/$mountpoint
+# done
+# for i in sys proc dev tmp
+# do
+# mkdir /$mountpoint/$i
+#
+# done
+# chmod 777 /$mountpoint/tmp
+# mknod /$mountpoint/dev/null c 1 3
+# mknod /$mountpoint/dev/null c 1 5
+# mknod /$mountpoint/dev/console c 5 1
+# chmod +s /$mountpoint/usr/bin/Xorg
+# chmod +s /$mountpoint/usr/bin/crontab
+# chmod +s /$mountpoint/usr/bin/sudo
+# chmod +s /$mountpoint/bin/mount
+#
+# }
+
+copy_it () {
+
+ if [ x$1 = xALL ]
+ then
+ echo "Transferring system"
+ unsquashfs -f -d /$mountpoint /.livesys/medium/system.sqf
+ else
+ echo "Upgrading system"
+ unsquashfs -e $1 -f -d /$mountpoint /.livesys/medium/system.sqf
+ fi
+
+ for i in sys proc dev tmp
+ do
+ mkdir /$mountpoint/$i
+
+ done
+ chmod 777 /$mountpoint/tmp
+ mknod /$mountpoint/dev/null c 1 3
+ mknod /$mountpoint/dev/null c 1 5
+ mknod /$mountpoint/dev/console c 5 1
+ chmod +s /$mountpoint/usr/bin/Xorg
+ chmod +s /$mountpoint/usr/bin/crontab
+ chmod +s /$mountpoint/usr/bin/sudo
+ chmod +s /$mountpoint/bin/mount
+
+}
+
+
+device_node () {
+ cd /dev
+ mknod hda b 3 0
+ mknod hda1 b 3 1
+ mknod hda2 b 3 2
+ mknod hda3 b 3 3
+ mknod hda4 b 3 4
+ mknod hda5 b 3 5
+ mknod hda6 b 3 6
+ mknod hda7 b 3 7
+ mknod hda8 b 3 8
+ mknod sda b 8 0
+ mknod sda1 b 8 1
+ mknod sda2 b 8 2
+ mknod sda3 b 8 3
+ mknod sda4 b 8 4
+ mknod sda5 b 8 5
+ mknod sda6 b 8 6
+ mknod sda7 b 8 7
+ mknod sda8 b 8 8
+ mknod sdb b 8 16
+ mknod sdb1 b 8 17
+ mknod sdb2 b 8 18
+ mknod sdb3 b 8 19
+ mknod sdb4 b 8 20
+ mknod sdb5 b 8 21
+ mknod sdb6 b 8 22
+ mknod sdb7 b 8 23
+ mknod sdb8 b 8 24
+ cd -
+ }
+
+
+function create_fstab()
+{
+echo "creating fstab"
+cat > /$mountpoint/etc/fstab << EOF
+# <file system> <dir> <type> <options> <dump> <pass>
+none /dev/pts devpts defaults 0 0
+none /dev/shm tmpfs defaults 0 0
+/dev/cdrom /media/cdrom auto ro,user,noauto,unhide 0 0
+/dev/dvd /media/dvd auto ro,user,noauto,unhide 0 0
+UUID=ROOTUID / auto defaults 0 1
+UUID=DATAUID /data auto defaults 0 1
+UUID=SWAPUID swap swap defaults 0 0
+EOF
+
+
+}
+
+
+function find_uuid() {
+ uuid=`blkid -s UUID /dev/$1 |cut -d= -f2|cut -d\" -f2`
+ echo $uuid for $1
+ FOUNDUUID=$uuid
+
+}
+
+
+case $1 in
+ partition_it )
+ #drive ROOT DATA(ALL) SWAP(NO)
+ for i in `mount | grep $disk | awk ' { print $1 } '`
+ do
+ umount $i
+ done
+ swap=`cat /etc/fstab |grep $disk|grep swap|awk ' { print $1 } '`
+ swapoff $swap
+ partition_it $3 $4 $5
+ exit 0
+
+ ;;
+ format_it )
+ device_node
+
+ format_it $3 $4
+ exit 0
+ ;;
+ mount_it )
+ mount_it
+ ;;
+ copy_it )
+ copy_it $3
+
+ ;;
+
+
+ fstab_fix_it)
+ echo $@ >> /tmp/fstab.input
+ if [ ! -f /$mountpoint/etc/fstab ]
+ then
+ create_fstab
+ fi
+ if [ x$5 = xUPGRADE ]
+ then
+ cp -f /tmp/etc/fstab /$mountpoint/etc/fstab
+ fi
+
+# if [ x$5 = xFULL_INSTALL ]
+# then
+ #search for UUID
+ FOUNDUUID=""
+ find_uuid ${2}1
+ ROOTUUID=$FOUNDUUID
+ echo "--"
+ echo $ROOTUUID
+ echo "--"
+ FOUNDUUID=""
+ find_uuid ${2}2
+ SWAPUUID=$FOUNDUUID
+
+ FOUNDUUID=""
+ find_uuid ${2}3
+ DATAUUID=$FOUNDUUID
+# fi
+
+
+
+
+
+ sed -i -e "s/.*\/\ .*$/UUID=$ROOTUUID \/ auto defaults,noatime 0 1/g" /$mountpoint/etc/fstab
+ sed -i -e "s/.*\/data\ .*$/UUID=$DATAUUID \/data auto defaults,noatime 0 1/g" /$mountpoint/etc/fstab
+ sed -i -e "s/.*swap\ .*$/UUID=$SWAPUUID swap swap defaults 0/g" /$mountpoint/etc/fstab
+
+# sed -e "s/\ \/\ .*$/\ \/ $3 defaults 0 1/g"\
+# -e "s/\ \/data .*$/\ \/data $4 defaults 0 1/g" /$mountpoint/etc/fstab > /tmp/fstab
+#
+#
+# cp /tmp/fstab /$mountpoint/etc/fstab
+ ;;
+
+ grub_it )
+ #linux-live
+ #grub-install --recheck --no-floppy --root-directory=/$mountpoint /dev/$disk
+ grub-install --recheck --no-floppy --root-directory=/$mountpoint "(hd0)"
+
+
+ #fixing fstab
+# if [ ! -f /$mountpoint/etc/fstab ]
+# then
+# cp -f /$mountpoint/etc/fstab.install /$mountpoint/etc/fstab
+# fi
+# sed -e s/hda/$disk/g /$mountpoint/etc/fstab > /tmp/newfstab
+# cp -f /tmp/newfstab /$mountpoint/etc/fstab
+
+ #fixing grub/menu.1st
+ FOUNDUUID=""
+ find_uuid ${disk}1
+ ROOTUUID=$FOUNDUUID
+# sed -e s/hda/$disk/g /$mountpoint/boot/grub/menu.lst > /tmp/menu.lst
+
+ sed -i -e "s/root=.\S*/root=\/dev\/disk\/by-uuid\/$ROOTUUID/g" /$mountpoint/boot/grub/menu.lst
+
+
+#cp -f /tmp/menu.lst /$mountpoint/boot/grub/menu.lst
+ #cp /etc/X11/xorg.conf /$mountpoint/etc/X11/xorg.conf
+ mkinitcpio -g /$mountpoint/boot/kernel26.img
+ ;;
+ umount_it)
+
+ umount \/$mountpoint/data
+ umount \/$mountpoint
+esac
+
+
+