/[clonezilla-sysresccd]/trunk/create-clonezilla-sysresccd/files/cust-menu
ViewVC logotype

Annotation of /trunk/create-clonezilla-sysresccd/files/cust-menu

Parent Directory Parent Directory | Revision Log Revision Log


Revision 134 - (hide annotations)
Fri Sep 24 12:58:07 2010 UTC (13 years, 6 months ago) by sng
File size: 10136 byte(s)
- printable.php - Removing <link> tags
- cust-menu - fixing copying custom boot image and
  adding relative (to /home/partimag) files support

1 sng 47 #!/bin/bash
2     ##############################################################################
3     # #
4     # cust-menu, (C) 2007-2010 S. Georgaras <sng@hellug.gr> #
5     # #
6     # This file is part of Clonezilla-SysRescCD. #
7     # #
8     # Clonezilla-SysRescCD is free software: you can redistribute it and/or #
9     # modify it under the terms of the GNU General Public License as published #
10     # by the Free Software Foundation, either version 2 of the License, or #
11     # (at your option) any later version. #
12     # #
13     # Clonezilla-SysRescCD is distributed in the hope that it will be useful, #
14     # but WITHOUT ANY WARRANTY; without even the implied warranty of #
15     # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
16     # GNU General Public License for more details. #
17     # #
18     # You should have received a copy of the GNU General Public License along #
19     # with Clonezilla-SysRescCD. If not, see <http://www.gnu.org/licenses/>. #
20     # #
21     ##############################################################################
22    
23 sng 93 function findCFGfile(){
24 sng 47 if [ -e isolinux-restore-cd.cfg ];then
25 sng 93 templateCFG="./isolinux-restore-cd.cfg"
26 sng 47 elif [ -r /live/image/restorecd/isolinux-restore-cd.cfg ];then
27 sng 93 templateCFG="/live/image/restorecd/isolinux-restore-cd.cfg"
28 sng 47 elif [ -r /tmp/restorecd/isolinux-restore-cd.cfg ];then
29 sng 93 templateCFG="/tmp/restorecd/isolinux-restore-cd.cfg"
30     elif [ -r /restorecd/isolinux-restore-cd.cfg ];then
31     templateCFG="/restorecd/isolinux-restore-cd.cfg"
32 sng 47 else
33     whiptail --backtitle Clonezilla-SysRescCD --title " Execution Error " --msgbox "This is not a stand-alone script and should not be executed by the command line
34    
35     This script will terminate now" 0 0
36     exit 1
37     fi
38     }
39    
40 sng 93 function find2RamCFGfile(){
41 sng 47 if [ -e isolinux-restore-cd-ram.cfg ];then
42 sng 93 templateCFG="./isolinux-restore-cd-ram.cfg"
43 sng 47 elif [ -r /live/image/restorecd/isolinux-restore-cd-ram.cfg ];then
44 sng 93 templateCFG="/live/image/restorecd/isolinux-restore-cd-ram.cfg"
45 sng 47 elif [ -r /tmp/restorecd/isolinux-restore-cd-ram.cfg ];then
46 sng 93 templateCFG="/tmp/restorecd/isolinux-restore-cd-ram.cfg"
47     elif [ -r /restorecd/isolinux-restore-cd-ram.cfg ];then
48     templateCFG="/restorecd/isolinux-restore-cd-ram.cfg"
49 sng 47 else
50     whiptail --backtitle Clonezilla-SysRescCD --title " Execution Error " --msgbox "This is not a stand-alone script and should not be executed by the command line
51    
52     This script will terminate now" 0 0
53     exit 1
54     fi
55     }
56    
57 sng 93 function import_parameters_to_cfg(){
58     # -> $1 - template cfg file
59     # <- $2 - final cfg file
60     local outCFG="$2".tmp
61     # read parameters inserted by the user
62     # they are found in the isolinux.cfg file
63     # created by Clonezilla Live
64     local paramLine=`grep 'append' $2 | sed '2,$d'`
65     local ocs_live_extra_param="$(echo "$paramLine" | sed 's|.*ocs_live_extra_param="\([^"]*\)".*|\1|')"
66     local ocs_live_keymap="$(echo "$paramLine" | sed 's|.*ocs_live_keymap="\([^"]*\)".*|\1|')"
67     local ocs_lang="$(echo "$paramLine" | sed 's|.*ocs_lang="\([^"]*\)".*|\1|')"
68 sng 47
69 sng 93 # replace with current values
70     sed "s|ocs_live_extra_param=\"[^\"]*\"|ocs_live_extra_param=\"$ocs_live_extra_param\"|
71     s|ocs_live_keymap=\"[^\"]*\"|ocs_live_keymap=\"$ocs_live_keymap\"|
72     s|ocs_lang=\"[^\"]*\"|ocs_lang=\"$ocs_lang\"|
73     " $1 > $outCFG && mv $outCFG $2
74     }
75    
76     function copy_PNG_SYSLINUX(){
77 sng 134 local targetPNG=/restorecd/ocswp.png
78     if [ -n "$bootImg" ];then targetPNG="$bootImg";fi
79 sng 93 SYSLINUX_FILE=`echo $finalCFG | sed 's{isolinux{syslinux{g'`
80     SYS=`dirname $finalCFG`
81     sed 's{noprompt {{g' $finalCFG > $SYSLINUX_FILE
82 sng 134 cp "$targetPNG" $SYS
83     cp "$targetPNG" `echo $SYS | sed 's{isolinux{syslinux{g'`
84 sng 93 }
85    
86    
87     type=ISO
88    
89 sng 47 # Parse command-line options
90     while [ $# -gt 0 ]; do
91     case "$1" in
92     -publisher)
93     shift
94     if [ -z "$(echo $1 |grep ^-.)" ]; then
95     # skip the -xx option, in case
96     isoPublisher="$1"
97     shift
98     fi
99     # [ -z "$target_iso_prefix" ] && USAGE && exit 1
100     ;;
101     -V)
102     shift
103     if [ -z "$(echo $1 |grep ^-.)" ]; then
104     # skip the -xx option, in case
105     isoLabel="$1"
106     shift
107     fi
108     # [ -z "$target_iso_prefix" ] && USAGE && exit 1
109     ;;
110 sng 93 -z)
111     type=ZIP
112     shift
113     ;;
114     -o)
115     ORIGINAL_INSERT_MODE=y
116     shift
117     ;;
118 sng 47 *)
119     break;
120     ;;
121     esac
122     done
123    
124    
125    
126    
127    
128     # # #
129     # # #
130     # # # the CFG file can be found as
131 sng 93 # # # /tmp/ocs_isosys*/isolinux/isolinux.cfg
132 sng 47 # # # or
133 sng 93 # # # /home/partimag/ocs_isosys*/isolinux/isolinux.cfg
134 sng 47 # # #
135     # # #
136 sng 84
137 sng 93 if [ "$type" = ISO ];then
138 sng 47 type=ISO
139 sng 95 # finalCFG=/tmp/ocs_isosys*/isolinux/isolinux.cfg
140 sng 93 finalCFG=`find /tmp -name isolinux.cfg`
141 sng 47 else
142     type=ZIP
143 sng 95 # finalCFG=/home/partimag/ocs_isosys*/isolinux/isolinux.cfg
144 sng 93 finalCFG=`find /home/partimag -name isolinux.cfg`
145 sng 47 fi
146    
147 sng 93 if [ ! -e $finalCFG ];then
148     dialog --backtitle Clonezilla-SysRescCD --title " File not found " --msgbox " The original cfg file ($finalCFG) does not exit!!!
149    
150     This script will terminate now" 0 0
151 sng 47
152 sng 93 exit 1
153     fi
154    
155     # Check if -s has been used (only iso)
156     if [ -n "$ORIGINAL_INSERT_MODE" ];then
157 sng 95 # When -s is used, do nothing
158     # findCFGfile
159     # import_parameters_to_cfg $templateCFG $finalCFG
160     # copy_PNG_SYSLINUX
161 sng 93 exit
162     fi
163    
164    
165 sng 47 whiptail --backtitle Clonezilla-SysRescCD --title ' Customization section ' --yesno "Do you want to further customize the $type file?
166    
167     You will have the chance to change the Title and Text of the Boot Screen, and set the Default menu item and Boot Delay" 11 60
168    
169     if [ $? -eq 1 ];then
170 sng 93 CUSTOMIZE=no
171 sng 47 fi
172    
173    
174     if [ "$1" = "prog_only" ];then
175 sng 93 find2RamCFGfile
176 sng 47 else
177 sng 93 findCFGfile
178 sng 47 fi
179 sng 93
180    
181     import_parameters_to_cfg $templateCFG $finalCFG
182    
183    
184     ##############################################################################
185     #
186     # Menu Customization
187     #
188     ##############################################################################
189    
190     if [ -z "$CUSTOMIZE" ];then
191    
192 sng 47 # DVD Title
193 sng 93 whiptail --backtitle Clonezilla-SysRescCD --title ' Menu Title ' --inputbox 'Insert the Title for the menu' 8 60 "$(grep 'MENU TITLE' $finalCFG | sed 's|^ *MENU TITLE *||' | sed 's| *||g')" 2>/tmp/answer
194 sng 47 menuTitle=`cat /tmp/answer`
195    
196     rm /tmp/answer 2>/dev/null
197    
198    
199    
200     # Item caption
201     whiptail --backtitle Clonezilla-SysRescCD --title ' Menu Items Caption ' --inputbox 'Insert the Caption for each manu item' 8 60 'Clonezilla Live' 2>/tmp/answer
202     itemCaption=`cat /tmp/answer`
203    
204     rm /tmp/answer 2>/dev/null
205    
206    
207     #
208     whiptail --backtitle Clonezilla-SysRescCD --title ' Boot delay ' --inputbox 'Insert the boot delay in seconds' 8 60 30 2>/tmp/answer
209     bootDelay=`cat /tmp/answer`
210     if [ "$bootDelay" = "30" ];then
211     bootDelay=''
212     fi
213     rm /tmp/answer 2>/dev/null
214    
215    
216    
217    
218     #
219     # Default boot item
220     #
221    
222    
223    
224     echo "whiptail --backtitle Clonezilla-SysRescCD --title ' Default Boot Item ' --menu 'Select
225     Item 6 - Boot from the first hard disk
226     to maintain current setting
227     ' 0 60 0 \\" > /tmp/q.$$
228    
229 sng 93 grep 'MENU LABEL' "$templateCFG" | sed '/---/d' | sed 's|^.*MENU LABEL *||' | sed "s|^|'|" | sed "s|$|'|" | awk '{print NR " " ""$0"" " "}' | tr -d '\n$' > /tmp/qq.$$
230 sng 47
231     oldCaption=`sed 's|^1 *.||' /tmp/qq.$$ | sed "s| *-.*||"`
232    
233     if [ -n "$itemCaption" ];then
234     sed "s/$oldCaption/$itemCaption/g" /tmp/qq.$$ >> /tmp/q.$$
235     else
236     cat /tmp/qq.$$ >> /tmp/q.$$
237     fi
238    
239     echo "2>/tmp/answer" >> /tmp/q.$$
240     rm /tmp/qq.$$
241     . /tmp/q.$$
242     rm /tmp/q.$$
243    
244     defItem=`cat /tmp/answer`
245     if [ $defItem -gt 6 ];then ((defItem++));fi
246 sng 93 ((defItem++))
247     #if [ $defItem -eq 6 ];then defItem='';fi
248     if [ $defItem -eq 7 ];then defItem='';fi
249 sng 47 rm /tmp/answer 2>/dev/null
250    
251    
252     # Boot Screen Image
253     whiptail --backtitle Clonezilla-SysRescCD --title ' Boot Screen Image ' --inputbox 'Insert the Image to be displayed on the Boot Screen
254    
255     The file must be a 640x480 32-bit png image' 0 60 ocswp.png 2>/tmp/answer
256     bootImage=`cat /tmp/answer`
257     if [ "$bootImage" = "ocswp.png" ];then
258     bootImage=''
259     fi
260     rm /tmp/answer 2>/dev/null
261    
262    
263    
264    
265     if [ "$type" = "ISO" ];then
266     # ISO Label
267     whiptail --backtitle Clonezilla-SysRescCD --title ' ISO Label ' --inputbox 'Insert the Volume Label of the ISO file' 0 60 "$isoLabel" 2>/tmp/answer
268     isoLabelTMP=`cat /tmp/answer`
269     if [ -z "$isoLabelTMP" ];then
270     isoLabelTMP="$isoLabel"
271     fi
272     rm /tmp/answer 2>/dev/null
273    
274    
275    
276     # Publisher ID
277     whiptail --backtitle Clonezilla-SysRescCD --title ' Publisher ID ' --inputbox 'Insert the Publisher ID of the ISO file' 0 60 "$isoPublisher" 2>/tmp/answer
278     isoPublisherTMP=`cat /tmp/answer`
279     if [ -z "$isoPublisherTMP" ];then
280     isoPublisherTMP="$isoPublisher"
281     fi
282     rm /tmp/answer 2>/dev/null
283    
284     echo "$isoLabelTMP" > /tmp/isodata
285     echo "$isoPublisherTMP" >> /tmp/isodata
286     fi
287    
288    
289    
290    
291    
292 sng 93 ############################################################################
293     #
294     # Insert user data to file
295     #
296     ############################################################################
297 sng 47
298    
299    
300     if [ -n "$menuTitle" ];then
301 sng 93 sed "s|^ *MENU TITLE .*|MENU TITLE $menuTitle|" $finalCFG > $finalCFG.$$ && mv $finalCFG.$$ $finalCFG
302 sng 47 fi
303    
304     if [ -n "$itemCaption" ];then
305 sng 93 sed "s|MENU LABEL *$oldCaption *-|MENU LABEL $itemCaption -|" $finalCFG > $finalCFG.$$ && mv $finalCFG.$$ $finalCFG
306 sng 47 fi
307    
308     if [ -n "$bootDelay" ];then
309 sng 93 sed "s|[tT][iI][mM][eE][oO][uU][tT] .*| timeout "$bootDelay"0|" $finalCFG > $finalCFG.$$ && mv $finalCFG.$$ $finalCFG
310 sng 47 fi
311    
312     if [ -n "$defItem" ];then
313 sng 93 sed 's|^ *MENU DEFAULT| # MENU DEFAULT|' $finalCFG > $finalCFG.$$ && mv $finalCFG.$$ $finalCFG
314     addIt=`grep -n 'MENU DEFAULT' $finalCFG | sed 's|:.*||' | sed -n ""$defItem"p"`
315     sed ""$addIt"s|# *MENU *DEFAULT|MENU DEFAULT|" $finalCFG > $finalCFG.$$ && mv $finalCFG.$$ $finalCFG
316 sng 47 fi
317    
318    
319 sng 134 if [ -n "$bootImage" ];then
320     if [ -e "$bootImage" ] || [ -e /home/partimag/"$bootImage" ] ;then
321     bootImg="$bootImage"
322     fi
323 sng 47 fi
324    
325 sng 93 fi
326 sng 47
327 sng 93 copy_PNG_SYSLINUX
328 sng 47

Properties

Name Value
svn:executable *

webmaster@linux.gr
ViewVC Help
Powered by ViewVC 1.1.26