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