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 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 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 159Mkinitrd 160-------- 161 162These changes to the ``/lib/modules`` file tree layout also require that 163mkinitrd be upgraded. 164 165E2fsprogs 166--------- 167 168The latest version of ``e2fsprogs`` fixes several bugs in fsck and 169debugfs. Obviously, it's a good idea to upgrade. 170 171JFSutils 172-------- 173 174The ``jfsutils`` package contains the utilities for the file system. 175The following utilities are available: 176 177- ``fsck.jfs`` - initiate replay of the transaction log, and check 178 and repair a JFS formatted partition. 179 180- ``mkfs.jfs`` - create a JFS formatted partition. 181 182- other file system utilities are also available in this package. 183 184Reiserfsprogs 185------------- 186 187The reiserfsprogs package should be used for reiserfs-3.6.x 188(Linux kernels 2.4.x). It is a combined package and contains working 189versions of ``mkreiserfs``, ``resize_reiserfs``, ``debugreiserfs`` and 190``reiserfsck``. These utils work on both i386 and alpha platforms. 191 192Xfsprogs 193-------- 194 195The latest version of ``xfsprogs`` contains ``mkfs.xfs``, ``xfs_db``, and the 196``xfs_repair`` utilities, among others, for the XFS filesystem. It is 197architecture independent and any version from 2.0.0 onward should 198work correctly with this version of the XFS kernel code (2.6.0 or 199later is recommended, due to some significant improvements). 200 201PCMCIAutils 202----------- 203 204PCMCIAutils replaces ``pcmcia-cs``. It properly sets up 205PCMCIA sockets at system startup and loads the appropriate modules 206for 16-bit PCMCIA devices if the kernel is modularized and the hotplug 207subsystem is used. 208 209Quota-tools 210----------- 211 212Support for 32 bit uid's and gid's is required if you want to use 213the newer version 2 quota format. Quota-tools version 3.07 and 214newer has this support. Use the recommended version or newer 215from the table above. 216 217Intel IA32 microcode 218-------------------- 219 220A driver has been added to allow updating of Intel IA32 microcode, 221accessible as a normal (misc) character device. If you are not using 222udev you may need to:: 223 224 mkdir /dev/cpu 225 mknod /dev/cpu/microcode c 10 184 226 chmod 0644 /dev/cpu/microcode 227 228as root before you can use this. You'll probably also want to 229get the user-space microcode_ctl utility to use with this. 230 231udev 232---- 233 234``udev`` is a userspace application for populating ``/dev`` dynamically with 235only entries for devices actually present. ``udev`` replaces the basic 236functionality of devfs, while allowing persistent device naming for 237devices. 238 239FUSE 240---- 241 242Needs libfuse 2.4.0 or later. Absolute minimum is 2.3.0 but mount 243options ``direct_io`` and ``kernel_cache`` won't work. 244 245Networking 246********** 247 248General changes 249--------------- 250 251If you have advanced network configuration needs, you should probably 252consider using the network tools from ip-route2. 253 254Packet Filter / NAT 255------------------- 256The packet filtering and NAT code uses the same tools like the previous 2.4.x 257kernel series (iptables). It still includes backwards-compatibility modules 258for 2.2.x-style ipchains and 2.0.x-style ipfwadm. 259 260PPP 261--- 262 263The PPP driver has been restructured to support multilink and to 264enable it to operate over diverse media layers. If you use PPP, 265upgrade pppd to at least 2.4.0. 266 267If you are not using udev, you must have the device file /dev/ppp 268which can be made by:: 269 270 mknod /dev/ppp c 108 0 271 272as root. 273 274Isdn4k-utils 275------------ 276 277Due to changes in the length of the phone number field, isdn4k-utils 278needs to be recompiled or (preferably) upgraded. 279 280NFS-utils 281--------- 282 283In ancient (2.4 and earlier) kernels, the nfs server needed to know 284about any client that expected to be able to access files via NFS. This 285information would be given to the kernel by ``mountd`` when the client 286mounted the filesystem, or by ``exportfs`` at system startup. exportfs 287would take information about active clients from ``/var/lib/nfs/rmtab``. 288 289This approach is quite fragile as it depends on rmtab being correct 290which is not always easy, particularly when trying to implement 291fail-over. Even when the system is working well, ``rmtab`` suffers from 292getting lots of old entries that never get removed. 293 294With modern kernels we have the option of having the kernel tell mountd 295when it gets a request from an unknown host, and mountd can give 296appropriate export information to the kernel. This removes the 297dependency on ``rmtab`` and means that the kernel only needs to know about 298currently active clients. 299 300To enable this new functionality, you need to:: 301 302 mount -t nfsd nfsd /proc/fs/nfsd 303 304before running exportfs or mountd. It is recommended that all NFS 305services be protected from the internet-at-large by a firewall where 306that is possible. 307 308mcelog 309------ 310 311On x86 kernels the mcelog utility is needed to process and log machine check 312events when ``CONFIG_X86_MCE`` is enabled. Machine check events are errors 313reported by the CPU. Processing them is strongly encouraged. 314 315Kernel documentation 316******************** 317 318Sphinx 319------ 320 321Please see :ref:`sphinx_install` in ``Documentation/doc-guide/sphinx.rst`` 322for details about Sphinx requirements. 323 324Getting updated software 325======================== 326 327Kernel compilation 328****************** 329 330gcc 331--- 332 333- <ftp://ftp.gnu.org/gnu/gcc/> 334 335Make 336---- 337 338- <ftp://ftp.gnu.org/gnu/make/> 339 340Binutils 341-------- 342 343- <https://www.kernel.org/pub/linux/devel/binutils/> 344 345Flex 346---- 347 348- <https://github.com/westes/flex/releases> 349 350Bison 351----- 352 353- <ftp://ftp.gnu.org/gnu/bison/> 354 355OpenSSL 356------- 357 358- <https://www.openssl.org/> 359 360System utilities 361**************** 362 363Util-linux 364---------- 365 366- <https://www.kernel.org/pub/linux/utils/util-linux/> 367 368Kmod 369---- 370 371- <https://www.kernel.org/pub/linux/utils/kernel/kmod/> 372- <https://git.kernel.org/pub/scm/utils/kernel/kmod/kmod.git> 373 374Ksymoops 375-------- 376 377- <https://www.kernel.org/pub/linux/utils/kernel/ksymoops/v2.4/> 378 379Mkinitrd 380-------- 381 382- <https://code.launchpad.net/initrd-tools/main> 383 384E2fsprogs 385--------- 386 387- <http://prdownloads.sourceforge.net/e2fsprogs/e2fsprogs-1.29.tar.gz> 388 389JFSutils 390-------- 391 392- <http://jfs.sourceforge.net/> 393 394Reiserfsprogs 395------------- 396 397- <http://www.kernel.org/pub/linux/utils/fs/reiserfs/> 398 399Xfsprogs 400-------- 401 402- <ftp://oss.sgi.com/projects/xfs/> 403 404Pcmciautils 405----------- 406 407- <https://www.kernel.org/pub/linux/utils/kernel/pcmcia/> 408 409Quota-tools 410----------- 411 412- <http://sourceforge.net/projects/linuxquota/> 413 414 415Intel P6 microcode 416------------------ 417 418- <https://downloadcenter.intel.com/> 419 420udev 421---- 422 423- <http://www.freedesktop.org/software/systemd/man/udev.html> 424 425FUSE 426---- 427 428- <https://github.com/libfuse/libfuse/releases> 429 430mcelog 431------ 432 433- <http://www.mcelog.org/> 434 435Networking 436********** 437 438PPP 439--- 440 441- <ftp://ftp.samba.org/pub/ppp/> 442 443Isdn4k-utils 444------------ 445 446- <ftp://ftp.isdn4linux.de/pub/isdn4linux/utils/> 447 448NFS-utils 449--------- 450 451- <http://sourceforge.net/project/showfiles.php?group_id=14> 452 453Iptables 454-------- 455 456- <http://www.iptables.org/downloads.html> 457 458Ip-route2 459--------- 460 461- <https://www.kernel.org/pub/linux/utils/net/iproute2/> 462 463OProfile 464-------- 465 466- <http://oprofile.sf.net/download/> 467 468NFS-Utils 469--------- 470 471- <http://nfs.sourceforge.net/> 472 473Kernel documentation 474******************** 475 476Sphinx 477------ 478 479- <http://www.sphinx-doc.org/> 480