1 menu "System configuration"
3 # Note on package/skeleton: usually, it is not safe to 'select' a
4 # provider of a virtual package. But below we have an exception: each
5 # init system may select one of the virtual skeleton-init-* packages.
6 # As only one init system may be enabled, only one skeleton-init-* may
7 # be selected. So this is a safe situation.
9 prompt "Root FS skeleton"
11 config BR2_ROOTFS_SKELETON_DEFAULT
12 bool "default target skeleton"
14 Use default target skeleton for selected init system.
16 config BR2_ROOTFS_SKELETON_CUSTOM
17 bool "custom target skeleton"
18 select BR2_PACKAGE_SKELETON_CUSTOM
20 Use custom target skeleton.
22 # skeleton from br2-external trees, if any
23 source "$BR2_BASE_DIR/.br2-external.in.skeleton"
27 if BR2_ROOTFS_SKELETON_CUSTOM
29 config BR2_ROOTFS_SKELETON_CUSTOM_PATH
30 string "custom target skeleton path"
32 Path to custom target skeleton.
36 if BR2_ROOTFS_SKELETON_DEFAULT
38 config BR2_TARGET_GENERIC_HOSTNAME
39 string "System hostname"
42 Select system hostname to be stored in /etc/hostname.
44 Leave empty to not create /etc/hostname, or to keep the
45 one from a custom skeleton.
47 config BR2_TARGET_GENERIC_ISSUE
48 string "System banner"
49 default "Welcome to Buildroot"
51 Select system banner (/etc/issue) to be displayed at login.
53 Leave empty to not create /etc/issue, or to keep the
54 one from a custom skeleton.
59 bool "Passwords encoding"
60 default BR2_TARGET_GENERIC_PASSWD_SHA256
62 Choose the password encoding scheme to use when Buildroot
63 needs to encode a password (eg. the root password, below).
65 Note: this is used at build-time, and *not* at runtime.
67 config BR2_TARGET_GENERIC_PASSWD_SHA256
70 Use SHA256 to encode passwords which is stronger than MD5.
72 config BR2_TARGET_GENERIC_PASSWD_SHA512
75 Use SHA512 to encode passwords which is stronger than SHA256
77 endchoice # Passwd encoding
79 config BR2_TARGET_GENERIC_PASSWD_METHOD
81 default "md5" if BR2_TARGET_GENERIC_PASSWD_MD5
82 default "sha-256" if BR2_TARGET_GENERIC_PASSWD_SHA256
83 default "sha-512" if BR2_TARGET_GENERIC_PASSWD_SHA512
85 # See comment at the top of the file, about selecting individual
86 # skeletons, which are providers of the virtual skeleton package.
89 default BR2_INIT_BUSYBOX
91 config BR2_INIT_BUSYBOX
93 select BR2_PACKAGE_BUSYBOX
94 select BR2_PACKAGE_INITSCRIPTS
95 select BR2_PACKAGE_SKELETON_INIT_SYSV if BR2_ROOTFS_SKELETON_DEFAULT
99 depends on BR2_USE_MMU # sysvinit
100 select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # sysvinit
101 select BR2_PACKAGE_INITSCRIPTS
102 select BR2_PACKAGE_SYSVINIT
103 select BR2_PACKAGE_SKELETON_INIT_SYSV if BR2_ROOTFS_SKELETON_DEFAULT
105 config BR2_INIT_OPENRC
107 depends on BR2_USE_MMU
108 depends on !BR2_STATIC_LIBS
109 select BR2_PACKAGE_OPENRC
110 select BR2_PACKAGE_SKELETON_INIT_OPENRC if BR2_ROOTFS_SKELETON_DEFAULT
112 comment "openrc needs a toolchain w/ dynamic library"
113 depends on BR2_USE_MMU
114 depends on BR2_STATIC_LIBS
116 # In Buildroot, we decided not to support a split-usr when systemd is
117 # used as an init system. This is a design decision, not a systemd
118 # issue. Thus the select is with BR2_INIT_SYSTEMD (below) rather than
119 # with BR2_PACKAGE_SYSTEMD.
120 config BR2_INIT_SYSTEMD
122 depends on BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS
123 depends on BR2_USE_MMU
124 depends on !BR2_STATIC_LIBS
125 depends on BR2_TOOLCHAIN_USES_GLIBC
126 depends on BR2_TOOLCHAIN_HAS_SSP
127 depends on BR2_TOOLCHAIN_HAS_THREADS
128 depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10
129 depends on BR2_TOOLCHAIN_GCC_AT_LEAST_5
130 depends on BR2_HOST_GCC_AT_LEAST_5
131 select BR2_ROOTFS_MERGED_USR
132 select BR2_PACKAGE_SYSTEMD
133 select BR2_PACKAGE_SKELETON_INIT_SYSTEMD if BR2_ROOTFS_SKELETON_DEFAULT
135 comment "systemd needs a glibc toolchain w/ SSP, headers >= 3.10, host and target gcc >= 5"
136 depends on BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS
137 depends on BR2_USE_MMU
138 depends on !BR2_TOOLCHAIN_USES_GLIBC || \
139 !BR2_TOOLCHAIN_HAS_SSP || \
140 !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10 || \
141 !BR2_TOOLCHAIN_GCC_AT_LEAST_5 || \
142 !BR2_HOST_GCC_AT_LEAST_5
146 select BR2_PACKAGE_SKELETON_INIT_NONE if BR2_ROOTFS_SKELETON_DEFAULT
148 Buildroot will not install any init system. You will
149 have to provide your own, either with a new package
150 or with a rootfs-overlay.
155 prompt "/dev management" if !BR2_INIT_SYSTEMD
156 default BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS
158 config BR2_ROOTFS_DEVICE_CREATION_STATIC
159 bool "Static using device table"
161 config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS
162 bool "Dynamic using devtmpfs only"
164 config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV
165 bool "Dynamic using devtmpfs + mdev"
166 select BR2_PACKAGE_BUSYBOX
168 config BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV
169 bool "Dynamic using devtmpfs + eudev"
170 depends on BR2_USE_WCHAR # eudev
171 depends on !BR2_STATIC_LIBS
172 depends on BR2_USE_MMU # eudev
173 select BR2_PACKAGE_EUDEV
175 comment "eudev needs a toolchain w/ wchar, dynamic library"
176 depends on BR2_USE_MMU
177 depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS
181 comment "/dev management using udev (from systemd)"
182 depends on BR2_INIT_SYSTEMD
184 config BR2_ROOTFS_DEVICE_TABLE
185 string "Path to the permission tables"
186 default "system/device_table.txt"
188 Specify a space-separated list of permission table locations,
189 that will be passed to the makedevs utility to assign
190 correct owners and permissions on various files in the
193 See package/makedevs/README for details on the usage and
194 syntax of these files.
196 config BR2_ROOTFS_STATIC_DEVICE_TABLE
197 string "Path to the device tables"
198 default "system/device_table_dev.txt"
199 depends on BR2_ROOTFS_DEVICE_CREATION_STATIC
201 Specify a space-separated list of device table locations,
202 that will be passed to the makedevs utility to create all
203 the special device files under /dev.
205 See package/makedevs/README for details on the usage and
206 syntax of these files.
208 config BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES
209 bool "support extended attributes in device tables"
211 Support extended attributes handling in device tables
213 config BR2_ROOTFS_MERGED_USR
214 bool "Use symlinks to /usr for /bin, /sbin and /lib"
216 If you say 'n' here, then /bin, /sbin and /lib and their
217 counterparts in /usr will be separate directories. This
218 is the historical UNIX way. In this case, /usr can be a
219 filesystem on a partition separate from / .
221 If you say 'y' here, then /bin, /sbin and /lib will be
222 symlinks to their counterparts in /usr. In this case, /usr can
223 not be a separate filesystem.
225 if BR2_ROOTFS_SKELETON_DEFAULT
227 config BR2_TARGET_ENABLE_ROOT_LOGIN
228 bool "Enable root login with password"
230 select BR2_PACKAGE_HOST_MKPASSWD if BR2_TARGET_GENERIC_ROOT_PASSWD != ""
232 Allow root to log in with a password.
234 If not enabled, root will not be able to log in with a
235 password. However, if you have an ssh server and you add an
236 ssh key, you can still allow root to log in. Alternatively,
237 you can use sudo to become root.
239 config BR2_TARGET_GENERIC_ROOT_PASSWD
240 string "Root password"
242 depends on BR2_TARGET_ENABLE_ROOT_LOGIN
244 Set the initial root password.
246 If set to empty (the default), then no root password will be
247 set, and root will need no password to log in.
249 If the password starts with any of $1$, $5$ or $6$, it is
250 considered to be already crypt-encoded with respectively md5,
251 sha256 or sha512. Any other value is taken to be a clear-text
252 value, and is crypt-encoded as per the "Passwords encoding"
255 Note: "$" signs in the hashed password must be doubled. For
256 example, if the hashed password is
257 "$1$longsalt$v35DIIeMo4yUfI23yditq0", then you must enter it
258 as "$$1$$longsalt$$v35DIIeMo4yUfI23yditq0" (this is necessary
259 otherwise make would attempt to interpret the $ as a variable
263 The password appears as-is in the .config file, and may appear
264 in the build log! Avoid using a valuable password if either
265 the .config file or the build log may be distributed, or at
266 the very least use a strong cryptographic hash for your
271 default BR2_SYSTEM_BIN_SH_DASH if !BR2_PACKAGE_BUSYBOX
273 Select which shell will provide /bin/sh.
275 # busybox has shells that work on noMMU
276 config BR2_SYSTEM_BIN_SH_BUSYBOX
277 bool "busybox' default shell"
278 depends on BR2_PACKAGE_BUSYBOX
280 config BR2_SYSTEM_BIN_SH_BASH
282 depends on BR2_USE_MMU # bash
283 depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
284 select BR2_PACKAGE_BASH
286 config BR2_SYSTEM_BIN_SH_DASH
288 depends on BR2_USE_MMU # dash
289 depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
290 select BR2_PACKAGE_DASH
292 config BR2_SYSTEM_BIN_SH_MKSH
294 depends on BR2_USE_MMU # mksh
295 depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
296 select BR2_PACKAGE_MKSH
298 config BR2_SYSTEM_BIN_SH_ZSH
300 depends on BR2_USE_MMU # zsh
301 depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
302 select BR2_PACKAGE_ZSH
304 comment "bash, dash, mksh, zsh need BR2_PACKAGE_BUSYBOX_SHOW_OTHERS"
305 depends on !BR2_PACKAGE_BUSYBOX_SHOW_OTHERS && BR2_PACKAGE_BUSYBOX
307 config BR2_SYSTEM_BIN_SH_NONE
312 config BR2_SYSTEM_BIN_SH
314 default "bash" if BR2_SYSTEM_BIN_SH_BASH
315 default "dash" if BR2_SYSTEM_BIN_SH_DASH
316 default "mksh" if BR2_SYSTEM_BIN_SH_MKSH
317 default "zsh" if BR2_SYSTEM_BIN_SH_ZSH
319 menuconfig BR2_TARGET_GENERIC_GETTY
320 bool "Run a getty (login prompt) after boot"
323 if BR2_TARGET_GENERIC_GETTY
324 config BR2_TARGET_GENERIC_GETTY_PORT
328 Specify a port to run a getty on.
332 default BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP
334 Select a baudrate to use.
336 config BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP
337 bool "keep kernel default"
338 config BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600
340 config BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200
342 config BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400
344 config BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600
346 config BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200
350 config BR2_TARGET_GENERIC_GETTY_BAUDRATE
352 default "0" if BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP
353 default "9600" if BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600
354 default "19200" if BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200
355 default "38400" if BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400
356 default "57600" if BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600
357 default "115200" if BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200
359 config BR2_TARGET_GENERIC_GETTY_TERM
360 string "TERM environment variable"
362 # currently observed by all but systemd
363 depends on !BR2_INIT_SYSTEMD
367 config BR2_TARGET_GENERIC_GETTY_OPTIONS
368 string "other options to pass to getty"
370 # currently observed by all but systemd
371 depends on !BR2_INIT_SYSTEMD
373 Any other flags you want to pass to getty,
374 Refer to getty --help for details.
377 config BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW
378 bool "remount root filesystem read-write during boot"
381 The root filesystem is typically mounted read-only at boot.
382 By default, buildroot remounts it in read-write mode early
383 during the boot process.
384 Say no here if you would rather like your root filesystem to
388 config BR2_SYSTEM_DHCP
389 string "Network interface to configure through DHCP"
391 depends on BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_IFUPDOWN || \
392 BR2_PACKAGE_SYSTEMD_NETWORKD || BR2_PACKAGE_NETIFRC
394 Enter here the name of the network interface (E.G. eth0) to
395 automatically configure through DHCP at bootup.
397 If left empty, no automatic DHCP requests will take place.
399 For more complicated network setups use an overlay to
400 overwrite /etc/network/interfaces or add a networkd
403 comment "automatic network configuration via DHCP needs ifupdown or busybox or networkd or netifrc"
404 depends on !(BR2_PACKAGE_BUSYBOX || BR2_PACKAGE_IFUPDOWN || \
405 BR2_PACKAGE_SYSTEMD_NETWORKD || BR2_PACKAGE_NETIFRC)
407 endif # BR2_ROOTFS_SKELETON_DEFAULT
409 config BR2_SYSTEM_DEFAULT_PATH
410 string "Set the system's default PATH"
411 default "/usr/bin:/usr/sbin" if BR2_ROOTFS_MERGED_USR
412 default "/bin:/sbin:/usr/bin:/usr/sbin" if !BR2_ROOTFS_MERGED_USR
414 Sets the system's default PATH. It is being used in
415 /etc/profile in the skeleton-init-common package and by some
418 The default should work in most cases.
420 config BR2_ENABLE_LOCALE_PURGE
421 bool "Purge unwanted locales"
424 Explicitly specify what locales to install on target. If N
425 then all locales supported by packages are installed.
427 config BR2_ENABLE_LOCALE_WHITELIST
428 string "Locales to keep"
430 depends on BR2_ENABLE_LOCALE_PURGE
432 Whitespace seperated list of locales to allow on target.
433 Locales not listed here will be removed from the target.
434 See 'locale -a' on your host for a list of locales available
435 on your build host, or have a look in /usr/share/locale in
436 the target file system for available locales.
438 Notice that listing a locale here doesn't guarantee that it
439 will be available on the target - That purely depends on the
440 support for that locale in the selected packages.
442 config BR2_GENERATE_LOCALE
443 string "Generate locale data"
446 (BR2_TOOLCHAIN_BUILDROOT_UCLIBC && BR2_ENABLE_LOCALE) || \
447 BR2_TOOLCHAIN_USES_GLIBC
449 Generate support for a list of locales. Locales can be
450 specified with or without encoding, when no encoding is
451 specified, UTF-8 is assumed. Examples of locales: en_US,
454 config BR2_SYSTEM_ENABLE_NLS
455 bool "Enable Native Language Support (NLS)"
456 depends on BR2_USE_WCHAR
457 # - glibc has built-in NLS support, but anyway doesn't
458 # support static linking
459 # - musl and uclibc support static linking, but they don't
460 # have built-in NLS support, which is provided by the
461 # libintl library from gettext. The fact that it is a
462 # separate library causes too many problems for static
464 depends on !BR2_STATIC_LIBS
465 select BR2_PACKAGE_GETTEXT if !BR2_TOOLCHAIN_HAS_FULL_GETTEXT
467 This option will enable Native Language Support, which will
468 allow software packages to support translations.
470 comment "NLS support needs a toolchain w/ wchar, dynamic library"
471 depends on !BR2_USE_WCHAR || BR2_STATIC_LIBS
473 config BR2_TARGET_TZ_INFO
474 bool "Install timezone info"
475 select BR2_PACKAGE_TZDATA if BR2_TOOLCHAIN_USES_GLIBC
476 select BR2_PACKAGE_TZDATA if BR2_TOOLCHAIN_USES_MUSL
477 select BR2_PACKAGE_TZ if BR2_TOOLCHAIN_USES_UCLIBC
479 Say 'y' here to install timezone info.
481 if BR2_TARGET_TZ_INFO
483 config BR2_TARGET_TZ_ZONELIST
484 string "timezone list"
487 Space-separated list of time zones to compile.
489 The value "default" includes all commonly used time zones.
490 Note that this set consumes around 5.5M for glibc and 2.1M for
493 The full list is the list of files in the time zone database
494 source, not including the build and .tab files.
496 config BR2_TARGET_LOCALTIME
497 string "default local time"
500 The time zone to install as the default local time, expressed
501 as a tzdata location, such as:
502 Etc/UTC (the default)
509 Set to empty to not install a default time zone.
511 endif # BR2_TARGET_TZ_INFO
513 config BR2_ROOTFS_USERS_TABLES
514 string "Path to the users tables"
516 Specify a space-separated list of users table locations,
517 that will be passed to the mkusers utility to create
518 users on the system, with home directory, password, etc.
520 See manual for details on the usage and syntax of these files.
522 config BR2_ROOTFS_OVERLAY
523 string "Root filesystem overlay directories"
526 Specify a list of directories that are copied over the target
527 root filesystem after the build has finished and before it is
528 packed into the selected filesystem images.
530 They are copied as-is into the rootfs, excluding files ending
531 with ~ and .git, .svn and .hg directories.
533 config BR2_ROOTFS_POST_BUILD_SCRIPT
534 string "Custom scripts to run before creating filesystem images"
537 Specify a space-separated list of scripts to be run after the
538 build has finished and before Buildroot starts packing the
539 files into selected filesystem images.
541 This gives users the opportunity to do board-specific
542 cleanups, add-ons and the like, so the generated files can be
543 used directly without further processing.
545 These scripts are called with the target directory name as
546 first argument. Make sure the exit code of those scripts are
547 0, otherwise make will stop after calling them.
549 config BR2_ROOTFS_POST_FAKEROOT_SCRIPT
550 string "Custom scripts to run inside the fakeroot environment"
553 Specify a space-separated list of scripts to be run at the end
554 of the fakeroot script right before the image(s) are actually
557 This gives users the opportunity to do customisations of the
558 content of the rootfs, which would otherwise require root
561 These scripts are called with the target directory name as
562 first argument. The build will fail on the first scripts that
563 exits with a non-zero exit code.
565 Note that Buildroot already provides mechanisms to customise
566 the content of the rootfs:
568 - BR2_ROOTFS_STATIC_DEVICE_TABLE
569 to create arbitrary entries statically in /dev
571 - BR2_ROOTFS_DEVICE_TABLE
572 to set arbitrary permissions as well as extended
573 attributes (such as capabilities) on files and
576 - BR2_ROOTFS_USERS_TABLES:
577 to create arbitrary users and their home directories
579 It is highly recommended to use those mechanisms if possible,
580 rather than using custom fakeroot scripts.
582 config BR2_ROOTFS_POST_IMAGE_SCRIPT
583 string "Custom scripts to run after creating filesystem images"
586 Specify a space-separated list of scripts to be run after
587 the build has finished and after Buildroot has packed the
588 files into selected filesystem images.
590 This can for example be used to call a tool building a
591 firmware image from different images generated by Buildroot,
592 or automatically extract the tarball root filesystem image
593 into some location exported by NFS, or any other custom
596 These scripts are called with the images directory name as
597 first argument. The script is executed from the main Buildroot
598 source directory as the current directory.
600 config BR2_ROOTFS_POST_SCRIPT_ARGS
601 string "Extra arguments passed to custom scripts"
602 depends on BR2_ROOTFS_POST_BUILD_SCRIPT != "" \
603 || BR2_ROOTFS_POST_FAKEROOT_SCRIPT != "" \
604 || BR2_ROOTFS_POST_IMAGE_SCRIPT != ""
606 Pass these additional arguments to each post-build or
609 Note that all the post-build and post-image scripts will be
610 passed the same set of arguments, you can not pass different
611 arguments to each script.
613 Note also, as stated in their respective help text, that the
614 first argument to each post-build or post-image script is the
615 target directory / images directory. The arguments in this
616 option will be passed *after* those.