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