Adding commented 'set -e' explicitly in all subscripts to avoid running it with ...
[live-boot-grml.git] / scripts / boot / arguments.sh
1 #!/bin/sh
2
3 #set -e
4
5 Arguments ()
6 {
7         PRESEEDS=""
8         LOCATIONS=""
9
10         for ARGUMENT in $(cat /proc/cmdline)
11         do
12                 case "${ARGUMENT}" in
13                         skipconfig)
14                                 NOACCESSIBILITY="Yes"
15                                 NOFASTBOOT="Yes"
16                                 NOFSTAB="Yes"
17                                 NONETWORKING="Yes"
18
19                                 export NOACCESSIBILITY NOFASTBOOT NOFSTAB NONETWORKING
20                                 ;;
21
22                         access=*)
23                                 ACCESS="${ARGUMENT#access=}"
24                                 export ACCESS
25                                 ;;
26
27                         console=*)
28                                 DEFCONSOLE="${ARGUMENT#*=}"
29                                 export DEFCONSOLE
30                                 ;;
31
32                         BOOTIF=*)
33                                 BOOTIF="${x#BOOTIF=}"
34                                 ;;
35
36                         debug)
37                                 DEBUG="Yes"
38                                 export DEBUG
39
40                                 set -x
41                                 ;;
42
43                         dhcp)
44                                 # Force dhcp even while netbooting
45                                 # Use for debugging in case somebody works on fixing dhclient
46                                 DHCP="Force";
47                                 export DHCP
48                                 ;;
49
50                         nodhcp)
51                                 unset DHCP
52                                 ;;
53
54                         ethdevice=*)
55                                 DEVICE="${ARGUMENT#ethdevice=}"
56                                 ETHDEVICE="${DEVICE}"
57                                 export DEVICE ETHDEVICE
58                                 ;;
59
60                         ethdevice-timeout=*)
61                                 ETHDEV_TIMEOUT="${ARGUMENT#ethdevice-timeout=}"
62                                 export ETHDEV_TIMEOUT
63                                 ;;
64
65                         fetch=*)
66                                 FETCH="${ARGUMENT#fetch=}"
67                                 export FETCH
68                                 ;;
69
70                         findiso=*)
71                                 FINDISO="${ARGUMENT#findiso=}"
72                                 export FINDISO
73                                 ;;
74
75                         forcepersistencefsck)
76                                 FORCEPERSISTENCEFSCK="Yes"
77                                 export FORCEPERSISTENCEFSCK
78                                 ;;
79
80                         ftpfs=*)
81                                 FTPFS="${ARGUMENT#ftpfs=}"
82                                 export FTPFS
83                                 ;;
84
85                         httpfs=*)
86                                 HTTPFS="${ARGUMENT#httpfs=}"
87                                 export HTTPFS
88                                 ;;
89
90                         iscsi=*)
91                                 ISCSI="${ARGUMENT#iscsi=}"
92                                 #ip:port - separated by ;
93                                 ISCSI_PORTAL="${ISCSI%;*}"
94                                 if echo "${ISCSI_PORTAL}" | grep -q , ; then
95                                         ISCSI_SERVER="${ISCSI_PORTAL%,*}"
96                                         ISCSI_PORT="${ISCSI_PORTAL#*,}"
97                                 fi
98                                 #target name
99                                 ISCSI_TARGET="${ISCSI#*;}"
100                                 export ISCSI ISCSI_PORTAL ISCSI_TARGET ISCSI_SERVER ISCSI_PORT
101                                 ;;
102
103                         isofrom=*|fromiso=*)
104                                 FROMISO="${ARGUMENT#*=}"
105                                 export FROMISO
106                                 ;;
107
108                         ignore_uuid)
109                                 IGNORE_UUID="Yes"
110                                 export IGNORE_UUID
111                                 ;;
112
113                         integrity-check)
114                                 INTEGRITY_CHECK="Yes"
115                                 export INTEGRITY_CHECK
116                                 ;;
117
118                         ip=*)
119                                 STATICIP="${ARGUMENT#ip=}"
120
121                                 if [ -z "${STATICIP}" ]
122                                 then
123                                         STATICIP="frommedia"
124                                 fi
125
126                                 export STATICIP
127                                 ;;
128
129                         live-getty)
130                                 LIVE_GETTY="1"
131                                 export LIVE_GETTY
132                                 ;;
133
134                         live-media=*|bootfrom=*)
135                                 LIVE_MEDIA="${ARGUMENT#*=}"
136                                 export LIVE_MEDIA
137                                 ;;
138
139                         live-media-encryption=*|encryption=*)
140                                 LIVE_MEDIA_ENCRYPTION="${ARGUMENT#*=}"
141                                 export LIVE_MEDIA_ENCRYPTION
142                                 ;;
143
144                         live-media-offset=*)
145                                 LIVE_MEDIA_OFFSET="${ARGUMENT#live-media-offset=}"
146                                 export LIVE_MEDIA_OFFSET
147                                 ;;
148
149                         live-media-path=*)
150                                 LIVE_MEDIA_PATH="${ARGUMENT#live-media-path=}"
151                                 export LIVE_MEDIA_PATH
152                                 ;;
153
154                         live-media-timeout=*)
155                                 LIVE_MEDIA_TIMEOUT="${ARGUMENT#live-media-timeout=}"
156                                 export LIVE_MEDIA_TIMEOUT
157                                 ;;
158
159                         module=*)
160                                 MODULE="${ARGUMENT#module=}"
161                                 export MODULE
162                                 ;;
163
164                         netboot=*)
165                                 NETBOOT="${ARGUMENT#netboot=}"
166                                 export NETBOOT
167                                 ;;
168
169                         nfsopts=*)
170                                 NFSOPTS="${ARGUMENT#nfsopts=}"
171                                 export NFSOPTS
172                                 ;;
173
174                         nfsoverlay=*)
175                                 NFS_COW="${ARGUMENT#nfsoverlay=}"
176                                 export NFS_COW
177                                 ;;
178
179                         noaccessibility)
180                                 NOACCESSIBILITY="Yes"
181                                 export NOACCESSIBILITY
182                                 ;;
183
184                         nofastboot)
185                                 NOFASTBOOT="Yes"
186                                 export NOFASTBOOT
187                                 ;;
188
189                         nofstab)
190                                 NOFSTAB="Yes"
191                                 export NOFSTAB
192                                 ;;
193
194                         nonetworking)
195                                 NONETWORKING="Yes"
196                                 export NONETWORKING
197                                 ;;
198
199                         ramdisk-size=*)
200                                 ramdisk_size="${ARGUMENT#ramdisk-size=}"
201                                 ;;
202
203                         swapon)
204                                 SWAPON="Yes"
205                                 export SWAPON
206                                 ;;
207
208                         persistence)
209                                 PERSISTENCE="Yes"
210                                 export PERSISTENCE
211                                 ;;
212
213                         persistence-encryption=*)
214                                 PERSISTENCE_ENCRYPTION="${ARGUMENT#*=}"
215                                 export PERSISTENCE_ENCRYPTION
216                                 ;;
217
218                         persistence-media=*)
219                                 PERSISTENCE_MEDIA="${ARGUMENT#*=}"
220                                 export PERSISTENCE_MEDIA
221                                 ;;
222                         persistence-method=*)
223                                 PERSISTENCE_METHOD="${ARGUMENT#*=}"
224                                 export PERSISTENCE_METHOD
225                                 ;;
226
227                         persistence-path=*)
228                                 PERSISTENCE_PATH="${ARGUMENT#persistence-path=}"
229                                 export PERSISTENCE_PATH
230                                 ;;
231                         persistence-read-only)
232                                 PERSISTENCE_READONLY="Yes"
233                                 export PERSISTENCE_READONLY
234                                 ;;
235
236                         persistence-storage=*)
237                                 PERSISTENCE_STORAGE="${ARGUMENT#persistence-storage=}"
238                                 export PERSISTENCE_STORAGE
239                                 ;;
240
241                         persistence-subtext=*)
242                                 old_root_overlay_label="${old_root_overlay_label}-${ARGUMENT#persistence-subtext=}"
243                                 old_home_overlay_label="${old_home_overlay_label}-${ARGUMENT#persistence-subtext=}"
244                                 custom_overlay_label="${custom_overlay_label}-${ARGUMENT#persistence-subtext=}"
245                                 root_snapshot_label="${root_snapshot_label}-${ARGUMENT#persistence-subtext=}"
246                                 old_root_snapshot_label="${root_snapshot_label}-${ARGUMENT#persistence-subtext=}"
247                                 home_snapshot_label="${home_snapshot_label}-${ARGUMENT#persistence-subtext=}"
248                                 ;;
249
250                         nopersistence)
251                                 NOPERSISTENCE="Yes"
252                                 export NOPERSISTENCE
253                                 ;;
254
255                         noprompt)
256                                 NOPROMPT="Yes"
257                                 export NOPROMPT
258                                 ;;
259
260                         noprompt=*)
261                                 NOPROMPT="${ARGUMENT#noprompt=}"
262                                 export NOPROMPT
263                                 ;;
264
265                         quickusbmodules)
266                                 QUICKUSBMODULES="Yes"
267                                 export QUICKUSBMODULES
268                                 ;;
269
270                         preseed/file=*|file=*)
271                                 LOCATIONS="${ARGUMENT#*=} ${LOCATIONS}"
272                                 export LOCATIONS
273                                 ;;
274
275                         nopreseed)
276                                 NOPRESEED="Yes"
277                                 export NOPRESEED
278                                 ;;
279
280                         */*=*)
281                                 question="${ARGUMENT%%=*}"
282                                 value="${ARGUMENT#*=}"
283                                 PRESEEDS="${PRESEEDS}\"${question}=${value}\" "
284                                 export PRESEEDS
285                                 ;;
286
287                         showmounts)
288                                 SHOWMOUNTS="Yes"
289                                 export SHOWMOUNTS
290                                 ;;
291
292                         silent)
293                                 SILENT="Yes"
294                                 export SILENT
295                                 ;;
296
297                         todisk=*)
298                                 TODISK="${ARGUMENT#todisk=}"
299                                 export TODISK
300                                 ;;
301
302                         toram)
303                                 TORAM="Yes"
304                                 export TORAM
305                                 ;;
306
307                         toram=*)
308                                 TORAM="Yes"
309                                 MODULETORAM="${ARGUMENT#toram=}"
310                                 export TORAM MODULETORAM
311                                 ;;
312
313                         exposedroot)
314                                 EXPOSED_ROOT="Yes"
315                                 export EXPOSED_ROOT
316                                 ;;
317
318                         plainroot)
319                                 PLAIN_ROOT="Yes"
320                                 export PLAIN_ROOT
321                                 ;;
322
323                         skipunion)
324                                 SKIP_UNION_MOUNTS="Yes"
325                                 export SKIP_UNION_MOUNTS
326                                 ;;
327
328                         root=*)
329                                 ROOT="${ARGUMENT#root=}"
330                                 export ROOT
331                                 ;;
332
333                         union=*)
334                                 UNIONTYPE="${ARGUMENT#union=}"
335                                 export UNIONTYPE
336                                 ;;
337                 esac
338         done
339
340         # sort of compatibility with netboot.h from linux docs
341         if [ -z "${NETBOOT}" ]
342         then
343                 if [ "${ROOT}" = "/dev/nfs" ]
344                 then
345                         NETBOOT="nfs"
346                         export NETBOOT
347                 elif [ "${ROOT}" = "/dev/cifs" ]
348                 then
349                         NETBOOT="cifs"
350                         export NETBOOT
351                 fi
352         fi
353
354         if [ -z "${MODULE}" ]
355         then
356                 MODULE="filesystem"
357                 export MODULE
358         fi
359
360         if [ -z "${UNIONTYPE}" ]
361         then
362                 UNIONTYPE="aufs"
363                 export UNIONTYPE
364         fi
365
366         if [ -z "${PERSISTENCE_ENCRYPTION}" ]
367         then
368                 PERSISTENCE_ENCRYPTION="none"
369                 export PERSISTENCE_ENCRYPTION
370         elif is_in_comma_sep_list luks ${PERSISTENCE_ENCRYPTION}
371         then
372                 if ! modprobe dm-crypt
373                 then
374                         log_warning_msg "Unable to load module dm-crypt"
375                         PERSISTENCE_ENCRYPTION=$(echo ${PERSISTENCE_ENCRYPTION} | sed -e 's/\<luks,\|,\?luks$//g')
376                         export PERSISTENCE_ENCRYPTION
377                 fi
378
379                 if [ ! -x /lib/cryptsetup/askpass ] || [ ! -x /sbin/cryptsetup ]
380                 then
381                         log_warning_msg "cryptsetup in unavailable"
382                         PERSISTENCE_ENCRYPTION=$(echo ${PERSISTENCE_ENCRYPTION} | sed -e 's/\<luks,\|,\?luks$//g')
383                         export PERSISTENCE_ENCRYPTION
384                 fi
385         fi
386
387         if [ -z "${PERSISTENCE_METHOD}" ]
388         then
389                 PERSISTENCE_METHOD="snapshot,overlay"
390                 export PERSISTENCE_METHOD
391         fi
392
393         if [ -z "${PERSISTENCE_STORAGE}" ]
394         then
395                 PERSISTENCE_STORAGE="filesystem,file"
396                 export PERSISTENCE_STORAGE
397         fi
398 }