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