1 ###############################################################################
2 # FULL BACKUP UYILITY FOR ORIGINAL IMAGE FOR ALL VU+ MODELS #
3 # VU+ UNO, VU+ SOLO, VU+ SOLO2, VU+ DUO, VU+ ULTIMO, VU+ DUO2 #
4 # MAKES A FULLBACK-UP READY FOR FLASHING. #
6 # Pedro_Newbie (backupsuite@outlook.com) #
7 ###############################################################################
12 ###################### DEFINE CLEAN-UP ROUTINE ################################
15 umount /tmp/bi/root > /dev/null 2>&1
16 rmdir /tmp/bi/root > /dev/null 2>&1
17 rmdir /tmp/bi > /dev/null 2>&1
18 rm -rf "$WORKDIR" > /dev/null 2>&1
21 ###################### BIG OOPS!, HOLY SH... (SHELL SCRIPT :-))################
25 $SHOW "message15" # Image creation FAILED!
31 ########################## DECLARATION OF VARIABLES ###########################
32 VERSION="Version 12.5 for VU+ Original Image 2.1 - 06-08-2013"
35 DATE=`date +%Y%m%d_%H%M`
36 IMAGEVERSION=`date +%Y%m%d`
37 MKFS=/usr/sbin/mkfs.ubifs
38 NANDDUMP=/usr/sbin/nanddump
39 UBINIZE=/usr/sbin/ubinize
42 UBINIZE_ARGS="-m 2048 -p 128KiB"
45 ################### START THE LOGFILE /tmp/BackupSuite.log ####################
46 echo "Plugin version = $VERSION" > /tmp/BackupSuite.log
47 echo "Back-up media = $MEDIA" >> /tmp/BackupSuite.log
48 df -h "$MEDIA" >> /tmp/BackupSuite.log
49 echo "Back-up date_time = $DATE" >> /tmp/BackupSuite.log
50 echo "Working directory = $WORKDIR" >> /tmp/BackupSuite.log
52 ######################### TESTING FOR UBIFS OR JFFS2 ##########################
53 if grep rootfs /proc/mounts | grep ubifs > /dev/null; then
56 $SHOW "message01" #NO UBIFS, THEN JFFS2 BUT NOT SUPPORTED ANYMORE
60 ####### TESTING IF ALL THE TOOLS FOR THE BUILDING PROCESS ARE PRESENT #########
61 if [ ! -f $NANDDUMP ] ; then
62 echo -n "$NANDDUMP " ; $SHOW "message05" # nanddump not found.
63 echo "NO NANDDUMP FOUND, ABORTING" >> /tmp/BackupSuite.log
66 if [ ! -f $MKFS ] ; then
67 echo -n "$MKFS " ; $SHOW "message05" # mkfs.ubifs not found.
68 echo "NO MKFS.UBIFS FOUND, ABORTING" >> /tmp/BackupSuite.log
71 if [ ! -f $UBINIZE ] ; then
72 echo -n "$UBINIZE " ; $SHOW "message05" # ubinize not found.
73 echo "NO UBINIZE FOUND, ABORTING" >> /tmp/BackupSuite.log
77 ########## TESTING WHICH BRAND AND MODEL SATELLITE RECEIVER IS USED ###########
78 if [ -f /proc/stb/info/vumodel ] ; then
79 MODEL=$( cat /proc/stb/info/vumodel )
80 MKUBIFS_ARGS="-m 2048 -e 126976 -c 4096 -F"
82 MAINDEST="$MEDIA/fullbackup_OI_2.1_$MODEL/$DATE/vuplus/$MODEL"
84 echo "Destination = $MAINDEST" >> /tmp/BackupSuite.log
85 ######################### NO SUPPORTED RECEIVER FOUND #########################
87 $SHOW "message01" # No supported receiver found!
91 ############# START TO SHOW SOME INFORMATION ABOUT BRAND & MODEL ##############
93 echo -n "$SHOWNAME " | tr a-z A-Z # Shows the receiver brand and model
94 $SHOW "message02" # BACK-UP TOOL FOR MAKING A COMPLETE BACK-UP
97 echo "Pedro_Newbie (e-mail: backupsuite@outlook.com)"
99 $SHOW "message03" # Please be patient, ... will take about 5-7 minutes
102 #exit 0 #USE FOR DEBUGGING/TESTING
105 ##################### PREPARING THE BUILDING ENVIRONMENT ######################
106 rm -rf "$WORKDIR" # GETTING RID OF THE OLD REMAINS IF ANY
107 echo "Remove directory = $WORKDIR" >> /tmp/BackupSuite.log
108 mkdir -p "$WORKDIR" # MAKING THE WORKING FOLDER WHERE EVERYTHING HAPPENS
109 echo "Recreate directory = $WORKDIR" >> /tmp/BackupSuite.log
110 mkdir -p /tmp/bi/root
111 echo "Create directory = /tmp/bi/root" >> /tmp/BackupSuite.log
113 mount --bind / /tmp/bi/root
116 ####################### START THE REAL BACK-UP PROCESS ########################
117 #------------------------------------------------------------------------------
118 ############################# MAKING UBINIZE.CFG ##############################
119 echo \[ubifs\] > "$WORKDIR/ubinize.cfg"
120 echo mode=ubi >> "$WORKDIR/ubinize.cfg"
121 echo image="$WORKDIR/root.ubi" >> "$WORKDIR/ubinize.cfg"
122 echo vol_id=0 >> "$WORKDIR/ubinize.cfg"
123 echo vol_type=dynamic >> "$WORKDIR/ubinize.cfg"
124 echo vol_name=rootfs >> "$WORKDIR/ubinize.cfg"
125 echo vol_flags=autoresize >> "$WORKDIR/ubinize.cfg"
126 echo " " >> /tmp/BackupSuite.log
127 echo "UBINIZE.CFG CREATED WITH THE CONTENT:" >> /tmp/BackupSuite.log
128 cat "$WORKDIR/ubinize.cfg" >> /tmp/BackupSuite.log
129 touch "$WORKDIR/root.ubi"
130 chmod 644 "$WORKDIR/root.ubi"
131 echo "--------------------------" >> /tmp/BackupSuite.log
133 ############################# MAKING ROOT.UBI(FS) ############################
134 $SHOW "message06a" #Create: root.ubifs
135 echo "Start creating root.ubi" >> /tmp/BackupSuite.log
136 $MKFS -r /tmp/bi/root -o "$WORKDIR/root.ubi" $MKUBIFS_ARGS
137 if [ -f "$WORKDIR/root.ubi" ] ; then
138 echo "ROOT.UBI MADE:" >> /tmp/BackupSuite.log
139 ls -e1 "$WORKDIR/root.ubi" >> /tmp/BackupSuite.log
141 echo "$WORKDIR/root.ubi NOT FOUND" >> /tmp/BackupSuite.log
145 echo "Start UBINIZING" >> /tmp/BackupSuite.log
146 $UBINIZE -o "$WORKDIR/root.ubifs" $UBINIZE_ARGS "$WORKDIR/ubinize.cfg" >/dev/null
147 chmod 644 "$WORKDIR/root.ubifs"
148 if [ -f "$WORKDIR/root.ubifs" ] ; then
149 echo "ROOT.UBIFS MADE:" >> /tmp/BackupSuite.log
150 ls -e1 "$WORKDIR/root.ubifs" >> /tmp/BackupSuite.log
152 echo "$WORKDIR/root.ubifs NOT FOUND" >> /tmp/BackupSuite.log
156 ############################## MAKING KERNELDUMP ##############################
157 echo "Start creating kerneldump" >> /tmp/BackupSuite.log
158 $SHOW "message07" # Create: kerneldump
159 if [ $MODEL = "solo2" ] || [ $MODEL = "duo2" ]; then
160 $NANDDUMP /dev/mtd2 -q > "$WORKDIR/vmlinux.gz"
162 $NANDDUMP /dev/mtd1 -q > "$WORKDIR/vmlinux.gz"
164 if [ -f "$WORKDIR/vmlinux.gz" ] ; then
165 echo "VMLINUX.GZ MADE:" >> /tmp/BackupSuite.log
166 ls -e1 "$WORKDIR/vmlinux.gz" >> /tmp/BackupSuite.log
168 echo "$WORKDIR/vmlinux.gz NOT FOUND" >> /tmp/BackupSuite.log
171 echo "--------------------------" >> /tmp/BackupSuite.log
173 ############ MOVING THE BACKUP TO THE RIGHT PLACE(S) ##########################
175 echo "Created directory = $MAINDEST" >> /tmp/BackupSuite.log
176 if [ $MODEL = "solo2" ] || [ $MODEL = "duo2" ]; then
177 mv "$WORKDIR/root.ubifs" "$MAINDEST/root_cfe_auto.bin"
179 mv "$WORKDIR/root.ubifs" "$MAINDEST/root_cfe_auto.jffs2"
181 mv "$WORKDIR/vmlinux.gz" "$MAINDEST/kernel_cfe_auto.bin"
182 if [ $MODEL != "solo" -a $MODEL != "duo" ]; then
183 touch "$MAINDEST/reboot.update"
185 if [ -f "$MAINDEST/root_cfe_auto"* -a -f "$MAINDEST/kernel_cfe_auto.bin" ] ; then
186 echo " " >> /tmp/BackupSuite.log
187 echo "BACK-UP MADE SUCCESSFULLY IN: $MAINDEST" >> /tmp/BackupSuite.log
189 $SHOW "message10" ; echo "$MAINDEST" # USB Image created in:
190 $SHOW "message23" # "The content of the folder is:"
191 ls "$MAINDEST" -e1h | awk {'print $3 "\t" $7'}
192 ls -e1 "$MAINDEST" >> /tmp/BackupSuite.log
198 #HERE NEW PART ABOUT NO FOLDER VUPLUS/MODEL WHEN MADE ON HARDDISK OR REPLACEMENT
199 if [ $HARDDISK != 1 ]; then
200 mkdir -p "$EXTRA/$MODEL"
201 echo "Created directory = $EXTRA/$MODEL" >> /tmp/BackupSuite.log
202 cp -r "$MAINDEST" "$EXTRA" #copy the made back-up to images
203 $SHOW "message11" ; echo "$EXTRA/$MODEL" # and there is made an extra copy in:
207 $SHOW "message12" # directions for restoring the image for a vu+
209 #################### CHECKING FOR AN EXTRA BACKUP STORAGE #####################
210 if [ $HARDDISK = 1 ]; then # looking for a valid usb-stick
211 for candidate in /media/sd* /media/mmc* /media/usb* /media/*
213 if [ -f "${candidate}/"*[Bb][Aa][Cc][Kk][Uu][Pp][Ss][Tt][Ii][Cc][Kk]* ]
215 TARGET="${candidate}"
218 if [ "$TARGET" != "XX" ] ; then
220 $SHOW "message17" # Valid USB-flashdrive detected, making an extra copy
222 TOTALSIZE="$(df -h "$TARGET" | tail -n 1 | awk {'print $2'})"
223 FREESIZE="$(df -h "$TARGET" | tail -n 1 | awk {'print $4'})"
224 $SHOW "message09" ; echo -n "$TARGET ($TOTALSIZE, " ; $SHOW "message16" ; echo "$FREESIZE)"
225 rm -rf "$TARGET/vuplus/$MODEL"
226 mkdir -p "$TARGET/vuplus/$MODEL"
227 cp -r "$MAINDEST" "$TARGET/vuplus/"
228 echo " " >> /tmp/BackupSuite.log
229 echo "MADE AN EXTRA COPY IN: $TARGET" >> /tmp/BackupSuite.log
230 df -h "$TARGET" >> /tmp/BackupSuite.log
232 $SHOW "message19" # Backup finished and copied to your USB-flashdrive
235 ######################### END OF EXTRA BACKUP STORAGE #########################
238 ################## CLEANING UP AND REPORTING SOME STATISTICS ##################
241 DIFF=$(( $END - $START ))
242 MINUTES=$(( $DIFF/60 ))
243 SECONDS=$(( $DIFF-(( 60*$MINUTES ))))
244 if [ $SECONDS -le 9 ] ; then
247 $SHOW "message24" ; echo -n "$MINUTES.$SECONDS " ; $SHOW "message25"
248 echo "BACKUP FINISHED IN $MINUTES.$SECONDS MINUTES" >> /tmp/BackupSuite.log
250 #-----------------------------------------------------------------------------