1 .. _changes: 2 3 Minimal requirements to compile the Kernel 4 ++++++++++++++++++++++++++++++++++++++++++ 5 6 Intro 7 ===== 8 9 This document is designed to provide a list of 10 software necessary to run the current kernel v 11 12 This document is originally based on my "Chang 13 and therefore owes credit to the same people a 14 Axel Boldt, Alessandro Sigala, and countless o 15 'net). 16 17 Current Minimal Requirements 18 **************************** 19 20 Upgrade to at **least** these software revisio 21 encountered a bug! If you're unsure what vers 22 running, the suggested command should tell you 23 24 Again, keep in mind that this list assumes you 25 running a Linux kernel. Also, not all tools a 26 systems; obviously, if you don't have any PC C 27 you probably needn't concern yourself with pcm 28 29 ====================== =============== ====== 30 Program Minimal version C 31 ====================== =============== ====== 32 GNU C 5.1 gcc -- 33 Clang/LLVM (optional) 13.0.1 clang 34 Rust (optional) 1.78.0 rustc 35 bindgen (optional) 0.65.1 bindge 36 GNU make 4.0 make - 37 bash 4.2 bash - 38 binutils 2.25 ld -v 39 flex 2.5.35 flex - 40 bison 2.0 bison 41 pahole 1.16 pahole 42 util-linux 2.10o mount 43 kmod 13 depmod 44 e2fsprogs 1.41.4 e2fsck 45 jfsutils 1.1.3 fsck.j 46 reiserfsprogs 3.6.3 reiser 47 xfsprogs 2.6.0 xfs_db 48 squashfs-tools 4.0 mksqua 49 btrfs-progs 0.18 btrfsc 50 pcmciautils 004 pccard 51 quota-tools 3.09 quota 52 PPP 2.4.0 pppd - 53 nfs-utils 1.0.5 showmo 54 procps 3.2.0 ps --v 55 udev 081 udevd 56 grub 0.93 grub - 57 mcelog 0.6 mcelog 58 iptables 1.4.2 iptabl 59 openssl & libcrypto 1.0.0 openss 60 bc 1.06.95 bc --v 61 Sphinx\ [#f1]_ 2.4.4 sphinx 62 cpio any cpio - 63 GNU tar 1.28 tar -- 64 gtags (optional) 6.6.5 gtags 65 mkimage (optional) 2017.01 mkimag 66 Python (optional) 3.5.x python 67 ====================== =============== ====== 68 69 .. [#f1] Sphinx is needed only to build the Ke 70 71 Kernel compilation 72 ****************** 73 74 GCC 75 --- 76 77 The gcc version requirements may vary dependin 78 computer. 79 80 Clang/LLVM (optional) 81 --------------------- 82 83 The latest formal release of clang and LLVM ut 84 `releases.llvm.org <https://releases.llvm.org> 85 kernels. Older releases aren't guaranteed to w 86 from the kernel that were used to support olde 87 docs on :ref:`Building Linux with Clang/LLVM < 88 89 Rust (optional) 90 --------------- 91 92 A recent version of the Rust compiler is requi 93 94 Please see Documentation/rust/quick-start.rst 95 satisfy the build requirements of Rust support 96 target ``rustavailable`` is useful to check wh 97 be detected. 98 99 bindgen (optional) 100 ------------------ 101 102 ``bindgen`` is used to generate the Rust bindi 103 It depends on ``libclang``. 104 105 Make 106 ---- 107 108 You will need GNU make 4.0 or later to build t 109 110 Bash 111 ---- 112 113 Some bash scripts are used for the kernel buil 114 Bash 4.2 or newer is needed. 115 116 Binutils 117 -------- 118 119 Binutils 2.25 or newer is needed to build the 120 121 pkg-config 122 ---------- 123 124 The build system, as of 4.18, requires pkg-con 125 kconfig tools and to determine flags settings 126 'make {g,x}config'. Previously pkg-config was 127 verified or documented. 128 129 Flex 130 ---- 131 132 Since Linux 4.16, the build system generates l 133 during build. This requires flex 2.5.35 or la 134 135 136 Bison 137 ----- 138 139 Since Linux 4.16, the build system generates p 140 during build. This requires bison 2.0 or late 141 142 pahole 143 ------ 144 145 Since Linux 5.2, if CONFIG_DEBUG_INFO_BTF is s 146 generates BTF (BPF Type Format) from DWARF in 147 modules as well. This requires pahole v1.16 o 148 149 It is found in the 'dwarves' or 'pahole' distr 150 https://fedorapeople.org/~acme/dwarves/. 151 152 Perl 153 ---- 154 155 You will need perl 5 and the following modules 156 ``Getopt::Std``, ``File::Basename``, and ``Fil 157 158 BC 159 -- 160 161 You will need bc to build kernels 3.10 and hig 162 163 164 OpenSSL 165 ------- 166 167 Module signing and external certificate handli 168 crypto library to do key creation and signatur 169 170 You will need openssl to build kernels 3.7 and 171 enabled. You will also need openssl developme 172 and higher. 173 174 Tar 175 --- 176 177 GNU tar is needed if you want to enable access 178 (CONFIG_IKHEADERS). 179 180 gtags / GNU GLOBAL (optional) 181 ----------------------------- 182 183 The kernel build requires GNU GLOBAL version 6 184 tag files through ``make gtags``. This is due 185 ``-C (--directory)`` flag. 186 187 mkimage 188 ------- 189 190 This tool is used when building a Flat Image T 191 platforms. The tool is available via the ``u-b 192 built from the U-Boot source code. See the ins 193 https://docs.u-boot.org/en/latest/build/tools. 194 195 System utilities 196 **************** 197 198 Architectural changes 199 --------------------- 200 201 DevFS has been obsoleted in favour of udev 202 (https://www.kernel.org/pub/linux/utils/kernel 203 204 32-bit UID support is now in place. Have fun! 205 206 Linux documentation for functions is transitio 207 documentation via specially-formatted comments 208 definitions in the source. These comments can 209 files the Documentation/ directory to make enr 210 then be converted to PostScript, HTML, LaTex, 211 In order to convert from ReST format to a form 212 Sphinx. 213 214 Util-linux 215 ---------- 216 217 New versions of util-linux provide ``fdisk`` s 218 support new options to mount, recognize more s 219 types, and similar goodies. 220 You'll probably want to upgrade. 221 222 Ksymoops 223 -------- 224 225 If the unthinkable happens and your kernel oop 226 ksymoops tool to decode it, but in most cases 227 It is generally preferred to build the kernel 228 that it produces readable dumps that can be us 229 produces better output than ksymoops). If for 230 is not build with ``CONFIG_KALLSYMS`` and you 231 reproduce the Oops with that option, then you 232 with ksymoops. 233 234 Mkinitrd 235 -------- 236 237 These changes to the ``/lib/modules`` file tre 238 mkinitrd be upgraded. 239 240 E2fsprogs 241 --------- 242 243 The latest version of ``e2fsprogs`` fixes seve 244 debugfs. Obviously, it's a good idea to upgra 245 246 JFSutils 247 -------- 248 249 The ``jfsutils`` package contains the utilitie 250 The following utilities are available: 251 252 - ``fsck.jfs`` - initiate replay of the transa 253 and repair a JFS formatted partition. 254 255 - ``mkfs.jfs`` - create a JFS formatted partit 256 257 - other file system utilities are also availab 258 259 Reiserfsprogs 260 ------------- 261 262 The reiserfsprogs package should be used for r 263 (Linux kernels 2.4.x). It is a combined packag 264 versions of ``mkreiserfs``, ``resize_reiserfs` 265 ``reiserfsck``. These utils work on both i386 266 267 Xfsprogs 268 -------- 269 270 The latest version of ``xfsprogs`` contains `` 271 ``xfs_repair`` utilities, among others, for th 272 architecture independent and any version from 273 work correctly with this version of the XFS ke 274 later is recommended, due to some significant 275 276 PCMCIAutils 277 ----------- 278 279 PCMCIAutils replaces ``pcmcia-cs``. It properl 280 PCMCIA sockets at system startup and loads the 281 for 16-bit PCMCIA devices if the kernel is mod 282 subsystem is used. 283 284 Quota-tools 285 ----------- 286 287 Support for 32 bit uid's and gid's is required 288 the newer version 2 quota format. Quota-tools 289 newer has this support. Use the recommended v 290 from the table above. 291 292 Intel IA32 microcode 293 -------------------- 294 295 A driver has been added to allow updating of I 296 accessible as a normal (misc) character device 297 udev you may need to:: 298 299 mkdir /dev/cpu 300 mknod /dev/cpu/microcode c 10 184 301 chmod 0644 /dev/cpu/microcode 302 303 as root before you can use this. You'll proba 304 get the user-space microcode_ctl utility to us 305 306 udev 307 ---- 308 309 ``udev`` is a userspace application for popula 310 only entries for devices actually present. ``u 311 functionality of devfs, while allowing persist 312 devices. 313 314 FUSE 315 ---- 316 317 Needs libfuse 2.4.0 or later. Absolute minimu 318 options ``direct_io`` and ``kernel_cache`` won 319 320 Networking 321 ********** 322 323 General changes 324 --------------- 325 326 If you have advanced network configuration nee 327 consider using the network tools from ip-route 328 329 Packet Filter / NAT 330 ------------------- 331 The packet filtering and NAT code uses the sam 332 kernel series (iptables). It still includes b 333 for 2.2.x-style ipchains and 2.0.x-style ipfwa 334 335 PPP 336 --- 337 338 The PPP driver has been restructured to suppor 339 enable it to operate over diverse media layers 340 upgrade pppd to at least 2.4.0. 341 342 If you are not using udev, you must have the d 343 which can be made by:: 344 345 mknod /dev/ppp c 108 0 346 347 as root. 348 349 NFS-utils 350 --------- 351 352 In ancient (2.4 and earlier) kernels, the nfs 353 about any client that expected to be able to a 354 information would be given to the kernel by `` 355 mounted the filesystem, or by ``exportfs`` at 356 would take information about active clients fr 357 358 This approach is quite fragile as it depends o 359 which is not always easy, particularly when tr 360 fail-over. Even when the system is working we 361 getting lots of old entries that never get rem 362 363 With modern kernels we have the option of havi 364 when it gets a request from an unknown host, a 365 appropriate export information to the kernel. 366 dependency on ``rmtab`` and means that the ker 367 currently active clients. 368 369 To enable this new functionality, you need to: 370 371 mount -t nfsd nfsd /proc/fs/nfsd 372 373 before running exportfs or mountd. It is reco 374 services be protected from the internet-at-lar 375 that is possible. 376 377 mcelog 378 ------ 379 380 On x86 kernels the mcelog utility is needed to 381 events when ``CONFIG_X86_MCE`` is enabled. Mac 382 reported by the CPU. Processing them is strong 383 384 Kernel documentation 385 ******************** 386 387 Sphinx 388 ------ 389 390 Please see :ref:`sphinx_install` in :ref:`Docu 391 for details about Sphinx requirements. 392 393 rustdoc 394 ------- 395 396 ``rustdoc`` is used to generate the documentat 397 Documentation/rust/general-information.rst for 398 399 Getting updated software 400 ======================== 401 402 Kernel compilation 403 ****************** 404 405 gcc 406 --- 407 408 - <ftp://ftp.gnu.org/gnu/gcc/> 409 410 Clang/LLVM 411 ---------- 412 413 - :ref:`Getting LLVM <getting_llvm>`. 414 415 Rust 416 ---- 417 418 - Documentation/rust/quick-start.rst. 419 420 bindgen 421 ------- 422 423 - Documentation/rust/quick-start.rst. 424 425 Make 426 ---- 427 428 - <ftp://ftp.gnu.org/gnu/make/> 429 430 Bash 431 ---- 432 433 - <ftp://ftp.gnu.org/gnu/bash/> 434 435 Binutils 436 -------- 437 438 - <https://www.kernel.org/pub/linux/devel/binu 439 440 Flex 441 ---- 442 443 - <https://github.com/westes/flex/releases> 444 445 Bison 446 ----- 447 448 - <ftp://ftp.gnu.org/gnu/bison/> 449 450 OpenSSL 451 ------- 452 453 - <https://www.openssl.org/> 454 455 System utilities 456 **************** 457 458 Util-linux 459 ---------- 460 461 - <https://www.kernel.org/pub/linux/utils/util 462 463 Kmod 464 ---- 465 466 - <https://www.kernel.org/pub/linux/utils/kern 467 - <https://git.kernel.org/pub/scm/utils/kernel 468 469 Ksymoops 470 -------- 471 472 - <https://www.kernel.org/pub/linux/utils/kern 473 474 Mkinitrd 475 -------- 476 477 - <https://code.launchpad.net/initrd-tools/mai 478 479 E2fsprogs 480 --------- 481 482 - <https://www.kernel.org/pub/linux/kernel/peo 483 - <https://git.kernel.org/pub/scm/fs/ext2/e2fs 484 485 JFSutils 486 -------- 487 488 - <https://jfs.sourceforge.net/> 489 490 Reiserfsprogs 491 ------------- 492 493 - <https://git.kernel.org/pub/scm/linux/kernel 494 495 Xfsprogs 496 -------- 497 498 - <https://git.kernel.org/pub/scm/fs/xfs/xfspr 499 - <https://www.kernel.org/pub/linux/utils/fs/x 500 501 Pcmciautils 502 ----------- 503 504 - <https://www.kernel.org/pub/linux/utils/kern 505 506 Quota-tools 507 ----------- 508 509 - <https://sourceforge.net/projects/linuxquota 510 511 512 Intel P6 microcode 513 ------------------ 514 515 - <https://downloadcenter.intel.com/> 516 517 udev 518 ---- 519 520 - <https://www.freedesktop.org/software/system 521 522 FUSE 523 ---- 524 525 - <https://github.com/libfuse/libfuse/releases 526 527 mcelog 528 ------ 529 530 - <https://www.mcelog.org/> 531 532 cpio 533 ---- 534 535 - <https://www.gnu.org/software/cpio/> 536 537 Networking 538 ********** 539 540 PPP 541 --- 542 543 - <https://download.samba.org/pub/ppp/> 544 - <https://git.ozlabs.org/?p=ppp.git> 545 - <https://github.com/paulusmack/ppp/> 546 547 NFS-utils 548 --------- 549 550 - <https://sourceforge.net/project/showfiles.p 551 - <https://nfs.sourceforge.net/> 552 553 Iptables 554 -------- 555 556 - <https://netfilter.org/projects/iptables/ind 557 558 Ip-route2 559 --------- 560 561 - <https://www.kernel.org/pub/linux/utils/net/ 562 563 OProfile 564 -------- 565 566 - <https://oprofile.sf.net/download/> 567 568 Kernel documentation 569 ******************** 570 571 Sphinx 572 ------ 573 574 - <https://www.sphinx-doc.org/>
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.