hc
2023-12-09 b22da3d8526a935aa31e086e63f60ff3246cb61c
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
menu "Kernel"
 
config BR2_LINUX_KERNEL
   bool "Linux Kernel"
   select BR2_PACKAGE_HOST_KMOD # Unconditional, even if modules not enabled
   select BR2_PACKAGE_HOST_IMAGEMAGICK if BR2_LINUX_KERNEL_CUSTOM_LOGO_PATH != ""
   help
     Enable this option if you want to build a Linux kernel for
     your embedded device
 
if BR2_LINUX_KERNEL
 
# Packages that need to have a kernel with support for loadable modules,
# but do not use the kernel-modules infrastructure, should select that
# option.
config BR2_LINUX_NEEDS_MODULES
   bool
 
endif # BR2_LINUX_KERNEL
 
#
# Version selection. We provide the choice between:
#
#  1. A single fairly recent stable kernel version
#  2. A custom stable version
#  3. A custom tarball
#  4. A set of custom repository locations
#  5. A custom local version
#
choice
   prompt "Kernel version"
 
config BR2_LINUX_KERNEL_LATEST_VERSION
   bool "Latest version (5.13)"
 
config BR2_LINUX_KERNEL_LATEST_CIP_VERSION
   bool "Latest CIP SLTS version (4.19.182-cip45)"
   help
     CIP launched in the spring of 2016 to address the needs of
     organizations in industries such as power generation and
     distribution, water, oil and gas, transportation, building
     automation and more for reliable and secure Linux-based
     embedded systems that can be sustained over a period of
     10 to as many as 60 years.
     The project's goal is to provide an open source base layer
     of industrial-grade software that permits the use and
     implementation of software building blocks that meet
     these requirements.
 
     The CIP community plans to maintain 4.19 for security and
     bug fixes for more than 10 years.
 
     https://www.cip-project.org
 
config BR2_LINUX_KERNEL_LATEST_CIP_RT_VERSION
   bool "Latest CIP RT SLTS version (4.19.165-cip41-rt18)"
   help
     Same as the CIP version, but this is the PREEMPT_RT realtime
     variant.
 
     The CIP community plans to maintain 4.19 for security and
     bug fixes for more than 10 years.
 
     https://www.cip-project.org
 
config BR2_LINUX_KERNEL_CUSTOM_VERSION
   bool "Custom version"
   help
     This option allows to use a specific official version from
     kernel.org, like 2.6.x, 2.6.x.y, 3.x.y, ...
 
     Note: you cannot use this option to select a _longterm_ 2.6
     kernel, because these kernels are not located at the standard
     URL at kernel.org. Instead, select "Custom tarball" and
     specify the right URL directly.
 
config BR2_LINUX_KERNEL_CUSTOM_TARBALL
   bool "Custom tarball"
   help
     This option allows to specify a URL pointing to a kernel
     source tarball. This URL can use any protocol recognized by
     Buildroot, like http://, ftp://, file:// or scp://.
 
     When pointing to a local tarball using file://, you may want
     to use a make variable like $(TOPDIR) to reference the root of
     the Buildroot tree.
 
config BR2_LINUX_KERNEL_CUSTOM_LOCAL
   bool "Custom local"
   help
     This option allows to specify path of local kernel source.
 
     You may want to use a make variable like $(TOPDIR) to reference
     the root of the Buildroot tree.
 
config BR2_LINUX_KERNEL_CUSTOM_GIT
   bool "Custom Git repository"
   help
     This option allows Buildroot to get the Linux kernel source
     code from a Git repository.
 
config BR2_LINUX_KERNEL_CUSTOM_HG
   bool "Custom Mercurial repository"
   help
     This option allows Buildroot to get the Linux kernel source
     code from a Mercurial repository.
 
config BR2_LINUX_KERNEL_CUSTOM_SVN
   bool "Custom Subversion repository"
   help
     This option allows Buildroot to get the Linux kernel source
     code from a Subversion repository.
 
endchoice
 
config BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE
   string "Kernel version"
   depends on BR2_LINUX_KERNEL_CUSTOM_VERSION
 
config BR2_LINUX_KERNEL_CUSTOM_TARBALL_LOCATION
   string "URL of custom kernel tarball"
   depends on BR2_LINUX_KERNEL_CUSTOM_TARBALL
 
config BR2_LINUX_KERNEL_CUSTOM_LOCAL_LOCATION
   string "URL of custom local kernel"
   depends on BR2_LINUX_KERNEL_CUSTOM_LOCAL
 
if BR2_LINUX_KERNEL_CUSTOM_GIT || BR2_LINUX_KERNEL_CUSTOM_HG || BR2_LINUX_KERNEL_CUSTOM_SVN
 
config BR2_LINUX_KERNEL_CUSTOM_REPO_URL
   string "URL of custom repository"
 
config BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION
   string "Custom repository version"
   help
     Revision to use in the typical format used by
     Git/Mercurial/Subversion E.G. a sha id, a tag, branch, ..
 
endif
 
config BR2_LINUX_KERNEL_VERSION
   string
   default "5.13.2" if BR2_LINUX_KERNEL_LATEST_VERSION
   default "4.19.182-cip45" if BR2_LINUX_KERNEL_LATEST_CIP_VERSION
   default "4.19.165-cip41-rt18" if BR2_LINUX_KERNEL_LATEST_CIP_RT_VERSION
   default BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE \
       if BR2_LINUX_KERNEL_CUSTOM_VERSION
   default "custom" if BR2_LINUX_KERNEL_CUSTOM_TARBALL || BR2_LINUX_KERNEL_CUSTOM_LOCAL
   default BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION \
       if BR2_LINUX_KERNEL_CUSTOM_GIT || BR2_LINUX_KERNEL_CUSTOM_HG || BR2_LINUX_KERNEL_CUSTOM_SVN
 
#
# Patch selection
#
 
config BR2_LINUX_KERNEL_PATCH
   string "Custom kernel patches"
   help
     A space-separated list of patches to apply to the
     kernel. Each patch can be described as an URL, a local file
     path, or a directory. In the case of a directory, all files
     matching *.patch in the directory will be applied.
 
if BR2_LINUX_KERNEL
 
#
# Configuration selection
#
 
choice
   prompt "Kernel configuration"
   default BR2_LINUX_KERNEL_USE_DEFCONFIG
 
config BR2_LINUX_KERNEL_USE_DEFCONFIG
   bool "Using an in-tree defconfig file"
 
config BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG
   bool "Use the architecture default configuration"
   help
     This option will use the default configuration for the
     selected architecture. I.e, it is equivalent to running
     "make ARCH=<foo> defconfig". This is useful on architectures
     that have a single defconfig file, such as ARM64.
 
config BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG
   bool "Using a custom (def)config file"
 
endchoice
 
config BR2_LINUX_KERNEL_DEFCONFIG
   string "Defconfig name"
   depends on BR2_LINUX_KERNEL_USE_DEFCONFIG
   help
     Name of the kernel defconfig file to use, without the
     trailing _defconfig.  The defconfig is located in
     arch/<arch>/configs in the kernel tree.
 
config BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE
   string "Configuration file path"
   depends on BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG
   help
     Path to the kernel configuration file
 
     Note: this can be a defconfig file or a complete .config file,
     which can later be saved back with make
     linux-update-(def)config.
 
config BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES
   string "Additional configuration fragment files"
   help
     A space-separated list of kernel configuration fragment files,
     that will be merged to the main kernel configuration file.
 
config BR2_LINUX_KERNEL_CUSTOM_LOGO_PATH
   string "Custom boot logo file path"
   help
     Use a custom Linux framebuffer boot logo.
     Custom logo should be in PNG or JPEG format, it will be
     converted to the linux kernel format (224 colors only)
     and copied over the original logo file.
 
#
# Binary format
#
 
choice
   prompt "Kernel binary format"
   default BR2_LINUX_KERNEL_ZIMAGE if BR2_arm || BR2_armeb
 
config BR2_LINUX_KERNEL_UIMAGE
   bool "uImage"
   depends on BR2_arc || BR2_arm || BR2_armeb || \
          BR2_powerpc || BR2_powerpc64 || BR2_powerpc64le || \
          BR2_sh || BR2_mips || BR2_mipsel || \
          BR2_mips64 || BR2_mips64el || BR2_xtensa
   select BR2_PACKAGE_HOST_UBOOT_TOOLS
 
config BR2_LINUX_KERNEL_APPENDED_UIMAGE
   bool "uImage with appended DT"
   depends on BR2_arm || BR2_armeb
   select BR2_LINUX_KERNEL_DTS_SUPPORT
   select BR2_LINUX_KERNEL_APPENDED_DTB
   select BR2_PACKAGE_HOST_UBOOT_TOOLS
 
config BR2_LINUX_KERNEL_BZIMAGE
   bool "bzImage"
   depends on BR2_i386 || BR2_x86_64 || BR2_s390x
 
config BR2_LINUX_KERNEL_ZIMAGE
   bool "zImage"
   depends on BR2_arm || BR2_armeb || BR2_powerpc || \
          BR2_powerpc64 || BR2_powerpc64le || BR2_sparc || \
          BR2_sh || BR2_xtensa
 
config BR2_LINUX_KERNEL_ZIMAGE_EPAPR
   bool "zImage.epapr"
   depends on BR2_powerpc64 || BR2_powerpc64le
 
config BR2_LINUX_KERNEL_APPENDED_ZIMAGE
   bool "zImage with appended DT"
   depends on BR2_arm || BR2_armeb
   select BR2_LINUX_KERNEL_DTS_SUPPORT
   select BR2_LINUX_KERNEL_APPENDED_DTB
 
config BR2_LINUX_KERNEL_CUIMAGE
   bool "cuImage"
   depends on BR2_powerpc
   select BR2_PACKAGE_HOST_UBOOT_TOOLS
   select BR2_LINUX_KERNEL_DTS_SUPPORT
   select BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT
 
config BR2_LINUX_KERNEL_SIMPLEIMAGE
   bool "simpleImage"
   depends on BR2_microblaze
   select BR2_PACKAGE_HOST_UBOOT_TOOLS
   select BR2_LINUX_KERNEL_DTS_SUPPORT
   select BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT
 
config BR2_LINUX_KERNEL_IMAGE
   bool "Image"
   depends on BR2_aarch64 || BR2_riscv
 
config BR2_LINUX_KERNEL_IMAGEGZ
   bool "Image.gz"
   depends on BR2_aarch64 || BR2_riscv
 
config BR2_LINUX_KERNEL_LINUX_BIN
   bool "linux.bin"
   depends on BR2_microblaze
   select BR2_PACKAGE_HOST_UBOOT_TOOLS
 
config BR2_LINUX_KERNEL_VMLINUX_BIN
   bool "vmlinux.bin"
   depends on BR2_mips || BR2_mipsel || BR2_sh
 
config BR2_LINUX_KERNEL_VMLINUX
   bool "vmlinux"
 
config BR2_LINUX_KERNEL_VMLINUZ
   bool "vmlinuz"
   depends on BR2_mips || BR2_mipsel
 
config BR2_LINUX_KERNEL_VMLINUZ_BIN
   bool "vmlinuz.bin"
   depends on BR2_mips || BR2_mipsel
 
config BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM
   bool "custom target"
   help
     For certain cases a board-specific target image must be
     used.  For example, on powerPC where the OpenFirmware
     description is attached in a board-specific kernel image
     target like 'cuImage.mpc8379_rdb'.
 
     Select this option and specify the make target in "Kernel
     image target name".
 
endchoice
 
#
# Kernel compression format
#
 
choice
   prompt "Kernel compression format"
   help
     This selection will just ensure that the correct host tools
     are built. The actual compression for the kernel should be
     selected in the kernel configuration menu.
 
config BR2_LINUX_KERNEL_GZIP
   bool "gzip compression"
 
config BR2_LINUX_KERNEL_LZ4
   bool "lz4 compression"
 
config BR2_LINUX_KERNEL_LZMA
   bool "lzma compression"
 
config BR2_LINUX_KERNEL_LZO
   bool "lzo compression"
 
config BR2_LINUX_KERNEL_XZ
   bool "xz compression"
 
config BR2_LINUX_KERNEL_ZSTD
   bool "zstd compression"
 
config BR2_LINUX_KERNEL_UNCOMPRESSED
   bool "uncompressed"
   depends on BR2_s390x
 
endchoice
 
config BR2_LINUX_KERNEL_IMAGE_TARGET_NAME
   string "Kernel image target name"
   depends on BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM
   help
     Specify the kernel make target to build the kernel that you
     need.
 
config BR2_LINUX_KERNEL_IMAGE_NAME
   string "Kernel image name"
   depends on BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM
   help
     The filename of the kernel image, if it is different from
     the make target (above). Defaults to
     BR2_LINUX_KERNEL_IMAGE_TARGET_NAME. If specified, the
     filename is relative to arch/ARCH/boot/.
 
     If unsure, leave it empty.
 
config BR2_LINUX_KERNEL_UIMAGE_LOADADDR
   string "load address (for 3.7+ multi-platform image)"
   depends on BR2_arm || BR2_armeb
   depends on BR2_LINUX_KERNEL_UIMAGE || BR2_LINUX_KERNEL_APPENDED_UIMAGE
   help
     If your ARM system's Linux kernel is configured with the new
     (3.7+) multi-architecture support (CONFIG_ARCH_MULTIPLATFORM=y
     in your kernel config), then it is necessary to specify a
     kernel load address when building the uImage. This should be a
     hexadecimal string beginning with 0x, for example: 0x00008000.
 
     If unsure, let this option empty.
 
config BR2_LINUX_KERNEL_DTS_SUPPORT
   bool "Build a Device Tree Blob (DTB)"
   help
     Compile one or more device tree sources into device tree
     blobs.
     Select the dts files to compile in the options below.
 
if BR2_LINUX_KERNEL_DTS_SUPPORT
 
# We have mainly three cases when it comes to device tree support:
#   1) We don't want any support at all. Then the ..DTS_SUPPORT
#      variable won't be set
#   2) We want device tree support, so we need the user to enter the
#      device tree name or the path to the custom device he uses, but
#      the kernel abstracts this from us and only build an image that
#      looks like a regular kernel image. In this case, we only need
#      to derive the kernel image name from the given device tree
#      name, and all the rest is as usual
#   3) We want device tree support, but the kernel requires us to
#      build the device tree blob separately. In this case, some
#      more logic will be needed.
# The variable below address the second case, were you only want
# limited actions from buildroot.
config BR2_LINUX_KERNEL_DTB_IS_SELF_BUILT
   bool "DTB is built by kernel itself"
   help
     Normally, the device tree(s) to be built have to be passed
     explicitly to the kernel build system. For some binary
     formats, however, the kernel build system links in the
     device tree directly in the kernel binary. Select this option
     if you have such a kernel binary format.
 
config BR2_LINUX_KERNEL_APPENDED_DTB
   bool
 
config BR2_LINUX_KERNEL_INTREE_DTS_NAME
   string "In-tree Device Tree Source file names"
   help
     Name of in-tree device tree source file, without
     the trailing .dts. You can provide a list of
     dts files to build, separated by spaces.
 
config BR2_LINUX_KERNEL_CUSTOM_DTS_PATH
   string "Out-of-tree Device Tree Source file paths"
   help
     Path to to out-of-tree device tree source files.
     You can provide a list of dts paths to copy and
     build, separated by spaces.
 
config BR2_LINUX_KERNEL_DTB_KEEP_DIRNAME
   bool "Keep the directory name of the Device Tree"
   help
     If enabled, the device tree blobs keep their
     directory prefixes when they get copied to the
     output image directory or the target directory.
 
config BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT
   bool "Build Device Tree with overlay support"
   help
     If enabled, pass the "-@" option to dtc, such that
     symbols are generated in the compiled Device Tree.
     Choose this option to support Device Tree overlays
     on the target system.
 
endif
 
config BR2_LINUX_KERNEL_INSTALL_TARGET
   bool "Install kernel image to /boot in target"
   depends on !BR2_TARGET_ROOTFS_INITRAMFS
   help
     Select this option to have the kernel image installed to
     /boot in the target root filesystem, as is typically done on
     x86/x86_64 systems.
 
     Note that this option also installs the Device Tree Blobs to
     /boot if DTBs have been generated by the kernel build
     process.
 
config BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL
   bool "Needs host OpenSSL"
   help
     Some Linux kernel configuration options (such as
     CONFIG_SYSTEM_TRUSTED_KEYRING) require building a host
     program called extract-cert, which itself needs
     OpenSSL. Enabling this option will ensure host-openssl gets
     built before the Linux kernel.
 
     Enable this option if you get a Linux kernel build failure
     such as "scripts/extract-cert.c:21:25: fatal error:
     openssl/bio.h: No such file or directory".
 
config BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF
   bool "Needs host libelf"
   help
     Some Linux kernel configuration options (such as
     CONFIG_UNWINDER_ORC) require building a host program that
     needs libelf. Enabling this option will ensure host-elfutils
     (which provides libelf) gets built before the Linux kernel.
 
     Enable this option if you get a Linux kernel build failure
     such as "Cannot generate ORC metadata for
     CONFIG_UNWINDER_ORC=y, please install libelf-dev,
     libelf-devel or elfutils-libelf-devel".
 
# Linux extensions
source "linux/Config.ext.in"
 
endif # BR2_LINUX_KERNEL
 
# Linux tools
source "package/linux-tools/Config.in"
 
endmenu