1.. _changes: 2 3Minimal requirements to compile the Kernel 4++++++++++++++++++++++++++++++++++++++++++ 5 6Intro 7===== 8 9This document is designed to provide a list of the minimum levels of 10software necessary to run the 4.x kernels. 11 12This document is originally based on my "Changes" file for 2.0.x kernels 13and therefore owes credit to the same people as that file (Jared Mauch, 14Axel Boldt, Alessandro Sigala, and countless other users all over the 15'net). 16 17Current Minimal Requirements 18**************************** 19 20Upgrade to at **least** these software revisions before thinking you've 21encountered a bug! If you're unsure what version you're currently 22running, the suggested command should tell you. 23 24Again, keep in mind that this list assumes you are already functionally 25running a Linux kernel. Also, not all tools are necessary on all 26systems; obviously, if you don't have any ISDN hardware, for example, 27you probably needn't concern yourself with isdn4k-utils. 28 29====================== =============== ======================================== 30 Program Minimal version Command to check the version 31====================== =============== ======================================== 32GNU C 3.2 gcc --version 33GNU make 3.81 make --version 34binutils 2.20 ld -v 35flex 2.5.35 flex --version 36bison 2.0 bison --version 37util-linux 2.10o fdformat --version 38module-init-tools 0.9.10 depmod -V 39e2fsprogs 1.41.4 e2fsck -V 40jfsutils 1.1.3 fsck.jfs -V 41reiserfsprogs 3.6.3 reiserfsck -V 42xfsprogs 2.6.0 xfs_db -V 43squashfs-tools 4.0 mksquashfs -version 44btrfs-progs 0.18 btrfsck 45pcmciautils 004 pccardctl -V 46quota-tools 3.09 quota -V 47PPP 2.4.0 pppd --version 48isdn4k-utils 3.1pre1 isdnctrl 2>&1|grep version 49nfs-utils 1.0.5 showmount --version 50procps 3.2.0 ps --version 51oprofile 0.9 oprofiled --version 52udev 081 udevd --version 53grub 0.93 grub --version || grub-install --version 54mcelog 0.6 mcelog --version 55iptables 1.4.2 iptables -V 56openssl & libcrypto 1.0.0 openssl version 57bc 1.06.95 bc --version 58Sphinx\ [#f1]_ 1.3 sphinx-build --version 59====================== =============== ======================================== 60 61.. [#f1] Sphinx is needed only to build the Kernel documentation 62 63Kernel compilation 64****************** 65 66GCC 67--- 68 69The gcc version requirements may vary depending on the type of CPU in your 70computer. 71 72Make 73---- 74 75You will need GNU make 3.81 or later to build the kernel. 76 77Binutils 78-------- 79 80The build system has, as of 4.13, switched to using thin archives (`ar T`) 81rather than incremental linking (`ld -r`) for built-in.o intermediate steps. 82This requires binutils 2.20 or newer. 83 84Flex 85---- 86 87Since Linux 4.16, the build system generates lexical analyzers 88during build. This requires flex 2.5.35 or later. 89 90 91Bison 92----- 93 94Since Linux 4.16, the build system generates parsers 95during build. This requires bison 2.0 or later. 96 97Perl 98---- 99 100You will need perl 5 and the following modules: ``Getopt::Long``, 101``Getopt::Std``, ``File::Basename``, and ``File::Find`` to build the kernel. 102 103BC 104-- 105 106You will need bc to build kernels 3.10 and higher 107 108 109OpenSSL 110------- 111 112Module signing and external certificate handling use the OpenSSL program and 113crypto library to do key creation and signature generation. 114 115You will need openssl to build kernels 3.7 and higher if module signing is 116enabled. You will also need openssl development packages to build kernels 4.3 117and higher. 118 119 120System utilities 121**************** 122 123Architectural changes 124--------------------- 125 126DevFS has been obsoleted in favour of udev 127(http://www.kernel.org/pub/linux/utils/kernel/hotplug/) 128 12932-bit UID support is now in place. Have fun! 130 131Linux documentation for functions is transitioning to inline 132documentation via specially-formatted comments near their 133definitions in the source. These comments can be combined with ReST 134files the Documentation/ directory to make enriched documentation, which can 135then be converted to PostScript, HTML, LaTex, ePUB and PDF files. 136In order to convert from ReST format to a format of your choice, you'll need 137Sphinx. 138 139Util-linux 140---------- 141 142New versions of util-linux provide ``fdisk`` support for larger disks, 143support new options to mount, recognize more supported partition 144types, have a fdformat which works with 2.4 kernels, and similar goodies. 145You'll probably want to upgrade. 146 147Ksymoops 148-------- 149 150If the unthinkable happens and your kernel oopses, you may need the 151ksymoops tool to decode it, but in most cases you don't. 152It is generally preferred to build the kernel with ``CONFIG_KALLSYMS`` so 153that it produces readable dumps that can be used as-is (this also 154produces better output than ksymoops). If for some reason your kernel 155is not build with ``CONFIG_KALLSYMS`` and you have no way to rebuild and 156reproduce the Oops with that option, then you can still decode that Oops 157with ksymoops. 158 159Module-Init-Tools 160----------------- 161 162A new module loader is now in the kernel that requires ``module-init-tools`` 163to use. It is backward compatible with the 2.4.x series kernels. 164 165Mkinitrd 166-------- 167 168These changes to the ``/lib/modules`` file tree layout also require that 169mkinitrd be upgraded. 170 171E2fsprogs 172--------- 173 174The latest version of ``e2fsprogs`` fixes several bugs in fsck and 175debugfs. Obviously, it's a good idea to upgrade. 176 177JFSutils 178-------- 179 180The ``jfsutils`` package contains the utilities for the file system. 181The following utilities are available: 182 183- ``fsck.jfs`` - initiate replay of the transaction log, and check 184 and repair a JFS formatted partition. 185 186- ``mkfs.jfs`` - create a JFS formatted partition. 187 188- other file system utilities are also available in this package. 189 190Reiserfsprogs 191------------- 192 193The reiserfsprogs package should be used for reiserfs-3.6.x 194(Linux kernels 2.4.x). It is a combined package and contains working 195versions of ``mkreiserfs``, ``resize_reiserfs``, ``debugreiserfs`` and 196``reiserfsck``. These utils work on both i386 and alpha platforms. 197 198Xfsprogs 199-------- 200 201The latest version of ``xfsprogs`` contains ``mkfs.xfs``, ``xfs_db``, and the 202``xfs_repair`` utilities, among others, for the XFS filesystem. It is 203architecture independent and any version from 2.0.0 onward should 204work correctly with this version of the XFS kernel code (2.6.0 or 205later is recommended, due to some significant improvements). 206 207PCMCIAutils 208----------- 209 210PCMCIAutils replaces ``pcmcia-cs``. It properly sets up 211PCMCIA sockets at system startup and loads the appropriate modules 212for 16-bit PCMCIA devices if the kernel is modularized and the hotplug 213subsystem is used. 214 215Quota-tools 216----------- 217 218Support for 32 bit uid's and gid's is required if you want to use 219the newer version 2 quota format. Quota-tools version 3.07 and 220newer has this support. Use the recommended version or newer 221from the table above. 222 223Intel IA32 microcode 224-------------------- 225 226A driver has been added to allow updating of Intel IA32 microcode, 227accessible as a normal (misc) character device. If you are not using 228udev you may need to:: 229 230 mkdir /dev/cpu 231 mknod /dev/cpu/microcode c 10 184 232 chmod 0644 /dev/cpu/microcode 233 234as root before you can use this. You'll probably also want to 235get the user-space microcode_ctl utility to use with this. 236 237udev 238---- 239 240``udev`` is a userspace application for populating ``/dev`` dynamically with 241only entries for devices actually present. ``udev`` replaces the basic 242functionality of devfs, while allowing persistent device naming for 243devices. 244 245FUSE 246---- 247 248Needs libfuse 2.4.0 or later. Absolute minimum is 2.3.0 but mount 249options ``direct_io`` and ``kernel_cache`` won't work. 250 251Networking 252********** 253 254General changes 255--------------- 256 257If you have advanced network configuration needs, you should probably 258consider using the network tools from ip-route2. 259 260Packet Filter / NAT 261------------------- 262The packet filtering and NAT code uses the same tools like the previous 2.4.x 263kernel series (iptables). It still includes backwards-compatibility modules 264for 2.2.x-style ipchains and 2.0.x-style ipfwadm. 265 266PPP 267--- 268 269The PPP driver has been restructured to support multilink and to 270enable it to operate over diverse media layers. If you use PPP, 271upgrade pppd to at least 2.4.0. 272 273If you are not using udev, you must have the device file /dev/ppp 274which can be made by:: 275 276 mknod /dev/ppp c 108 0 277 278as root. 279 280Isdn4k-utils 281------------ 282 283Due to changes in the length of the phone number field, isdn4k-utils 284needs to be recompiled or (preferably) upgraded. 285 286NFS-utils 287--------- 288 289In ancient (2.4 and earlier) kernels, the nfs server needed to know 290about any client that expected to be able to access files via NFS. This 291information would be given to the kernel by ``mountd`` when the client 292mounted the filesystem, or by ``exportfs`` at system startup. exportfs 293would take information about active clients from ``/var/lib/nfs/rmtab``. 294 295This approach is quite fragile as it depends on rmtab being correct 296which is not always easy, particularly when trying to implement 297fail-over. Even when the system is working well, ``rmtab`` suffers from 298getting lots of old entries that never get removed. 299 300With modern kernels we have the option of having the kernel tell mountd 301when it gets a request from an unknown host, and mountd can give 302appropriate export information to the kernel. This removes the 303dependency on ``rmtab`` and means that the kernel only needs to know about 304currently active clients. 305 306To enable this new functionality, you need to:: 307 308 mount -t nfsd nfsd /proc/fs/nfsd 309 310before running exportfs or mountd. It is recommended that all NFS 311services be protected from the internet-at-large by a firewall where 312that is possible. 313 314mcelog 315------ 316 317On x86 kernels the mcelog utility is needed to process and log machine check 318events when ``CONFIG_X86_MCE`` is enabled. Machine check events are errors 319reported by the CPU. Processing them is strongly encouraged. 320 321Kernel documentation 322******************** 323 324Sphinx 325------ 326 327Please see :ref:`sphinx_install` in ``Documentation/doc-guide/sphinx.rst`` 328for details about Sphinx requirements. 329 330Getting updated software 331======================== 332 333Kernel compilation 334****************** 335 336gcc 337--- 338 339- <ftp://ftp.gnu.org/gnu/gcc/> 340 341Make 342---- 343 344- <ftp://ftp.gnu.org/gnu/make/> 345 346Binutils 347-------- 348 349- <https://www.kernel.org/pub/linux/devel/binutils/> 350 351Flex 352---- 353 354- <https://github.com/westes/flex/releases> 355 356Bison 357----- 358 359- <ftp://ftp.gnu.org/gnu/bison/> 360 361OpenSSL 362------- 363 364- <https://www.openssl.org/> 365 366System utilities 367**************** 368 369Util-linux 370---------- 371 372- <https://www.kernel.org/pub/linux/utils/util-linux/> 373 374Ksymoops 375-------- 376 377- <https://www.kernel.org/pub/linux/utils/kernel/ksymoops/v2.4/> 378 379Module-Init-Tools 380----------------- 381 382- <https://www.kernel.org/pub/linux/utils/kernel/module-init-tools/> 383 384Mkinitrd 385-------- 386 387- <https://code.launchpad.net/initrd-tools/main> 388 389E2fsprogs 390--------- 391 392- <http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.29.tar.gz> 393 394JFSutils 395-------- 396 397- <http://jfs.sourceforge.net/> 398 399Reiserfsprogs 400------------- 401 402- <http://www.kernel.org/pub/linux/utils/fs/reiserfs/> 403 404Xfsprogs 405-------- 406 407- <ftp://oss.sgi.com/projects/xfs/> 408 409Pcmciautils 410----------- 411 412- <https://www.kernel.org/pub/linux/utils/kernel/pcmcia/> 413 414Quota-tools 415----------- 416 417- <http://sourceforge.net/projects/linuxquota/> 418 419 420Intel P6 microcode 421------------------ 422 423- <https://downloadcenter.intel.com/> 424 425udev 426---- 427 428- <http://www.freedesktop.org/software/systemd/man/udev.html> 429 430FUSE 431---- 432 433- <http://sourceforge.net/projects/fuse> 434 435mcelog 436------ 437 438- <http://www.mcelog.org/> 439 440Networking 441********** 442 443PPP 444--- 445 446- <ftp://ftp.samba.org/pub/ppp/> 447 448Isdn4k-utils 449------------ 450 451- <ftp://ftp.isdn4linux.de/pub/isdn4linux/utils/> 452 453NFS-utils 454--------- 455 456- <http://sourceforge.net/project/showfiles.php?group_id=14> 457 458Iptables 459-------- 460 461- <http://www.iptables.org/downloads.html> 462 463Ip-route2 464--------- 465 466- <https://www.kernel.org/pub/linux/utils/net/iproute2/> 467 468OProfile 469-------- 470 471- <http://oprofile.sf.net/download/> 472 473NFS-Utils 474--------- 475 476- <http://nfs.sourceforge.net/> 477 478Kernel documentation 479******************** 480 481Sphinx 482------ 483 484- <http://www.sphinx-doc.org/> 485