diff options
Diffstat (limited to 'abs/core/live-installer/install_functions.sh')
-rwxr-xr-x | abs/core/live-installer/install_functions.sh | 484 |
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 + + + |