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