/
0001-Adapt-boot.cmd.in-to-Mender.patch
144 lines (137 loc) · 7.18 KB
/
0001-Adapt-boot.cmd.in-to-Mender.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
--- boot.cmd.in.orig 2022-06-13 07:29:05.128770364 +0000
+++ boot.cmd.in 2022-06-13 15:14:30.754269214 +0000
@@ -1,35 +1,11 @@
# SPDX-License-Identifier: GPL-2.0+ OR MIT
#
# Copyright 2020 Toradex
+# With Mender integration.
#
# Toradex boot script.
#
-# Allows to change boot and rootfs devices independently.
-# Supports:
-# - boot device type: boot_devtype := {mmc, usb, tftp, dhcp}
-# - boot device num (for mmc, usb types): boot_devnum := {0 .. MAX_DEV_NUM}
-# - boot partition (for mmc, usb types): boot_part := {1 .. MAX_PART_NUM}
-# - root device type: root_devtype := {mmc, usb, nfs-dhcp, nfs-static}
-# - root device num (for mmc, usb types): root_devnum := {0 .. MAX_DEV_NUM}
-# - root partition (for mmc, usb types): root_part := {1 .. MAX_PART_NUM}
-#
-# Defaults:
-# root_devtype = boot_devtype = devtype
-# root_devnum = boot_devnum = devnum
-# boot_part = distro_bootpart
-# root_part = 2
-#
-# Common variables used in tftp/dhcp modes:
-# - Static/dynamic IP mode: ip_dyn := {yes, no}
-# - Static IP-address of TFTP/NFS server: serverip := {legal IPv4 address}
-# - Static IP-address of the module: ipaddr := {legal IPv4 address}
-# - Root-path on NFS-server: rootpath := {legal path, exported by an NFS-server}
-#
-# Common flags:
-# - Skip loading overlays: skip_fdt_overlays := {1, 0}
-# 1 - skip, any other value (or undefined variable) - don't skip.
-# This variable is adopted from the TorizonCore and shouldn't be
-# renamed separately.
+# Only supports booting from mmc
if test ${devtype} = "ubi"; then
echo "This script is not meant to distro boot from raw NAND flash."
@@ -38,34 +14,20 @@
test -n ${m4boot} || env set m4boot ';'
test -n ${fdtfile} || env set fdtfile ${fdt_file}
-test -n ${boot_part} || env set boot_part ${distro_bootpart}
-test -n ${root_part} || env set root_part 2
-test -n ${boot_devnum} || env set boot_devnum ${devnum}
-test -n ${root_devnum} || env set root_devnum ${devnum}
test -n ${kernel_image} || env set kernel_image @@KERNEL_IMAGETYPE@@
-test -n ${boot_devtype} || env set boot_devtype ${devtype}
test -n ${overlays_file} || env set overlays_file "overlays.txt"
test -n ${overlays_prefix} || env set overlays_prefix "overlays/"
-test ${boot_devtype} = "mmc" && env set load_cmd 'load ${boot_devtype} ${boot_devnum}:${boot_part}'
-test ${boot_devtype} = "usb" && env set load_cmd 'load ${boot_devtype} ${boot_devnum}:${boot_part}'
-test ${boot_devtype} = "tftp" && env set load_cmd 'tftp'
-test ${boot_devtype} = "dhcp" && env set load_cmd 'dhcp'
-
-# Set Root source type properly.
-# devtype tftp => nfs-static
-# devtype ghcp => nfs-dhcp
-if test "${root_devtype}" = ""; then
- if test ${devtype} = "tftp"; then
- env set root_devtype "nfs-static"
- else
- if test ${devtype} = "dhcp"; then
- env set root_devtype "nfs-dhcp"
- else
- env set root_devtype ${devtype}
- fi
- fi
-fi
+# Set dynamic commands
+env set load_prefix 'boot/'
+env set load_cmd 'load ${mender_uboot_root}'
+env set load_cmd_boot 'load ${mender_uboot_boot}'
+env set set_bootcmd_kernel 'env set bootcmd_kernel "${load_cmd} \\${kernel_addr_load} \\${load_prefix}\\${kernel_image}"'
+env set set_load_overlays_file 'env set load_overlays_file "${load_cmd_boot} \\${loadaddr} \\${overlays_file}; env import -t \\${loadaddr} \\${filesize}"'
+env set fdt_resize 'fdt addr ${fdt_addr_r} && fdt resize 0x20000'
+env set set_bootcmd_dtb 'env set bootcmd_dtb "echo Loading DeviceTree: \\${fdtfile}; ${load_cmd} \\${fdt_addr_r} \\${load_prefix}\\${fdtfile}"'
+env set set_apply_overlays 'env set apply_overlays "for overlay_file in \\${fdt_overlays}; do echo Applying Overlay: \\${overlay_file} && ${load_cmd_boot} \\${loadaddr} \\${overlays_prefix}\\${overlay_file} && fdt apply \\${loadaddr}; env set overlay_file; done; true"'
+env set bootcmd_boot 'echo "Bootargs: \${bootargs}" && @@KERNEL_BOOTCMD@@ ${kernel_addr_r} - ${fdt_addr_r}'
if test -n ${setup}; then
run setup
@@ -79,52 +41,17 @@
env set bootcmd_unzip 'unzip ${kernel_addr_load} ${kernel_addr_r}'
else
env set bootcmd_unzip ';'
- if test ${kernel_image} = "fitImage"
- then
- env set kernel_addr_load ${ramdisk_addr_r}
- else
- env set kernel_addr_load ${kernel_addr_r}
- fi
-fi
-
-# Set dynamic commands
-env set set_bootcmd_kernel 'env set bootcmd_kernel "${load_cmd} \\${kernel_addr_load} \\${kernel_image}"'
-env set set_load_overlays_file 'env set load_overlays_file "${load_cmd} \\${loadaddr} \\${overlays_file}; env import -t \\${loadaddr} \\${filesize}"'
-if test ${kernel_image} = "fitImage"
-then
- env set fdt_high
- env set fdt_resize true
- env set set_bootcmd_dtb 'env set bootcmd_dtb "true"'
- env set set_apply_overlays 'env set apply_overlays "for overlay_file in \"\\${fdt_overlays}\"; do env set fitconf_fdt_overlays \"\\"\\${fitconf_fdt_overlays}#conf@\\${overlay_file}\\"\"; env set overlay_file; done; true"'
- env set bootcmd_boot 'echo "Bootargs: \${bootargs}" && bootm ${ramdisk_addr_r}#conf@\${fdtfile}\${fitconf_fdt_overlays}'
-else
- env set fdt_resize 'fdt addr ${fdt_addr_r} && fdt resize 0x20000'
- env set set_bootcmd_dtb 'env set bootcmd_dtb "echo Loading DeviceTree: \\${fdtfile}; ${load_cmd} \\${fdt_addr_r} \\${fdtfile}"'
- env set set_apply_overlays 'env set apply_overlays "for overlay_file in \\${fdt_overlays}; do echo Applying Overlay: \\${overlay_file} && ${load_cmd} \\${loadaddr} \\${overlays_prefix}\\${overlay_file} && fdt apply \\${loadaddr}; env set overlay_file; done; true"'
- env set bootcmd_boot 'echo "Bootargs: \${bootargs}" && @@KERNEL_BOOTCMD@@ ${kernel_addr_r} - ${fdt_addr_r}'
-fi
-
-# Set static commands
-if test ${root_devtype} = "nfs-dhcp"; then
- env set rootfsargs_set 'env set rootfsargs "root=/dev/nfs ip=dhcp"'
-else
- if test ${root_devtype} = "nfs-static"; then
- env set rootfsargs_set 'env set rootfsargs "root=/dev/nfs nfsroot=${serverip}:/${rootpath}"'
- else
- env set uuid_set 'part uuid ${root_devtype} ${root_devnum}:${root_part} uuid'
- env set rootfsargs_set 'run uuid_set && env set rootfsargs root=PARTUUID=${uuid} ro rootwait'
- fi
+ env set kernel_addr_load ${kernel_addr_r}
fi
+env set rootfsargs_set 'env set rootfsargs root=${mender_kernel_root} ro rootwait'
env set bootcmd_args 'run rootfsargs_set && env set bootargs ${defargs} ${rootfsargs} ${setupargs} ${vidargs} ${tdxargs}'
-if test ${skip_fdt_overlays} != 1; then
- env set bootcmd_overlays 'run load_overlays_file && run fdt_resize && run apply_overlays'
-else
- env set bootcmd_overlays true
-fi
+env set bootcmd_overlays 'run load_overlays_file && run fdt_resize && run apply_overlays'
env set bootcmd_prepare 'run set_bootcmd_kernel; run set_bootcmd_dtb; run set_load_overlays_file; run set_apply_overlays'
-env set bootcmd_run 'run m4boot; run bootcmd_dtb && run bootcmd_overlays && run bootcmd_args && run bootcmd_kernel && run bootcmd_unzip && run bootcmd_boot; echo "Booting from ${devtype} failed!" && false'
+env set bootcmd_run 'run m4boot; run bootcmd_dtb && run bootcmd_overlays && run bootcmd_args && run bootcmd_kernel && run bootcmd_unzip && run bootcmd_boot; echo "Booting from ${devtype} failed!"'
run bootcmd_prepare
+run mender_setup
run bootcmd_run
+run mender_try_to_recover