blob: 5e9a5e1cf7fe09367c19517e36988a66a88df868 [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001SPDX-License-Identifier: GPL-2.0+
wdenkcc1c8a12002-11-02 22:58:18 +00002/*
3 * (C) Copyright 2001
4 * Dave Ellis, SIXNET, dge@sixnetio.com
5 *
wdenkcc1c8a12002-11-02 22:58:18 +00006 */
7
8Using autoboot configuration options
9====================================
10
11The basic autoboot configuration options are documented in the main
12U-Boot README. See it for details. They are:
13
14 bootdelay
15 bootcmd
16 CONFIG_BOOTDELAY
17 CONFIG_BOOTCOMMAND
18
19Some additional options that make autoboot safer in a production
20product are documented here.
21
22Why use them?
23-------------
24
25The basic autoboot feature allows a system to automatically boot to
26the real application (such as Linux) without a user having to enter
27any commands. If any key is pressed before the boot delay time
28expires, U-Boot stops the autoboot process, gives a U-Boot prompt
29and waits forever for a command. That's a good thing if you pressed a
30key because you wanted to get the prompt.
31
32It's not so good if the key press was a stray character on the
33console serial port, say because a user who knows nothing about
34U-Boot pressed a key before the system had time to boot. It's even
35worse on an embedded product that doesn't have a console during
36normal use. The modem plugged into that console port sends a
37character at the wrong time and the system hangs, with no clue as to
38why it isn't working.
39
40You might want the system to autoboot to recover after an external
41configuration program stops autoboot. If the configuration program
42dies or loses its connection (modems can disconnect at the worst
43time) U-Boot will patiently wait forever for it to finish.
44
45These additional configuration options can help provide a system that
46boots when it should, but still allows access to U-Boot.
47
48What they do
49------------
50
51 CONFIG_BOOT_RETRY_TIME
52 CONFIG_BOOT_RETRY_MIN
53
wdenk391b5742004-10-10 23:27:33 +000054 "bootretry" environment variable
wdenkcc1c8a12002-11-02 22:58:18 +000055
wdenk57b2d802003-06-27 21:31:46 +000056 These options determine what happens after autoboot is
57 stopped and U-Boot is waiting for commands.
wdenkcc1c8a12002-11-02 22:58:18 +000058
wdenk57b2d802003-06-27 21:31:46 +000059 CONFIG_BOOT_RETRY_TIME must be defined to enable the boot
wdenk391b5742004-10-10 23:27:33 +000060 retry feature. If the environment variable "bootretry" is
wdenk57b2d802003-06-27 21:31:46 +000061 found then its value is used, otherwise the retry timeout is
62 CONFIG_BOOT_RETRY_TIME. CONFIG_BOOT_RETRY_MIN is optional and
63 defaults to CONFIG_BOOT_RETRY_TIME. All times are in seconds.
wdenkcc1c8a12002-11-02 22:58:18 +000064
wdenk57b2d802003-06-27 21:31:46 +000065 If the retry timeout is negative, the U-Boot command prompt
66 never times out. Otherwise it is forced to be at least
67 CONFIG_BOOT_RETRY_MIN seconds. If no valid U-Boot command is
68 entered before the specified time the boot delay sequence is
69 restarted. Each command that U-Boot executes restarts the
70 timeout.
wdenkcc1c8a12002-11-02 22:58:18 +000071
wdenk57b2d802003-06-27 21:31:46 +000072 If CONFIG_BOOT_RETRY_TIME < 0 the feature is there, but
73 doesn't do anything unless the environment variable
wdenk391b5742004-10-10 23:27:33 +000074 "bootretry" is >= 0.
wdenkcc1c8a12002-11-02 22:58:18 +000075
76 CONFIG_AUTOBOOT_KEYED
Mark Langsdorfc3012262013-09-10 15:20:23 -050077 CONFIG_AUTOBOOT_KEYED_CTRLC
wdenkcc1c8a12002-11-02 22:58:18 +000078 CONFIG_AUTOBOOT_PROMPT
79 CONFIG_AUTOBOOT_DELAY_STR
80 CONFIG_AUTOBOOT_STOP_STR
wdenkcc1c8a12002-11-02 22:58:18 +000081
wdenk391b5742004-10-10 23:27:33 +000082 "bootdelaykey" environment variable
wdenk17b211b2004-10-11 23:10:30 +000083 "bootstopkey" environment variable
wdenkcc1c8a12002-11-02 22:58:18 +000084
wdenk57b2d802003-06-27 21:31:46 +000085 These options give more control over stopping autoboot. When
86 they are used a specific character or string is required to
87 stop or delay autoboot.
wdenkcc1c8a12002-11-02 22:58:18 +000088
89 Define CONFIG_AUTOBOOT_KEYED (no value required) to enable
wdenk17b211b2004-10-11 23:10:30 +000090 this group of options. CONFIG_AUTOBOOT_DELAY_STR,
wdenkcc1c8a12002-11-02 22:58:18 +000091 CONFIG_AUTOBOOT_STOP_STR or both should be specified (or
92 specified by the corresponding environment variable),
93 otherwise there is no way to stop autoboot.
94
wdenk57b2d802003-06-27 21:31:46 +000095 CONFIG_AUTOBOOT_PROMPT is displayed before the boot delay
96 selected by CONFIG_BOOTDELAY starts. If it is not defined
97 there is no output indicating that autoboot is in progress.
Stefan Roese37628252008-08-06 14:05:38 +020098
99 Note that CONFIG_AUTOBOOT_PROMPT is used as the (only)
100 argument to a printf() call, so it may contain '%' format
101 specifications, provided that it also includes, sepearated by
102 commas exactly like in a printf statement, the required
103 arguments. It is the responsibility of the user to select only
104 such arguments that are valid in the given context. A
105 reasonable prompt could be defined as
106
107 #define CONFIG_AUTOBOOT_PROMPT \
108 "autoboot in %d seconds\n",bootdelay
wdenkcc1c8a12002-11-02 22:58:18 +0000109
wdenk17b211b2004-10-11 23:10:30 +0000110 If CONFIG_AUTOBOOT_DELAY_STR or "bootdelaykey" is specified
111 and this string is received from console input before
112 autoboot starts booting, U-Boot gives a command prompt. The
113 U-Boot prompt will time out if CONFIG_BOOT_RETRY_TIME is
114 used, otherwise it never times out.
wdenkcc1c8a12002-11-02 22:58:18 +0000115
wdenk17b211b2004-10-11 23:10:30 +0000116 If CONFIG_AUTOBOOT_STOP_STR or "bootstopkey" is specified and
117 this string is received from console input before autoboot
118 starts booting, U-Boot gives a command prompt. The U-Boot
119 prompt never times out, even if CONFIG_BOOT_RETRY_TIME is
120 used.
wdenkcc1c8a12002-11-02 22:58:18 +0000121
wdenk57b2d802003-06-27 21:31:46 +0000122 The string recognition is not very sophisticated. If a
123 partial match is detected, the first non-matching character
124 is checked to see if starts a new match. There is no check
125 for a shorter partial match, so it's best if the first
126 character of a key string does not appear in the rest of the
127 string.
wdenkcc1c8a12002-11-02 22:58:18 +0000128
Mark Langsdorfc3012262013-09-10 15:20:23 -0500129 The CONFIG_AUTOBOOT_KEYED_CTRLC #define allows for the boot
130 sequence to be interrupted by ctrl-c, in addition to the
131 "bootdelaykey" and "bootstopkey". Setting this variable
132 provides an escape sequence from the limited "password"
133 strings.
134
Simon Glassa8cab882019-07-20 20:51:17 -0600135 CONFIG_AUTOBOOT_ENCRYPTION
136
137 "bootstopkeysha256" environment variable
138
139 - Hash value of the input which unlocks the device and
140 stops autoboot.
141
142 This option allows a string to be entered into U-Boot to stop the
143 autoboot. The string itself is hashed and compared against the hash
144 in the environment variable 'bootstopkeysha256'. If it matches then
145 boot stops and a command-line prompt is presented.
146
147 This provides a way to ship a secure production device which can also
148 be accessed at the U-Boot command line.
149
wdenkcc1c8a12002-11-02 22:58:18 +0000150 CONFIG_RESET_TO_RETRY
151
wdenk57b2d802003-06-27 21:31:46 +0000152 (Only effective when CONFIG_BOOT_RETRY_TIME is also set)
153 After the countdown timed out, the board will be reset to restart
154 again.
Simon Glass9e476d92019-07-20 20:51:21 -0600155
156 CONFIG_AUTOBOOT_USE_MENUKEY
157 CONFIG_AUTOBOOT_MENUKEY
158
159 If this key is pressed to stop autoboot, then the commands in the
160 environment variable 'menucmd' will be executed before boot starts.
161 For example, 33 means "!" in ASCII, so pressing ! at boot would take
162 this action.