blob: 0b1b16ed3fc779729f67e1b0a30f45a306aa1854 [file] [log] [blame]
Gunnar Millsbde58222018-01-22 18:29:31 -06001#!/bin/bash
2set -eo pipefail
Adriana Kobylaka290eff2017-06-27 09:39:57 -05003
Adriana Kobylak54c9f792017-08-17 14:08:20 -05004# Get the root mtd device number (mtdX) from "/dev/ubiblockX_Y on /"
5findrootmtd() {
6 rootmatch=" on / "
7 m="$(mount | grep "${rootmatch}" | grep "ubiblock")"
8 m="${m##*ubiblock}"
9 m="${m%_*}"
10 if [ -z "${m}" ]; then
11 # default to bmc mtd (0)
12 m=0
13 fi
14 echo "mtd${m}"
15}
16
Adriana Kobylak582bdea2017-08-22 14:51:18 -050017findrootubi() {
18 rootmatch=" on / "
19 m="$(mount | grep "${rootmatch}")"
20 m="${m##*ubiblock}"
21 m="${m% on*}"
22 echo "ubi${m}"
23}
24
Adriana Kobylaka290eff2017-06-27 09:39:57 -050025# Get the mtd device number (mtdX)
26findmtd() {
27 m="$(grep -xl "$1" /sys/class/mtd/*/name)"
28 m="${m%/name}"
29 m="${m##*/}"
30 echo "${m}"
31}
32
Eddie Jamesa804bc42018-02-01 16:46:40 -060033# Get the mtd device number only (return X of mtdX)
34findmtdnum() {
35 m="$(findmtd "$1")"
36 m="${m##mtd}"
37 echo "${m}"
38}
39
Adriana Kobylaka290eff2017-06-27 09:39:57 -050040# Get the ubi device number (ubiX_Y)
41findubi() {
42 u="$(grep -xl "$1" /sys/class/ubi/ubi?/subsystem/ubi*/name)"
43 u="${u%/name}"
44 u="${u##*/}"
45 echo "${u}"
46}
47
Adriana Kobylakac5ce002017-09-13 12:59:26 -050048# Get the ubi device number (ubiX_Y) on a specific mtd
Adriana Kobylak582bdea2017-08-22 14:51:18 -050049findubi_onmtd() {
Adriana Kobylakac5ce002017-09-13 12:59:26 -050050 u="$(grep -xl "$1" /sys/class/ubi/ubi"$2"/subsystem/ubi"$2"*/name)"
51 u="${u%/name}"
52 u="${u##*/}"
53 echo "${u}"
54}
55
56# Get all ubi device names on a specific mtd that match requested string
57findubiname_onmtd() {
Adriana Kobylak582bdea2017-08-22 14:51:18 -050058 u="$(grep -h "$1" /sys/class/ubi/ubi"$2"/subsystem/ubi"$2"*/name)"
59 u="${u%/name}"
60 u="${u##*/}"
61 echo "${u}"
62}
63
Adriana Kobylakac5ce002017-09-13 12:59:26 -050064# Get the name from the requested ubiX_Y volume
65findname() {
66 n="$(cat /sys/class/ubi/$1/name)"
67 echo "${n}"
68}
69
Adriana Kobylak5c4468b2018-04-27 10:31:30 -050070# Set the u-boot envs that perform a side switch on failure to boot
71set_wdt2bite() {
72 if ! fw_printenv wdt2bite 2>/dev/null; then
73 fw_setenv wdt2bite "mw.l 0x1e785024 0xa 1; mw.b 0x1e78502c 0xb3 1"
74 fw_setenv bootalt "run wdt2bite"
75 fw_setenv obmc_bootcmd "ubi part obmc-ubi; run do_rwreset; ubi read \
76\${loadaddr} \${kernelname}; bootm \${loadaddr} || run bootalt"
77 fi
78}
79
Adriana Kobylak582bdea2017-08-22 14:51:18 -050080# Make space on flash before creating new volumes. This can be enhanced
81# determine current flash usage. For now only keep a "keepmax" number of them
82ubi_remove_volumes()
83{
Adriana Kobylak582bdea2017-08-22 14:51:18 -050084 rootubi="$(findrootubi)"
Adriana Kobylakac5ce002017-09-13 12:59:26 -050085 rootname="$(findname "${rootubi}")"
86 rootversion="${rootname##*-}"
87 rootkernel="kernel-${rootversion}"
Adriana Kobylak582bdea2017-08-22 14:51:18 -050088
89 # Just keep max number of volumes before updating, don't delete the version
90 # the BMC is booted from, and when a version is identified to be deleted,
91 # delete both the rofs and kernel volumes for that version.
Adriana Kobylakac5ce002017-09-13 12:59:26 -050092 rmnames="$(findubiname_onmtd "${name%-*}-" "${ro}")"
Adriana Kobylak582bdea2017-08-22 14:51:18 -050093 rmnames=(${rmnames})
94 ubicount="${#rmnames[@]}"
95 while [ ${ubicount} -ge ${keepmax} ]; do
96 # Loop through existing volumes and skip currently active ones
97 for (( index=0; index<${#rmnames[@]}; index++ )); do
98 rmname="${rmnames[${index}]}"
99 rmversion="${rmname##*-}"
Adriana Kobylakac5ce002017-09-13 12:59:26 -0500100 [ "${rmversion}" == "${version}" ] && continue
101 rmubi="$(findubi_onmtd "rofs-${rmversion}" "${ro}")"
Adriana Kobylak582bdea2017-08-22 14:51:18 -0500102 if [[ ( "${rmubi}" != "${rootubi}" ) &&
Adriana Kobylakac5ce002017-09-13 12:59:26 -0500103 ( "${rmname}" != "${rootkernel}" ) ]]; then
104 ubi_remove "rofs-${rmversion}" "${ro}"
105 ubi_remove "kernel-${rmversion}" "${ro}"
106 # Remove priority value
107 fw_setenv "${rmversion}"
Adriana Kobylak582bdea2017-08-22 14:51:18 -0500108 break
109 fi
110 done
111 # Decrease count regardless to avoid an infinite loop
112 (( ubicount-- ))
113 done
114}
115
Adriana Kobylaka290eff2017-06-27 09:39:57 -0500116ubi_rw() {
117 rwmtd="$(findmtd "${reqmtd}")"
118 rw="${rwmtd#mtd}"
119 ubidev="/dev/ubi${rw}"
120
Adriana Kobylakf846e172018-03-06 14:12:03 -0600121 # Update rwfs_size, check imgsize was specified, otherwise it'd clear the var
122 if [ ! -z "$imgsize" ]; then
123 rwsize="$(fw_printenv -n rwfs_size 2>/dev/null)" || true
124 if [[ "${imgsize}" != "${rwsize}" ]]; then
125 fw_setenv rwfs_size "${imgsize}"
126 fi
Adriana Kobylakb7059982018-02-14 16:35:30 -0600127 fi
128
Adriana Kobylaka290eff2017-06-27 09:39:57 -0500129 vol="$(findubi "${name}")"
130 if [ -z "${vol}" ]; then
Adriana Kobylakb7059982018-02-14 16:35:30 -0600131 ubimkvol "${ubidev}" -N "${name}" -s "${imgsize}"
Adriana Kobylaka290eff2017-06-27 09:39:57 -0500132 fi
133}
134
Adriana Kobylake9939492017-07-11 11:34:23 -0500135ubi_ro() {
Adriana Kobylak582bdea2017-08-22 14:51:18 -0500136 keepmax=2 # Default 2 volumes per mtd
Adriana Kobylake9939492017-07-11 11:34:23 -0500137 romtd="$(findmtd "${reqmtd}")"
Adriana Kobylak54c9f792017-08-17 14:08:20 -0500138 romtd2="$(findmtd "${reqmtd2}")"
139
140 if [ ! "${romtd}" == "${romtd2}" ]; then
141 # Request to use alternate mtd device, choose the non-root one
Adriana Kobylak582bdea2017-08-22 14:51:18 -0500142 keepmax=1 # 1 volume on each of the requested mtds
Adriana Kobylak54c9f792017-08-17 14:08:20 -0500143 rootmtd="$(findrootmtd)"
144 if [ "${rootmtd}" == "${romtd}" ]; then
145 romtd="${romtd2}"
146 fi
147 fi
Adriana Kobylake9939492017-07-11 11:34:23 -0500148 ro="${romtd#mtd}"
149 ubidev="/dev/ubi${ro}"
150
Adriana Kobylak582bdea2017-08-22 14:51:18 -0500151 ubi_remove_volumes
152
Michael Tritzd8ac7f22018-02-07 17:04:07 -0600153 if [ -z "${imgfile}" ]; then
154 echo "Unable to create read-only volume. Image file not specified."
155 return 1
156 fi
157
158 # Create a ubi volume, dynamically sized to fit BMC image if size unspecified
159 img="/tmp/images/${version}/${imgfile}"
160 imgsize="$(stat -c '%s' ${img})"
161
Adriana Kobylake9939492017-07-11 11:34:23 -0500162 vol="$(findubi "${name}")"
Adriana Kobylakddc9dca2017-09-05 15:44:35 -0500163 if [ ! -z "${vol}" ]; then
164 # Allow a duplicate kernel volume on the alt mtd
165 if [[ "${name}" =~ "kernel" ]]; then
Adriana Kobylakac5ce002017-09-13 12:59:26 -0500166 vol="$(findubi_onmtd "${name}" "${ro}")"
Adriana Kobylakddc9dca2017-09-05 15:44:35 -0500167 fi
168 fi
Adriana Kobylake9939492017-07-11 11:34:23 -0500169 if [ -z "${vol}" ]; then
170 ubimkvol "${ubidev}" -N "${name}" -s "${imgsize}" --type=static
171 vol="$(findubi "${name}")"
172 fi
173}
174
175# Squashfs images need a ubi block
176ubi_block() {
177 vol="$(findubi "${name}")"
178 ubidevid="${vol#ubi}"
179 block="/dev/ubiblock${ubidevid}"
180 if [ ! -e "$block" ]; then
181 ubiblock --create "/dev/ubi${ubidevid}"
182 fi
183}
184
185ubi_updatevol() {
186 vol="$(findubi "${name}")"
187 ubidevid="${vol#ubi}"
188 img="/tmp/images/${version}/${imgfile}"
189 ubiupdatevol "/dev/ubi${ubidevid}" "${img}"
190}
191
Michael Tritza694eed2017-07-13 16:26:15 -0500192ubi_remove() {
Adriana Kobylak582bdea2017-08-22 14:51:18 -0500193 rmname="$1"
Adriana Kobylakac5ce002017-09-13 12:59:26 -0500194 rmmtd="$2"
195 if [ ! -z "${rmmtd}" ]; then
196 vol="$(findubi_onmtd "${rmname}" "${rmmtd}")"
197 else
198 vol="$(findubi "${rmname}")"
199 fi
Michael Tritza694eed2017-07-13 16:26:15 -0500200
201 if [ ! -z "$vol" ]; then
202 vol="${vol%_*}"
203
Saqib Khanf8d2a662017-09-07 13:57:43 -0500204 if grep -q "$rmname" /proc/mounts; then
205 mountdir=$(grep "$rmname" /proc/mounts | cut -d " " -f 2)
Michael Tritza694eed2017-07-13 16:26:15 -0500206 umount "$mountdir"
207 rm -r "$mountdir"
208 fi
209
Adriana Kobylak582bdea2017-08-22 14:51:18 -0500210 ubirmvol "/dev/${vol}" -N "$rmname"
Michael Tritza694eed2017-07-13 16:26:15 -0500211 fi
212}
213
Michael Tritz18781172017-09-21 00:41:15 -0500214ubi_cleanup() {
215 # When ubi_cleanup is run, it expects one or no active version.
216 activeVersion=$(busctl --list --no-pager tree \
217 xyz.openbmc_project.Software.BMC.Updater | \
218 grep /xyz/openbmc_project/software/ | tail -c 9)
219
220 if [[ -z "$activeVersion" ]]; then
Adriana Kobylake95cbd22018-03-01 15:26:01 -0600221 vols=$(ubinfo -a | grep "rofs-" | cut -c 14-)
Michael Tritz18781172017-09-21 00:41:15 -0500222 vols=(${vols})
223 else
Adriana Kobylake95cbd22018-03-01 15:26:01 -0600224 vols=$(ubinfo -a | grep "rofs-" | \
Michael Tritz18781172017-09-21 00:41:15 -0500225 grep -v "$activeVersion" | cut -c 14-)
226 vols=(${vols})
227 fi
228
229 for (( index=0; index<${#vols[@]}; index++ )); do
230 ubi_remove ${vols[index]}
231 done
232}
233
Adriana Kobylak57ed6af2018-04-18 12:16:28 -0500234mount_alt_rwfs() {
235 altNum="$(findmtdnum "alt-bmc")"
236 if [ ! -z "${altNum}" ]; then
Adriana Kobylak35f44ec2018-06-27 14:17:14 -0500237 altRwfs=$(ubinfo -a -d ${altNum} | grep -w "rwfs") || true
238 if [ ! -z "${altRwfs}" ]; then
239 altVarMount="/media/alt/var"
240 mkdir -p "${altVarMount}"
241 if mount ubi"${altNum}":rwfs "${altVarMount}" -t ubifs -o defaults; then
242 mkdir -p "${altVarMount}"/persist/etc
243 fi
Adriana Kobylak57ed6af2018-04-18 12:16:28 -0500244 fi
245 fi
246}
247
Saqib Khanbb93e642017-08-10 11:24:38 -0500248remount_ubi() {
Saqib Khand6d1c442017-09-06 23:24:40 -0500249 bmcmtd="$(findmtd "bmc")"
250 altbmcmtd="$(findmtd "alt-bmc")"
251 mtds="${bmcmtd: -1}","${altbmcmtd: -1}"
Saqib Khanbb93e642017-08-10 11:24:38 -0500252
253 IFS=',' read -r -a mtds <<< "$mtds"
254 mtds=($(echo "${mtds[@]}" | tr ' ' '\n' | sort -u | tr '\n' ' '))
255 for mtd in ${mtds[@]}; do
Saqib Khanbb93e642017-08-10 11:24:38 -0500256 # Get information on all ubi volumes
257 ubinfo=$(ubinfo -d ${mtd})
258 presentVolumes=${ubinfo##*:}
259 IFS=', ' read -r -a array <<< "$presentVolumes"
260 for element in ${array[@]}; do
261 elementProperties=$(ubinfo -d $mtd -n $element)
262 # Get ubi volume name by getting rid of additional properties
263 name=${elementProperties#*Name:}
264 name="${name%Character*}"
265 name="$(echo -e "${name}" | tr -d '[:space:]')"
266
Adriana Kobylak2c7c8d12017-08-21 11:00:56 -0500267 if [[ ${name} == rofs-* ]]; then
Saqib Khanbb93e642017-08-10 11:24:38 -0500268 mountdir="/media/${name}"
Saqib Khand793f2d2017-09-13 14:05:31 -0500269
270 if [ ! -d ${mountdir} ]; then
271 mkdir -p "${mountdir}"
Gunnar Millsbde58222018-01-22 18:29:31 -0600272 # U-Boot will create the ubiblock for the running version, but not
273 # for the version on the other chip
274 if [ ! -e "/dev/ubiblock${mtd}_${element}" ]; then
275 ubiblock --create /dev/ubi${mtd}_${element}
276 fi
Saqib Khand793f2d2017-09-13 14:05:31 -0500277 mount -t squashfs -o ro "/dev/ubiblock${mtd}_${element}" "${mountdir}"
278 fi
Saqib Khanbb93e642017-08-10 11:24:38 -0500279 fi
280 done
281 done
Adriana Kobylak5c4468b2018-04-27 10:31:30 -0500282
283 set_wdt2bite
Saqib Khanbb93e642017-08-10 11:24:38 -0500284}
285
Adriana Kobylak8cdb82e2017-08-22 14:18:39 -0500286# Read the current env variable and set it on the alternate boot env
287copy_env_var_to_alt() {
288 varName=$1
289 value="$(fw_printenv -n "${varName}")"
290 fw_setenv -c /etc/alt_fw_env.config "${varName}" "${value}"
291}
292
Eddie Jamesa804bc42018-02-01 16:46:40 -0600293# When the alternate bmc chip boots, u-boot thinks its the primary mtdX.
294# Therefore need to swap the chip numbers when copying the ubiblock and root to
295# alternate bmc u-boot environment.
296copy_ubiblock_to_alt() {
297 value="$(fw_printenv -n ubiblock)"
298 bmcNum="$(findmtdnum "bmc")"
299 altNum="$(findmtdnum "alt-bmc")"
300 replaceAlt="${value/${altNum},/${bmcNum},}"
301
302 if [[ "${value}" == "${replaceAlt}" ]]; then
303 replaceBmc="${value/${bmcNum},/${altNum},}"
304 value=${replaceBmc}
305 else
306 value=${replaceAlt}
307 fi
308
309 fw_setenv -c /etc/alt_fw_env.config ubiblock "${value}"
310}
311
312copy_root_to_alt() {
313 value="$(fw_printenv -n root)"
314 bmcNum="$(findmtdnum "bmc")"
315 altNum="$(findmtdnum "alt-bmc")"
316 replaceAlt="${value/${altNum}_/${bmcNum}_}"
317
318 if [[ "${value}" == "${replaceAlt}" ]]; then
319 replaceBmc="${value/${bmcNum}_/${altNum}_}"
320 value=${replaceBmc}
321 else
322 value=${replaceAlt}
323 fi
324
325 fw_setenv -c /etc/alt_fw_env.config root "${value}"
326}
327
Michael Tritza694eed2017-07-13 16:26:15 -0500328ubi_setenv() {
Michael Tritz3e0b0672017-12-15 15:35:14 -0600329 # The U-Boot environment maintains two banks of environment variables.
330 # The banks need to be consistent with each other to ensure that these
331 # variables can reliably be read from file. In order to guarantee that the
332 # banks are both correct, we need to run fw_setenv twice.
Adriana Kobylak8cdb82e2017-08-22 14:18:39 -0500333 variable=$1
Michael Tritz8863f702017-08-25 15:47:07 -0500334 if [[ "$variable" == *"="* ]]; then
335 varName="${variable%=*}"
336 value="${variable##*=}"
Adriana Kobylakf5ac32c2018-02-09 11:21:57 -0600337 # Write only if var is not set already to the requested value
Adriana Kobylakffd46ba2018-03-02 14:16:43 -0600338 currentValue="$(fw_printenv -n "${varName}" 2>/dev/null)" || true
Adriana Kobylakf5ac32c2018-02-09 11:21:57 -0600339 if [[ "${currenValue}" != "${value}" ]]; then
340 fw_setenv "$varName" "$value"
341 fw_setenv "$varName" "$value"
342 fi
Michael Tritz8863f702017-08-25 15:47:07 -0500343 else
344 fw_setenv "$variable"
Michael Tritz3e0b0672017-12-15 15:35:14 -0600345 fw_setenv "$variable"
Michael Tritz8863f702017-08-25 15:47:07 -0500346 fi
Michael Tritza694eed2017-07-13 16:26:15 -0500347}
348
Adriana Kobylak1fa612c2017-08-17 21:56:14 -0500349mtd_write() {
350 flashmtd="$(findmtd "${reqmtd}")"
351 img="/tmp/images/${version}/${imgfile}"
352 flashcp -v ${img} /dev/${flashmtd}
353}
354
Adriana Kobylake2fd46d2017-09-05 12:38:19 -0500355backup_env_vars() {
356 copy_env_var_to_alt kernelname
Eddie Jamesa804bc42018-02-01 16:46:40 -0600357 copy_ubiblock_to_alt
358 copy_root_to_alt
Adriana Kobylake2fd46d2017-09-05 12:38:19 -0500359}
360
361update_env_vars() {
362 vol="$(findubi rofs-"${version}")"
363 if [ -z "${vol}" ]; then
364 return 1
365 fi
366 ubidevid="${vol#ubi}"
367 block="/dev/ubiblock${ubidevid}"
368 if [ ! -e "${block}" ]; then
369 return 1
370 fi
371 ubi_setenv "kernelname=kernel-${version}"
372 ubi_setenv "ubiblock=$(echo "${ubidevid}" | sed 's/_/,/')"
373 ubi_setenv "root=${block}"
374}
375
Saqib Khandfc9b0c2017-09-08 10:10:08 -0500376#TODO: Replace the implementation with systemd-inhibitors lock
377# once systemd/systemd#949 is resolved
378rebootguardenable() {
379 dir="/run/systemd/system/"
380 file="reboot-guard.conf"
381 units=("reboot" "poweroff" "halt")
382
383 for unit in "${units[@]}"; do
384 mkdir -p ${dir}${unit}.target.d
385 echo -e "[Unit]\nRefuseManualStart=yes" >> ${dir}${unit}.target.d/${file}
386 done
387}
388
389#TODO: Replace the implementation with systemd-inhibitors lock
390# once systemd/systemd#949 is resolved
391rebootguarddisable() {
392 dir="/run/systemd/system/"
393 file="reboot-guard.conf"
394 units=("reboot" "poweroff" "halt")
395
396 for unit in "${units[@]}"; do
397 rm -rf ${dir}${unit}.target.d/${file}
398 done
399}
400
Adriana Kobylakddc9dca2017-09-05 15:44:35 -0500401# Create a copy in the alt mtd
402create_vol_in_alt() {
403 alt="alt-bmc"
404 altmtd="$(findmtd "${alt}")"
405 if [ ! -z "${altmtd}" ]; then
406 reqmtd="${alt}"
407 reqmtd2="${alt}"
408 ubi_ro
409 ubi_updatevol
410 fi
411}
412
Eddie James63fa6112018-03-01 09:55:07 -0600413# Copy contents of one MTD device to another
414mtd_copy() {
415 in=$1
416 out=$2
417
418 # Must erase MTD first to prevent corruption
419 flash_eraseall "${out}"
420 dd if="${in}" of="${out}"
421}
422
423mirroruboot() {
424 bmc="$(findmtd "u-boot")"
425 bmcdev="/dev/${bmc}"
426 alt="$(findmtd "alt-u-boot")"
427 altdev="/dev/${alt}"
428
429 checksum_bmc="$(md5sum "${bmcdev}")"
430 checksum_bmc="${checksum_bmc% *}"
431 checksum_alt="$(md5sum "${altdev}")"
432 checksum_alt="${checksum_alt% *}"
433
434 if [[ "${checksum_bmc}" != "${checksum_alt}" ]]; then
435 bmcenv="$(findmtd "u-boot-env")"
436 bmcenvdev="/dev/${bmcenv}"
437 altenv="$(findmtd "alt-u-boot-env")"
438 altenvdev="/dev/${altenv}"
Eddie James63fa6112018-03-01 09:55:07 -0600439
Eddie Jamesaea2d162018-04-12 13:47:49 -0500440 echo "Mirroring U-boot to alt chip"
441 mtd_copy "${bmcdev}" "${altdev}"
442 mtd_copy "${bmcenvdev}" "${altenvdev}"
Eddie James63fa6112018-03-01 09:55:07 -0600443
444 copy_ubiblock_to_alt
445 copy_root_to_alt
446 fi
447}
448
Adriana Kobylaka290eff2017-06-27 09:39:57 -0500449case "$1" in
Adriana Kobylak1fa612c2017-08-17 21:56:14 -0500450 mtduboot)
451 reqmtd="$2"
452 version="$3"
453 imgfile="image-u-boot"
454 mtd_write
455 ;;
Adriana Kobylaka290eff2017-06-27 09:39:57 -0500456 ubirw)
457 reqmtd="$2"
458 name="$3"
Adriana Kobylakb7059982018-02-14 16:35:30 -0600459 imgsize="$4"
Adriana Kobylaka290eff2017-06-27 09:39:57 -0500460 ubi_rw
461 ;;
Adriana Kobylake9939492017-07-11 11:34:23 -0500462 ubiro)
Adriana Kobylak54c9f792017-08-17 14:08:20 -0500463 reqmtd="$(echo "$2" | cut -d "+" -f 1)"
464 reqmtd2="$(echo "$2" | cut -d "+" -f 2)"
Adriana Kobylake9939492017-07-11 11:34:23 -0500465 name="$3"
466 version="$4"
467 imgfile="image-rofs"
Adriana Kobylake9939492017-07-11 11:34:23 -0500468 ubi_ro
Adriana Kobylake9939492017-07-11 11:34:23 -0500469 ubi_updatevol
Adriana Kobylak8cdb82e2017-08-22 14:18:39 -0500470 ubi_block
Adriana Kobylake9939492017-07-11 11:34:23 -0500471 ;;
472 ubikernel)
Adriana Kobylak54c9f792017-08-17 14:08:20 -0500473 reqmtd="$(echo "$2" | cut -d "+" -f 1)"
474 reqmtd2="$(echo "$2" | cut -d "+" -f 2)"
Adriana Kobylake9939492017-07-11 11:34:23 -0500475 name="$3"
476 version="$4"
477 imgfile="image-kernel"
Adriana Kobylake9939492017-07-11 11:34:23 -0500478 ubi_ro
479 ubi_updatevol
Adriana Kobylakddc9dca2017-09-05 15:44:35 -0500480 create_vol_in_alt
Adriana Kobylake9939492017-07-11 11:34:23 -0500481 ;;
Michael Tritza694eed2017-07-13 16:26:15 -0500482 ubiremove)
483 name="$2"
Adriana Kobylak582bdea2017-08-22 14:51:18 -0500484 ubi_remove "${name}"
Michael Tritza694eed2017-07-13 16:26:15 -0500485 ;;
Michael Tritz18781172017-09-21 00:41:15 -0500486 ubicleanup)
487 ubi_cleanup
488 ;;
Michael Tritza694eed2017-07-13 16:26:15 -0500489 ubisetenv)
Adriana Kobylak8cdb82e2017-08-22 14:18:39 -0500490 ubi_setenv "$2"
Michael Tritza694eed2017-07-13 16:26:15 -0500491 ;;
Saqib Khanbb93e642017-08-10 11:24:38 -0500492 ubiremount)
493 remount_ubi
Adriana Kobylak57ed6af2018-04-18 12:16:28 -0500494 mount_alt_rwfs
Saqib Khanbb93e642017-08-10 11:24:38 -0500495 ;;
Saqib Khan7e4a3f22017-09-12 09:23:28 -0500496 createenvbackup)
Adriana Kobylake2fd46d2017-09-05 12:38:19 -0500497 backup_env_vars
498 ;;
Saqib Khan7e4a3f22017-09-12 09:23:28 -0500499 updateubootvars)
Adriana Kobylake2fd46d2017-09-05 12:38:19 -0500500 version="$2"
501 update_env_vars
502 ;;
Saqib Khandfc9b0c2017-09-08 10:10:08 -0500503 rebootguardenable)
504 rebootguardenable
505 ;;
506 rebootguarddisable)
507 rebootguarddisable
508 ;;
Eddie James63fa6112018-03-01 09:55:07 -0600509 mirroruboot)
510 mirroruboot
511 ;;
Adriana Kobylaka290eff2017-06-27 09:39:57 -0500512 *)
513 echo "Invalid argument"
514 exit 1
515 ;;
516esac