mirror of
				https://github.com/iiab/iiab.git
				synced 2025-03-09 15:40:17 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			283 lines
		
	
	
	
		
			6.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			283 lines
		
	
	
	
		
			6.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| #!/bin/bash
 | |
| EXTMEDIA=`ls -la /mnt/*`
 | |
| MMC0=`ls /dev | grep mmcblk0 | wc | awk '{print $1}'`
 | |
| MMC1=`ls /dev | grep mmcblk1 | wc | awk '{print $1}'`
 | |
| USB=`ls /dev | grep sd | wc | awk '{print $1}'`
 | |
| 
 | |
| function warn()
 | |
| {
 | |
|     echo "######################################################"
 | |
|     echo ""
 | |
|     echo ""
 | |
|     echo "WARNING external SD-card or hard-disk NOT detected"
 | |
|     echo "Please insert SD-card or connect your external hard"
 | |
|     echo "disk before running bootsrap-xo"
 | |
|     echo ""
 | |
|     echo ""
 | |
|     echo "#####################################################"
 | |
|     echo ""
 | |
|     read -p "Press [Enter] key to shutdown"
 | |
|     echo ""
 | |
|     echo ""
 | |
|     echo "shutting down in 5 seconds"
 | |
|     sleep 5
 | |
|     shutdown now
 | |
|     exit 1
 | |
| }
 | |
| 
 | |
| function unsupported()
 | |
| {
 | |
|     echo "#####################################################"
 | |
|     echo ""
 | |
|     echo ""
 | |
|     echo "WARNING detected external media partition layout is"
 | |
|     echo "unsuppoted. Please try a different SD-card or usbkey"
 | |
|     echo ""
 | |
|     echo ""
 | |
|     echo "#####################################################"
 | |
|     echo ""
 | |
|     read -p "Press [Enter] key to shutdown"
 | |
|     echo ""
 | |
|     echo ""
 | |
|     echo "shutting down in 5 seconds"
 | |
|     sleep 5
 | |
|     shutdown now
 | |
|     exit 1
 | |
| }
 | |
| 
 | |
| function library_1st()
 | |
| {
 | |
|     echo "#####################################################"
 | |
|     echo ""
 | |
|     echo ""
 | |
|     echo "WARNING detected 2 USB storage units. In order to"
 | |
|     echo "protect the data on the one that will not become a"
 | |
|     echo "permanent part of the XS server, please ensure the"
 | |
|     echo "premanent drive is inserted in a slot when turning."
 | |
|     echo "on your XO. Please insert the usb drive containing"
 | |
|     echo "the XSCE installaton media before typing 'bootstrap-xo'"
 | |
|     echo ""
 | |
|     echo ""
 | |
|     echo "#####################################################"
 | |
|     echo ""
 | |
|     echo ""
 | |
|     read -p "Press [Enter] key to shutdown"
 | |
|     echo ""
 | |
|     echo ""
 | |
|     echo "shutting down in 5 seconds"
 | |
|     sleep 5
 | |
|     shutdown now
 | |
|     exit 1
 | |
| }
 | |
| 
 | |
| function get_devices()
 | |
| {
 | |
|     FOUNDDEVS=
 | |
|     BLKID=`blkid | awk '{split($0,a,":"); print a[1]}'`
 | |
|     for blk in $BLKID; do 
 | |
|         FOUNDDEVS="$FOUNDDEVS $blk" 
 | |
|     done
 | |
| }
 | |
| 
 | |
| function get_root_device()
 | |
| {
 | |
|     ROOTDEV=
 | |
|     BLKID=`blkid | awk '{split($0,a,":"); print a[1]}'`
 | |
|     for blk in $BLKID; do 
 | |
|         ROOTDEV=`echo $blk | grep root` 
 | |
|     done
 | |
| }
 | |
| 
 | |
| function find_repo()
 | |
| {
 | |
|     MNT=`mount | grep dev/sdb | awk '{print $3}'`
 | |
|     if ! [ -d $MNT/xs-repo ]; then
 | |
|         library_1st
 | |
|     fi
 | |
| }
 | |
| 
 | |
| function togglepart()
 | |
| {
 | |
|     cat <<EOF | fdisk /dev/mmcblk0
 | |
| t
 | |
| 83
 | |
| w
 | |
| EOF
 | |
|     partprobe $MEDIADEV
 | |
|     mkfs.ext4 -L library $MEDIADEV
 | |
|     MEDIADEV2=$MEDIADEV
 | |
|     MEDIAMNT=/library
 | |
| }
 | |
| 
 | |
| function togglepart-usb()
 | |
| {
 | |
|     cat <<EOF | fdisk /dev/sda
 | |
| t
 | |
| 83
 | |
| w
 | |
| EOF
 | |
|     partprobe $MEDIADEV2
 | |
|     mkfs.ext4 -L library $MEDIADEV2
 | |
|     MEDIAMNT=/mnt/usb0
 | |
| }
 | |
| 
 | |
| function partition_usb_hd()
 | |
| {
 | |
|     cat <<EOF | fdisk /dev/sda
 | |
| n
 | |
| t
 | |
| 83
 | |
| w
 | |
| EOF
 | |
|     partprobe $MEDIADEV2
 | |
|     mkfs.ext4 -L library $MEDIADEV2
 | |
|     MEDIAMNT=/mnt/usb0
 | |
| }
 | |
| 
 | |
| function find_repo2()
 | |
| {
 | |
|     echo "findrepo2"
 | |
|     maybe=""
 | |
|     for parts in `ls -la /dev/sd*1`; do
 | |
|         maybe=`findmnt -n -o TARGET -S $parts`
 | |
|         echo "maybe is $maybe"
 | |
|         if ! [ -d $maybe/xs-repo ]; then
 | |
|             MEDIADEV2="/dev/$parts"
 | |
|             break
 | |
|         fi
 | |
|     done
 | |
| }
 | |
| 
 | |
| ##### routine starts here #####
 | |
| 
 | |
| get_devices
 | |
| DEVS=`echo $FOUNDDEVS | wc | awk '{print $1}'`
 | |
| echo "found block devices $FOUNDDEVS"
 | |
| echo "found $MMC0 character devices for mmcblk0"
 | |
| echo "found $MMC1 character devices for mmcblk1"
 | |
| 
 | |
| if [ $MMC0 = 5 ]; then
 | |
|     if [ $MMC1 = 1 ]; then
 | |
|         unsupported
 | |
|     elif ! [ -b /dev/mmcblk1p1 ]; then
 | |
|         unsupported
 | |
|     fi
 | |
|     if ! [ -n $MMC0 ]; then
 | |
|         MEDIADEV=/dev/mmcblk1p1
 | |
|     fi
 | |
| fi
 | |
| 
 | |
| if [ $MMC1 = 5 ]; then
 | |
|     if [ $MMC0 = 1 ]; then
 | |
|         unsupported
 | |
|     elif ! [ -b /dev/mmcblk0p1 ]; then
 | |
|         unsupported
 | |
|     fi
 | |
|     if ! [ -n $MMC1 ]; then
 | |
|         MEDIADEV=/dev/mmcblk0p1
 | |
|     fi
 | |
| fi
 | |
| 
 | |
| MEDIASTRING=`blkid | grep $MEDIADEV` 
 | |
| echo "found $MEDIASTRING"
 | |
| for i in $MEDIASTRING; do
 | |
|     test=`echo $i | awk '{split($0,a,"="); print a[1]}'`
 | |
|     test2=`echo $i | awk '{split($0,a,"="); print a[2]}' | sed -e 's/"//' | sed -e 's/"//'`
 | |
|     echo "test $test"
 | |
|     echo "test2 $test2"
 | |
|     case $test in 
 | |
|         "UUID")
 | |
|             echo "$MEDIADEV is $i"
 | |
|         ;;
 | |
|         "TYPE")
 | |
|             if [ $test2 = "vfat" ]; then
 | |
|                 MNT=`mount | grep $MEDIADEV | awk '{print $3}'`
 | |
|                 echo "unmounting $MNT"
 | |
|                 if [ x$MNT != x ]; then
 | |
|                     umount $MNT
 | |
|                 fi
 | |
|                 echo "calling togglepart"
 | |
|                 togglepart
 | |
|                 break
 | |
|             else
 | |
|                 ext_ver=`echo $test2 | grep ext`
 | |
| 	        echo "test ext_mmc $test2 $ext_ver"
 | |
|                 if ! [ -z $ext_ver ];then
 | |
| 		    echo "found ext2|3|4 filesystem on external SD-card"
 | |
| 		    MEDIAMNT=/library
 | |
|                     MEDIADEV2=$MEDIADEV
 | |
|                     break
 | |
|                 else 
 | |
| 		    echo "ext2|3|4 not found" 
 | |
|                 fi
 | |
| 	    fi
 | |
|         ;;  
 | |
|     esac
 | |
| done
 | |
| 
 | |
| echo "usb is $USB "    
 | |
| if [ $USB = 0 ];then
 | |
|     echo "no external usb media found"
 | |
| elif [ $USB -g 2 ]; then
 | |
|     find_repo2
 | |
| else
 | |
|     MEDIAMNT=/mnt/usb0
 | |
|     MEDIADEV2=/dev/sda1
 | |
| fi
 | |
| 
 | |
| if [ -z $MEDIADEV2 ];then
 | |
|     echo "DONE - nothing to do"
 | |
|     warn
 | |
| else
 | |
|     echo "media dev is: $MEDIADEV2"
 | |
| fi
 | |
| 
 | |
| if ! [ -c $MEDIADEV2 ];then
 | |
| # TODO check parts on parent
 | |
| # then call partition_usb_hd
 | |
|     warn
 | |
| fi
 | |
| 
 | |
| echo "cleaning fstab"
 | |
| sed -i '/swap/d' /etc/fstab
 | |
| sed -i '/usb0/d' /etc/fstab
 | |
| sed -i '/library/d' /etc/fstab
 | |
| 
 | |
| if [ -d /library ]; then
 | |
|     echo "saving old /library as /library.save"
 | |
|     mv /library /library.save
 | |
| fi
 | |
| 
 | |
| label=`e2label $MEDIADEV2`
 | |
| if [ -z $label ];then
 | |
|     e2label $MEDIADEV2 library
 | |
| fi
 | |
| 
 | |
| if [ $MEDIADEV2 = /dev/sda1 ];then
 | |
|     ln -s /mnt/usb0 /library
 | |
| else
 | |
|     mkdir /library
 | |
| fi
 | |
| 
 | |
| uuid=`blkid -s UUID $MEDIADEV2 | gawk '{print $2}'`
 | |
| echo UUID is $uuid
 | |
| echo "populating fstab for $MEDIADEV2 using $uuid"
 | |
| 
 | |
| echo "$uuid $MEDIAMNT	auto	defaults,noatime 	0 0" >> /etc/fstab
 | |
| echo "mounting $uuid at $MEDIAMNT" 
 | |
| mount -a
 | |
| 
 | |
| if ! [ -d $MEDIAMNT/swap ]; then
 | |
|     mkdir $MEDIAMNT/swap
 | |
| fi
 | |
| 
 | |
| echo "creating swap.img"
 | |
| dd if=/dev/zero of=$MEDIAMNT/swap/swap.img bs=1024 count=10480
 | |
| mkswap $MEDIAMNT/swap/swap.img
 | |
| chown root:root $MEDIAMNT/swap/swap.img
 | |
| echo "$MEDIAMNT/swap/swap.img swap 	swap	defaults 0 0" >> /etc/fstab
 | |
| 
 | |
| swapon $MEDIAMNT/swap/swap.img       
 | |
|    
 | |
| exit 0
 | |
| 
 |