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