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