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.21 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 80Binutils 2.21 or newer is needed to build the kernel. 81 82pkg-config 83---------- 84 85The build system, as of 4.18, requires pkg-config to check for installed 86kconfig tools and to determine flags settings for use in 87'make {g,x}config'. Previously pkg-config was being used but not 88verified or documented. 89 90Flex 91---- 92 93Since Linux 4.16, the build system generates lexical analyzers 94during build. This requires flex 2.5.35 or later. 95 96 97Bison 98----- 99 100Since Linux 4.16, the build system generates parsers 101during build. This requires bison 2.0 or later. 102 103Perl 104---- 105 106You will need perl 5 and the following modules: ``Getopt::Long``, 107``Getopt::Std``, ``File::Basename``, and ``File::Find`` to build the kernel. 108 109BC 110-- 111 112You will need bc to build kernels 3.10 and higher 113 114 115OpenSSL 116------- 117 118Module signing and external certificate handling use the OpenSSL program and 119crypto library to do key creation and signature generation. 120 121You will need openssl to build kernels 3.7 and higher if module signing is 122enabled. You will also need openssl development packages to build kernels 4.3 123and higher. 124 125 126System utilities 127**************** 128 129Architectural changes 130--------------------- 131 132DevFS has been obsoleted in favour of udev 133(http://www.kernel.org/pub/linux/utils/kernel/hotplug/) 134 13532-bit UID support is now in place. Have fun! 136 137Linux documentation for functions is transitioning to inline 138documentation via specially-formatted comments near their 139definitions in the source. These comments can be combined with ReST 140files the Documentation/ directory to make enriched documentation, which can 141then be converted to PostScript, HTML, LaTex, ePUB and PDF files. 142In order to convert from ReST format to a format of your choice, you'll need 143Sphinx. 144 145Util-linux 146---------- 147 148New versions of util-linux provide ``fdisk`` support for larger disks, 149support new options to mount, recognize more supported partition 150types, have a fdformat which works with 2.4 kernels, and similar goodies. 151You'll probably want to upgrade. 152 153Ksymoops 154-------- 155 156If the unthinkable happens and your kernel oopses, you may need the 157ksymoops tool to decode it, but in most cases you don't. 158It is generally preferred to build the kernel with ``CONFIG_KALLSYMS`` so 159that it produces readable dumps that can be used as-is (this also 160produces better output than ksymoops). If for some reason your kernel 161is not build with ``CONFIG_KALLSYMS`` and you have no way to rebuild and 162reproduce the Oops with that option, then you can still decode that Oops 163with ksymoops. 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 :ref:`Documentation/doc-guide/sphinx.rst <sphinxdoc>` 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 374Kmod 375---- 376 377- <https://www.kernel.org/pub/linux/utils/kernel/kmod/> 378- <https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git> 379 380Ksymoops 381-------- 382 383- <https://www.kernel.org/pub/linux/utils/kernel/ksymoops/v2.4/> 384 385Mkinitrd 386-------- 387 388- <https://code.launchpad.net/initrd-tools/main> 389 390E2fsprogs 391--------- 392 393- <http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.29.tar.gz> 394 395JFSutils 396-------- 397 398- <http://jfs.sourceforge.net/> 399 400Reiserfsprogs 401------------- 402 403- <http://www.kernel.org/pub/linux/utils/fs/reiserfs/> 404 405Xfsprogs 406-------- 407 408- <ftp://oss.sgi.com/projects/xfs/> 409 410Pcmciautils 411----------- 412 413- <https://www.kernel.org/pub/linux/utils/kernel/pcmcia/> 414 415Quota-tools 416----------- 417 418- <http://sourceforge.net/projects/linuxquota/> 419 420 421Intel P6 microcode 422------------------ 423 424- <https://downloadcenter.intel.com/> 425 426udev 427---- 428 429- <http://www.freedesktop.org/software/systemd/man/udev.html> 430 431FUSE 432---- 433 434- <https://github.com/libfuse/libfuse/releases> 435 436mcelog 437------ 438 439- <http://www.mcelog.org/> 440 441Networking 442********** 443 444PPP 445--- 446 447- <ftp://ftp.samba.org/pub/ppp/> 448 449Isdn4k-utils 450------------ 451 452- <ftp://ftp.isdn4linux.de/pub/isdn4linux/utils/> 453 454NFS-utils 455--------- 456 457- <http://sourceforge.net/project/showfiles.php?group_id=14> 458 459Iptables 460-------- 461 462- <http://www.iptables.org/downloads.html> 463 464Ip-route2 465--------- 466 467- <https://www.kernel.org/pub/linux/utils/net/iproute2/> 468 469OProfile 470-------- 471 472- <http://oprofile.sf.net/download/> 473 474NFS-Utils 475--------- 476 477- <http://nfs.sourceforge.net/> 478 479Kernel documentation 480******************** 481 482Sphinx 483------ 484 485- <http://www.sphinx-doc.org/> 486