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