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